Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit b51477b

Browse files
authored
Merge pull request #326 from yeongleej/main
[24주차] 이지영
2 parents b2b22f1 + efac2f5 commit b51477b

File tree

5 files changed

+278
-0
lines changed

5 files changed

+278
-0
lines changed

‎BOJ/1000-5000번/JY_2629.java

Lines changed: 97 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,97 @@
1+
import java.io.*;
2+
import java.util.*;
3+
public class JY_2629 {
4+
5+
public static void main(String[] args) throws IOException {
6+
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
7+
StringTokenizer st = new StringTokenizer(br.readLine());
8+
StringBuilder sb = new StringBuilder();
9+
10+
int N = Integer.parseInt(st.nextToken());
11+
int[] wrr = new int[N+1];
12+
st = new StringTokenizer(br.readLine());
13+
for(int i=1; i<N+1; i++) {
14+
wrr[i] = Integer.parseInt(st.nextToken());
15+
}
16+
17+
st = new StringTokenizer(br.readLine());
18+
int C = Integer.parseInt(st.nextToken());
19+
int[] coins = new int[C+1];
20+
st = new StringTokenizer(br.readLine());
21+
for(int i=1; i<C+1; i++) {
22+
coins[i] = Integer.parseInt(st.nextToken());
23+
}
24+
25+
// 만들 수 있는 최대 구슬의 무게 == (가장큰추의무게 * 추의 개수)
26+
int maxW = wrr[N] * N;
27+
28+
29+
// case2) 1차원
30+
int[] dp = new int[maxW+1];
31+
dp[0] = 1;
32+
33+
for(int i=1; i<N+1; i++) {
34+
for(int j=maxW; j>=wrr[i]; j--) {
35+
dp[j] = dp[j] + dp[j-wrr[i]];
36+
}
37+
}
38+
39+
for(int i=1; i<C+1; i++) {
40+
int c = coins[i];
41+
// 구슬이 최소 추의 무게보다 작다면 X
42+
if(c < wrr[0]) {
43+
sb.append("N ");
44+
continue;
45+
}
46+
// 구슬이 만들 수 있는 최대 무게보다 크다면 X
47+
if(c > maxW) {
48+
sb.append("N ");
49+
continue;
50+
}
51+
52+
// 구슬 --- 추(n개)
53+
if(dp[c] != 0) {
54+
sb.append("Y ");
55+
}
56+
// 구슬+추(n개) --- 추(m개)
57+
else {
58+
boolean isOk = false;
59+
// 가지고 있는 추 n개로 만들수 있는 무게에 구슬을 더한 값이
60+
// 또 다른 추 m개로 만들 수 있는 무게값과 같은 것이 있는지 체크
61+
for(int j=1; j<maxW+1; j++) {
62+
if(j + c > maxW) break;
63+
if(dp[j] != 0 && dp[j+c] != 0) {
64+
sb.append("Y ");
65+
isOk = true;
66+
break;
67+
}
68+
}
69+
if(!isOk) sb.append("N ");
70+
}
71+
}
72+
73+
System.out.println(sb.toString());
74+
75+
// case1) 2차원
76+
// int[][] dp = new int[N+1][maxW+1];
77+
// for(int i=0; i<N+1; i++) {
78+
// dp[i][0] = 1;
79+
// }
80+
//
81+
//
82+
// for(int i=1; i<N+1; i++) {
83+
// for(int j=1; j<maxW+1; j++) {
84+
// if(wrr[i] > j) dp[i][j] = dp[i-1][j];
85+
// else {
86+
// dp[i][j] = dp[i-1][j] + dp[i-1][j-wrr[i]];
87+
// }
88+
// }
89+
// }
90+
//
91+
// for(int i=1; i<N+1; i++) {
92+
// System.out.println(Arrays.toString(dp[i]));
93+
// }
94+
95+
}
96+
97+
}

‎BOJ/20001-25000번/JY_21758.java

Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,60 @@
1+
import java.io.*;
2+
import java.util.*;
3+
public class JY_21758 {
4+
5+
public static void main(String[] args) throws IOException {
6+
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
7+
StringTokenizer st = new StringTokenizer(br.readLine());
8+
9+
int N = Integer.parseInt(st.nextToken());
10+
int[] arr = new int[N];
11+
st = new StringTokenizer(br.readLine());
12+
for(int i=0; i<N; i++) {
13+
arr[i] = Integer.parseInt(st.nextToken());
14+
}
15+
16+
// 왼쪽부터 누적합
17+
int[] preL = new int[N];
18+
preL[0] = arr[0];
19+
for(int i=1; i<N; i++) {
20+
preL[i] += (preL[i-1]+arr[i]);
21+
}
22+
23+
// 배열 뒤집기
24+
int[] reArr = new int[N];
25+
for(int i=N-1, j=0; i>=0; i--, j++) reArr[j] = arr[i];
26+
27+
// 오른쪽부터 누적합
28+
int[] preR = new int[N];
29+
preR[0] = reArr[0];
30+
for(int i=1; i<N; i++) {
31+
preR[i] += (preR[i-1]+reArr[i]);
32+
}
33+
34+
35+
int ans = 0;
36+
for(int i=1; i<N-1; i++) {
37+
// 가장 왼쪽에 꿀통이 있을 떄,
38+
// 꿀통(고정), 벌2(i), 벌1(고정)
39+
// 벌1 + 벌2 - (벌2가 겹치는 부분)
40+
int left = preL[N-2] + preL[i-1] - arr[i];
41+
ans = Math.max(ans, left);
42+
43+
// 가장 오른쪽에 꿀통이 있을 때,
44+
// 벌1(고정), 벌2(i), 꿀통(고정)
45+
// 벌1 + 벌2 - (벌2가 겹치는 부분)
46+
int right = preR[N-2] + preR[i-1] - reArr[i];
47+
ans = Math.max(ans, right);
48+
49+
// 꿀통이 중간에 있을 때,
50+
// 벌1(고정), 꿀통(i), 벌2(고정)
51+
// 두 벌들을 제외한 누적합 + 꿀통위치
52+
int mid = preL[N-2] - preL[0] + arr[i];
53+
ans = Math.max(ans, mid);
54+
}
55+
56+
System.out.println(ans);
57+
58+
}
59+
60+
}

