```java
class Solution {
private static final int[] PERCENT = {10, 20, 30, 40};
public int[] solution(int[][] users, int[] emoticons) {
int[] discount = new int[emoticons.length];
int[] answer = dfs(0, discount, users, emoticons);
return answer;
}
private int[] dfs(int depth, int[] discount, int[][] users, int[] emoticons) {
int[] result = new int[2];
if (depth == emoticons.length) {
int[] cost = new int[users.length];
for (int i = 0; i < emoticons.length; i++) {
for (int j = 0; j < users.length; j++) {
if (discount[i] >= users[j][0]) {
cost[j] += (emoticons[i] * (100 - discount[i])) * 0.01;
}
}
}
for (int i = 0; i < users.length; i++) {
if (cost[i] >= users[i][1]) {
result[0]++;
} else {
result[1] += cost[i];
}
}
return result;
}
for (int i = 0; i < 4; i++) {
discount[depth] = PERCENT[i];
int[] temp = dfs(depth + 1, discount, users, emoticons);
if (temp[0] > result[0]) {
result = temp;
} else if (temp[0] == result[0] && temp[1] > result[1]) {
result = temp;
}
}
return result;
}
}
```
선택 문제
병든 나이트 - 1783
```java
public class Main {
public static void main(String[] args) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine());
int N = Integer.parseInt(st.nextToken()); // 세로
int M = Integer.parseInt(st.nextToken()); // 가로
if (N >= 3 && M >= 7) {
System.out.println(M - 2);
} else {
int res = 0;
if (N >= 3) {
for (int i = 1; i <= M; i++) {
if (i >= 4) {
System.out.println(4);
return;
}
res += 1;
}
System.out.println(res);
} else { // 가로로 2칸씩 이동
if (N == 1) {
System.out.println(1);
return;
} else {
for (int i = 1; i <= M; i = i + 2) {
if (i >= 7) {
System.out.println(4);
return;
}
res += 1;
}
System.out.println(res);
}
}
}
}
}
```
회의실 배정 - 1931
```java
public class Main {
public static void main(String[] args) throws NumberFormatException, IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int N = Integer.parseInt(br.readLine());
int[][] time = new int[N][2];
StringTokenizer st;
for (int i = 0; i < N; i++) {
st = new StringTokenizer(br.readLine(), " ");
time[i][0] = Integer.parseInt(st.nextToken());
time[i][1] = Integer.parseInt(st.nextToken());
}
Arrays.sort(time, new Comparator() {
@Override
public int compare(int[] t1, int[] t2) {
if (t1[1] == t2[1]) {
return t1[0] - t2[0];
}
return t1[1] - t2[1];
}
});
int count = 0;
int prev_endT = 0;
for (int i = 0; i < N; i++) {
if (prev_endT <= time[i][0]) {
prev_endT = time[i][1];
count++;
}
}
System.out.print(count);
}
}
```
필수 문제
이모티콘 할인행사
코드 💻
자율 문제
[문제1]()
코드 💻
[문제2]()
코드 💻