diff --git "a/all_part_1/\354\243\274\354\240\225\354\234\244/\352\260\200\355\235\254\354\231\200 \355\202\244\354\233\214\353\223\234.java" "b/all_part_1/\354\243\274\354\240\225\354\234\244/\352\260\200\355\235\254\354\231\200 \355\202\244\354\233\214\353\223\234.java" new file mode 100644 index 0000000..e8de0ef --- /dev/null +++ "b/all_part_1/\354\243\274\354\240\225\354\234\244/\352\260\200\355\235\254\354\231\200 \355\202\244\354\233\214\353\223\234.java" @@ -0,0 +1,31 @@ +import java.io.*; +import java.util.*; + +public class 가희와 키워드 { + public static void main(String[] args) throws IOException { + BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); + BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out)); + + String[] input = br.readLine().split(" "); + int n = Integer.parseInt(input[0]); + int m = Integer.parseInt(input[1]); + + HashSet memo = new HashSet<>(); + + for (int i = 0; i < n; i++) { + memo.add(br.readLine()); + } + + for (int i = 0; i < m; i++) { + String[] words = br.readLine().split(","); + for (String word : words) { + memo.remove(word); + } + bw.write(memo.size() + "\n"); + } + + bw.flush(); + bw.close(); + br.close(); + } +} diff --git "a/all_part_1/\354\243\274\354\240\225\354\234\244/\353\223\261\354\210\230 \352\265\254\355\225\230\352\270\260.java" "b/all_part_1/\354\243\274\354\240\225\354\234\244/\353\223\261\354\210\230 \352\265\254\355\225\230\352\270\260.java" new file mode 100644 index 0000000..8fd2b23 --- /dev/null +++ "b/all_part_1/\354\243\274\354\240\225\354\234\244/\353\223\261\354\210\230 \352\265\254\355\225\230\352\270\260.java" @@ -0,0 +1,42 @@ +import java.io.*; +import java.util.*; + +public class 등수 구하기 { + public static void main(String[] args) throws IOException { + BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); + StringTokenizer st = new StringTokenizer(br.readLine()); + + int n = Integer.parseInt(st.nextToken()); + int newScore = Integer.parseInt(st.nextToken()); + int p = Integer.parseInt(st.nextToken()); + + int[] scores = new int[n]; + if (n > 0) { + st = new StringTokenizer(br.readLine()); + for (int i = 0; i < n; i++) { + scores[i] = Integer.parseInt(st.nextToken()); + } + } + + if (n == 0) { + System.out.println(1); + return; + } + + if (n == p && newScore <= scores[n - 1]) { + System.out.println(-1); + return; + } + + int rank = 1; + for (int i = 0; i < n; i++) { + if (newScore < scores[i]) { + rank++; + } else { + break; + } + } + + System.out.println(rank); + } +} diff --git "a/all_part_1/\354\243\274\354\240\225\354\234\244/\354\247\204\354\232\260\354\231\200 \353\213\254\354\227\254\355\226\211.java" "b/all_part_1/\354\243\274\354\240\225\354\234\244/\354\247\204\354\232\260\354\231\200 \353\213\254\354\227\254\355\226\211.java" new file mode 100644 index 0000000..ecb8721 --- /dev/null +++ "b/all_part_1/\354\243\274\354\240\225\354\234\244/\354\247\204\354\232\260\354\231\200 \353\213\254\354\227\254\355\226\211.java" @@ -0,0 +1,50 @@ +import java.io.*; +import java.util.*; + +public class 진우와 달여행 { + static int[][] map; + static int[][][] dp; + static int n, m; + + public static void main(String[] args) throws IOException { + BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); + StringTokenizer st = new StringTokenizer(br.readLine()); + + n = Integer.parseInt(st.nextToken()); + m = Integer.parseInt(st.nextToken()); + + map = new int[n][m]; + dp = new int[n][m][3]; + + for (int i = 0; i < n; i++) { + st = new StringTokenizer(br.readLine()); + for (int j = 0; j < m; j++) { + map[i][j] = Integer.parseInt(st.nextToken()); + Arrays.fill(dp[i][j], Integer.MAX_VALUE); + } + } + + for (int j = 0; j < m; j++) { + dp[0][j][0] = dp[0][j][1] = dp[0][j][2] = map[0][j]; + } + + for (int i = 1; i < n; i++) { + for (int j = 0; j < m; j++) { + if (j > 0) { + dp[i][j][0] = Math.min(dp[i][j][0], dp[i - 1][j - 1][1] + map[i][j]); + } + dp[i][j][1] = Math.min(dp[i][j][1], dp[i - 1][j][0] + map[i][j]); + if (j < m - 1) { + dp[i][j][2] = Math.min(dp[i][j][2], dp[i - 1][j + 1][1] + map[i][j]); + } + } + } + + int minFuel = Integer.MAX_VALUE; + for (int j = 0; j < m; j++) { + minFuel = Math.min(minFuel, Math.min(dp[n - 1][j][0], Math.min(dp[n - 1][j][1], dp[n - 1][j][2]))); + } + + System.out.println(minFuel); + } +} diff --git "a/all_part_2/\354\243\274\354\240\225\354\234\244/\354\240\204\352\265\254\354\231\200 \354\212\244\354\234\204\354\271\230.java" "b/all_part_2/\354\243\274\354\240\225\354\234\244/\354\240\204\352\265\254\354\231\200 \354\212\244\354\234\204\354\271\230.java" new file mode 100644 index 0000000..63c7052 --- /dev/null +++ "b/all_part_2/\354\243\274\354\240\225\354\234\244/\354\240\204\352\265\254\354\231\200 \354\212\244\354\234\204\354\271\230.java" @@ -0,0 +1,53 @@ +import java.io.*; + +public class 전구와 스위치 { + public static void main(String[] args) throws IOException { + BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); + BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out)); + + int n = Integer.parseInt(br.readLine()); + char[] current = br.readLine().toCharArray(); + char[] target = br.readLine().toCharArray(); + + int result1 = solve(current.clone(), target, n, false); + int result2 = solve(current.clone(), target, n, true); + + int answer = Math.min(result1, result2); + if (answer == Integer.MAX_VALUE) { + bw.write("-1\n"); + } else { + bw.write(answer + "\n"); + } + + bw.flush(); + bw.close(); + br.close(); + } + + public static int solve(char[] current, char[] target, int n, boolean firstSwitch) { + int count = 0; + if (firstSwitch) { + switchLamp(current, 0); + count++; + } + + for (int i = 1; i < n; i++) { + if (current[i - 1] != target[i - 1]) { + switchLamp(current, i); + count++; + } + } + + if (current[n - 1] != target[n - 1]) { + return Integer.MAX_VALUE; + } + + return count; + } + + public static void switchLamp(char[] current, int index) { + for (int i = index; i <= index + 1 && i < current.length; i++) { + current[i] = current[i] == '0' ? '1' : '0'; + } + } +} diff --git "a/all_part_2/\354\243\274\354\240\225\354\234\244/\354\240\220\355\224\204.java" "b/all_part_2/\354\243\274\354\240\225\354\234\244/\354\240\220\355\224\204.java" new file mode 100644 index 0000000..5202783 --- /dev/null +++ "b/all_part_2/\354\243\274\354\240\225\354\234\244/\354\240\220\355\224\204.java" @@ -0,0 +1,42 @@ +import java.io.*; + +public class 점프 { + public static void main(String[] args) throws IOException { + BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); + BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out)); + + int n = Integer.parseInt(br.readLine()); + int[][] board = new int[n][n]; + long[][] dp = new long[n][n]; + + for (int i = 0; i < n; i++) { + String[] line = br.readLine().split(" "); + for (int j = 0; j < n; j++) { + board[i][j] = Integer.parseInt(line[j]); + } + } + + dp[0][0] = 1; + + for (int i = 0; i < n; i++) { + for (int j = 0; j < n; j++) { + if (i == n - 1 && j == n - 1) { + break; + } + int jump = board[i][j]; + if (i + jump < n) { + dp[i + jump][j] += dp[i][j]; + } + if (j + jump < n) { + dp[i][j + jump] += dp[i][j]; + } + } + } + + bw.write(dp[n - 1][n - 1] + "\n"); + + bw.flush(); + bw.close(); + br.close(); + } +} diff --git "a/all_part_2/\354\243\274\354\240\225\354\234\244/\355\232\214\354\240\204\354\264\210\353\260\245.java" "b/all_part_2/\354\243\274\354\240\225\354\234\244/\355\232\214\354\240\204\354\264\210\353\260\245.java" new file mode 100644 index 0000000..34b5f45 --- /dev/null +++ "b/all_part_2/\354\243\274\354\240\225\354\234\244/\355\232\214\354\240\204\354\264\210\353\260\245.java" @@ -0,0 +1,49 @@ +import java.io.*; + +public class 회전초밥 { + public static void main(String[] args) throws IOException { + BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); + BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out)); + + String[] input = br.readLine().split(" "); + int n = Integer.parseInt(input[0]); + int d = Integer.parseInt(input[1]); + int k = Integer.parseInt(input[2]); + int c = Integer.parseInt(input[3]); + + int[] belt = new int[n]; + for (int i = 0; i < n; i++) { + belt[i] = Integer.parseInt(br.readLine()); + } + + int[] sushi = new int[d + 1]; + int uniqueCount = 0; + for (int i = 0; i < k; i++) { + if (sushi[belt[i]] == 0) uniqueCount++; + sushi[belt[i]]++; + } + + int maxSushi = uniqueCount; + + for (int i = 0; i < n; i++) { + int endIndex = (i + k) % n; + + if (sushi[belt[i]] == 1) uniqueCount--; + sushi[belt[i]]--; + + if (sushi[belt[endIndex]] == 0) uniqueCount++; + sushi[belt[endIndex]]++; + + int currentMax = uniqueCount; + if (sushi[c] == 0) currentMax++; + + maxSushi = Math.max(maxSushi, currentMax); + } + + bw.write(maxSushi + "\n"); + + bw.flush(); + bw.close(); + br.close(); + } +} diff --git "a/all_part_3/\354\243\274\354\240\225\354\234\244/\354\226\264\353\221\220\354\232\264 \352\265\264\353\213\244\353\246\254.java" "b/all_part_3/\354\243\274\354\240\225\354\234\244/\354\226\264\353\221\220\354\232\264 \352\265\264\353\213\244\353\246\254.java" new file mode 100644 index 0000000..900316a --- /dev/null +++ "b/all_part_3/\354\243\274\354\240\225\354\234\244/\354\226\264\353\221\220\354\232\264 \352\265\264\353\213\244\353\246\254.java" @@ -0,0 +1,28 @@ + +import java.io.*; +import java.util.*; + +public class 어두운 굴다리 { + public static void main(String[] args) throws IOException { + BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); + + int n = Integer.parseInt(br.readLine()); //터널 길이 + int m = Integer.parseInt(br.readLine()); //가로등 개수 + int[] lights = new int[m]; + + StringTokenizer st = new StringTokenizer(br.readLine()); + for (int i = 0; i < m; i++) { + lights[i] = Integer.parseInt(st.nextToken()); + } + + int maxDistance = Math.max(lights[0], n - lights[m - 1]); //끝에서의 거리 처리 + + for (int i = 1; i < m; i++) { + int distance = (lights[i] - lights[i - 1] + 1) / 2; + maxDistance = Math.max(maxDistance, distance); + } + + System.out.println(maxDistance); + br.close(); + } +} diff --git "a/all_part_3/\354\243\274\354\240\225\354\234\244/\354\271\264\353\223\234 \355\225\251\354\262\264 \353\206\200\354\235\264.java" "b/all_part_3/\354\243\274\354\240\225\354\234\244/\354\271\264\353\223\234 \355\225\251\354\262\264 \353\206\200\354\235\264.java" new file mode 100644 index 0000000..f1f0af7 --- /dev/null +++ "b/all_part_3/\354\243\274\354\240\225\354\234\244/\354\271\264\353\223\234 \355\225\251\354\262\264 \353\206\200\354\235\264.java" @@ -0,0 +1,40 @@ +import java.io.*; +import java.util.*; + +public class 카드 합체 놀이 { + public static void main(String[] args) throws IOException { + 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()); //카드 합체 횟수 + + PriorityQueue pq = new PriorityQueue<>(); + + //카드 입력 받기 + st = new StringTokenizer(br.readLine()); + for (int i = 0; i < n; i++) { + pq.add((long) Integer.parseInt(st.nextToken())); + } + + //m번 합체 + for (int i = 0; i < m; i++) { + long a = pq.poll(); + long b = pq.poll(); + long sum = a + b; + + //카드 한장 아니고 두장 추가 + pq.add(sum); + pq.add(sum); + } + + //남은 카드들의 합 계산 + long total = 0; + while (!pq.isEmpty()) { + total += pq.poll(); + } + + System.out.println(total); + br.close(); + } +}