‎BOJ/25000-30000번/JY_30407.java

Lines changed: 66 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,66 @@
1+
import java.io.*;
2+
import java.util.*;
3+
public class JY_30407 {
4+
5+
static int N, H, D, K;
6+
static int[] drr;
7+
static int ans;
8+
9+
public static void main(String[] args) throws IOException {
10+
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
11+
StringTokenizer st = new StringTokenizer(br.readLine());
12+
13+
N = Integer.parseInt(st.nextToken());
14+
15+
st = new StringTokenizer(br.readLine());
16+
H = Integer.parseInt(st.nextToken());
17+
D = Integer.parseInt(st.nextToken());
18+
K = Integer.parseInt(st.nextToken());
19+
20+
drr = new int[N+1];
21+
for(int i=0; i<N; i++) {
22+
drr[i] = Integer.parseInt(br.readLine());
23+
}
24+
25+
ans = 0;
26+
dfs(0, D, H, drr[0], false);
27+
if(ans <= 0) System.out.println(-1);
28+
else System.out.println(ans);
29+
30+
}
31+
public static void dfs(int depth, int d, int h, int power, boolean isIgnore) {
32+
if(depth == N) {
33+
ans = Math.max(ans, h);
34+
return;
35+
}
36+
37+
// 체력이 0보다 작으면 return;
38+
if(h <= 0) return;
39+
// ans보다 적으면 return;
40+
if(h <= ans) return;
41+
42+
43+
int np = 0;
44+
// 웅크리기
45+
np = calPower(power, d);
46+
dfs(depth+1, d, h-(np/2), drr[depth+1], isIgnore);
47+
48+
// 네발로 걷기
49+
int nd = d + K;
50+
np = calPower(power, nd);
51+
dfs(depth+1, nd, h-np, drr[depth+1], isIgnore);
52+
53+
54+
// 깜짝놀라게하기
55+
if(!isIgnore) {
56+
np = calPower(power, d);
57+
dfs(depth+1, d, h-np, 0, !isIgnore);
58+
59+
}
60+
61+
}
62+
public static int calPower(int r, int d) {
63+
return Math.max(0, r-d);
64+
}
65+
66+
}

‎Programmers/Level2/JY_148652.java

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
class JY_148652 {
2+
static final int S = 5;
3+
static int answer;
4+
static long L, R;
5+
public long solution(int n, long l, long r) {
6+
answer = 0;
7+
L = l-1;
8+
R = r-1;
9+
long size = (long)Math.pow(S, n);
10+
div(0, size);
11+
return answer;
12+
}
13+
public static void div(long idx, long size) {
14+
if(size == 1) {
15+
if(L <= idx && idx <= R) {
16+
answer += 1;
17+
}
18+
return;
19+
}
20+
long fifth = size / S;
21+
22+
for(int i=0; i<S; i++) {
23+
if(i == 2) continue;
24+
// 다음 분할 구간 찾기
25+
long sIdx = idx + (fifth*i);
26+
long eIdx = sIdx + fifth -1;
27+
// [l, r] 이외라면 탐색 X
28+
if(L > eIdx || sIdx > R) continue;
29+
30+
div(sIdx, fifth);
31+
}
32+
33+
}
34+
}
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
-- 연간 평가점수에 해당하는 평가 등급 및 성과금 조회하기
2+
-- https://school.programmers.co.kr/learn/courses/30/lessons/284528
3+
SELECT
4+
E.EMP_NO, E.EMP_NAME,
5+
CASE
6+
WHEN AVG(G.SCORE) >= 96 THEN 'S'
7+
WHEN AVG(G.SCORE) >= 90 THEN 'A'
8+
WHEN AVG(G.SCORE) >= 80 THEN 'B'
9+
ELSE 'C'
10+
END AS GRADE,
11+
CASE
12+
WHEN AVG(G.SCORE) >=96 THEN E.SAL*0.2
13+
WHEN AVG(G.SCORE) >=90 THEN E.SAL*0.15
14+
WHEN AVG(G.SCORE) >=80 THEN E.SAL*0.1
15+
ELSE 0
16+
END AS BONUS
17+
FROM HR_EMPLOYEES E
18+
LEFT JOIN HR_GRADE G
19+
ON E.EMP_NO = G.EMP_NO
20+
GROUP BY E.EMP_NO
21+
ORDER BY E.EMP_NO

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /