diff --git "a/\354\235\264\354\244\200\355\235\254/2\355\225\231\352\270\260/1\354\243\274\354\260\250/[Baekjoon-10159] \354\240\200\354\232\270.java" "b/\354\235\264\354\244\200\355\235\254/2\355\225\231\352\270\260/1\354\243\274\354\260\250/[Baekjoon-10159] \354\240\200\354\232\270.java" new file mode 100644 index 0000000..f196383 --- /dev/null +++ "b/\354\235\264\354\244\200\355\235\254/2\355\225\231\352\270\260/1\354\243\274\354\260\250/[Baekjoon-10159] \354\240\200\354\232\270.java" @@ -0,0 +1,49 @@ +import java.io.BufferedReader; +import java.io.IOException; +import java.io.InputStreamReader; +import java.util.ArrayDeque; +import java.util.Queue; +import java.util.StringTokenizer; + +public class Main { + static Queue list = new ArrayDeque<>(); + static int n, m; + static int[][] w; + + public static void main(String[] args) throws IOException { + BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); + StringTokenizer st; + + n = Integer.parseInt(br.readLine()); + m = Integer.parseInt(br.readLine()); + + w = new int[n][n]; + + for (int i = 0; i < m; i++) { + st = new StringTokenizer(br.readLine()); + int big = Integer.parseInt(st.nextToken()) - 1; // 무거운거 + int small = Integer.parseInt(st.nextToken()) - 1; // 가벼운거 + w[big][small] = 1; + w[small][big] = 2; + } + + for (int k = 0; k < n; k++) { // 방향이 있는 플로이드-워셜 + for (int i = 0; i < n; i++) { + for (int j = 0; j < n; j++) { + if (w[i][k] == 1 && w[k][j] == 1) w[i][j] = 1; // a가 b보다 무겁고 b가 c보다 무거우면 a는 c보다 무겁다 + if (w[i][k] == 2 && w[k][j] == 2) w[i][j] = 2; + } + } + } + + for (int i = 0; i < n; i++) { + int count = 0; + for (int j = 0; j < n; j++) { // 위에서 다 이었으므로 0인 것은 서로 무게비교가 안되는 것 + if (i != j && w[i][j] == 0) count++; + } + System.out.println(count); + } + } + + +} diff --git "a/\354\235\264\354\244\200\355\235\254/2\355\225\231\352\270\260/1\354\243\274\354\260\250/[Baekjoon-1561] \353\206\200\354\235\264\352\263\265\354\233\220.java" "b/\354\235\264\354\244\200\355\235\254/2\355\225\231\352\270\260/1\354\243\274\354\260\250/[Baekjoon-1561] \353\206\200\354\235\264\352\263\265\354\233\220.java" new file mode 100644 index 0000000..7e212ff --- /dev/null +++ "b/\354\235\264\354\244\200\355\235\254/2\355\225\231\352\270\260/1\354\243\274\354\260\250/[Baekjoon-1561] \353\206\200\354\235\264\352\263\265\354\233\220.java" @@ -0,0 +1,60 @@ +import java.io.*; +import java.util.*; + +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()); + + int[] ride = new int[m]; + int max_time = 0; + + st = new StringTokenizer(br.readLine()); + for (int i = 0; i < m; i++) { + ride[i] = Integer.parseInt(st.nextToken()); + max_time = Math.max(max_time, ride[i]); + } + + if (n <= m) { // 기다리는 아이가 놀이기구 개수보다 작으면 바로 출력 + System.out.println(n); + return; + } + + long left = 0; + long right = (long) n * max_time; + long t = 0; + + while (left <= right) { // 모든 아이가 놀이기구를 다 탈 수 있는 시간 중 최소값 구하기 + long mid = (left + right) / 2; + long total = m; + for (int i = 0; i < m; i++) { + total += mid / ride[i]; + } + if (total >= n) { + t = mid; + right = mid - 1; + } else { + left = mid + 1; + } + } + + long cnt = m; + for (int i = 0; i < m; i++) { // 모든 아이가 놀이기구를 다 타기 직전의 상태 찾기 + cnt += (t - 1) / ride[i]; + } + + for (int i = 0; i < m; i++) { // 놀이기구를 다 탄 시점 + if (t % ride[i] == 0) { // 이 때 0이므로 탈 수 있음 + cnt++; + if (cnt == n) { // 줄 마지막 아이가 탔으면 출력 + System.out.println(i + 1); + break; + } + } + } + } +} diff --git "a/\354\235\264\354\244\200\355\235\254/2\355\225\231\352\270\260/1\354\243\274\354\260\250/[Baekjoon-17390] \354\235\264\352\261\264 \352\274\255 \355\222\200\354\226\264\354\225\274\355\225\264!.java" "b/\354\235\264\354\244\200\355\235\254/2\355\225\231\352\270\260/1\354\243\274\354\260\250/[Baekjoon-17390] \354\235\264\352\261\264 \352\274\255 \355\222\200\354\226\264\354\225\274\355\225\264!.java" new file mode 100644 index 0000000..aa23b47 --- /dev/null +++ "b/\354\235\264\354\244\200\355\235\254/2\355\225\231\352\270\260/1\354\243\274\354\260\250/[Baekjoon-17390] \354\235\264\352\261\264 \352\274\255 \355\222\200\354\226\264\354\225\274\355\225\264!.java" @@ -0,0 +1,46 @@ +import java.io.BufferedReader; +import java.io.IOException; +import java.io.InputStreamReader; +import java.util.ArrayDeque; +import java.util.Arrays; +import java.util.Queue; +import java.util.StringTokenizer; + +public class Main { + static Queue list = new ArrayDeque<>(); + static int n, q; + + public static void main(String[] args) throws IOException { + BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); + StringTokenizer st = new StringTokenizer(br.readLine()); + StringBuilder sb = new StringBuilder(); + + n = Integer.parseInt(st.nextToken()); + q = Integer.parseInt(st.nextToken()); + + int[] arr = new int[n]; + int[] sum = new int[n]; + + st = new StringTokenizer(br.readLine()); + for (int i = 0; i < n; i++) { + arr[i] = Integer.parseInt(st.nextToken()); + } + Arrays.sort(arr); // 비내림차순으로 정렬 + + sum[0] = arr[0]; + for (int i = 1; i < n; i++) { // 구간합 구해놓기 + sum[i] = sum[i - 1] + arr[i]; + } + + for (int i = 0; i < q; i++) { // 입력에 따라 출력하기 + st = new StringTokenizer(br.readLine()); + int from = Integer.parseInt(st.nextToken()) - 1; + int to = Integer.parseInt(st.nextToken()) - 1; + sb.append(sum[to] - sum[from] + arr[from] + "\n"); + } + + System.out.println(sb.toString()); + } + + +} diff --git "a/\354\235\264\354\244\200\355\235\254/2\355\225\231\352\270\260/1\354\243\274\354\260\250/[Baekjoon-2239] \354\212\244\353\217\204\354\277\240.java" "b/\354\235\264\354\244\200\355\235\254/2\355\225\231\352\270\260/1\354\243\274\354\260\250/[Baekjoon-2239] \354\212\244\353\217\204\354\277\240.java" new file mode 100644 index 0000000..5010d62 --- /dev/null +++ "b/\354\235\264\354\244\200\355\235\254/2\355\225\231\352\270\260/1\354\243\274\354\260\250/[Baekjoon-2239] \354\212\244\353\217\204\354\277\240.java" @@ -0,0 +1,69 @@ +import java.io.BufferedReader; +import java.io.InputStreamReader; +import java.util.ArrayList; +import java.util.List; +import java.util.StringTokenizer; + +public class Main { + static int[][] board = new int[9][9]; // 스도쿠판 + static boolean[][] row = new boolean[9][10]; // row[a][b] = a번째 줄에 b가 있는지 + static boolean[][] col = new boolean[9][10]; // col[a][b] = a번째 칸에 b가 있는지 + static boolean[][] box = new boolean[9][10]; // box[a][b] = a번째 박스에 b가 있는지 + static List blanks = new ArrayList<>(); // 빈칸 위치 + static boolean solved = false; // 풀었는지 안풀었는지 + + public static void main(String[] args) throws Exception { + BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); + StringTokenizer st; + + for (int i = 0; i < 9; i++) { + String str = br.readLine(); + for (int j = 0; j < 9; j++) { + int num = str.charAt(j) - '0'; + board[i][j] = num; + if (num == 0) { + blanks.add(new int[]{i, j}); + } else { // 입력하면서 있는지에 대한 처리 + row[i][num] = true; + col[j][num] = true; + box[(i / 3) * 3 + (j / 3)][num] = true; + } + } + } + + dfs(0); + } + + static void dfs(int depth) { + if (depth == blanks.size()) { // 풀었으면 끝 + StringBuilder sb = new StringBuilder(); + for (int[] line : board) { + for (int num : line) { + sb.append(num); + } + sb.append('\n'); + } + System.out.print(sb); + solved = true; + return; + } + + int[] pos = blanks.get(depth); // 빈칸마다 탐색 + int x = pos[0]; + int y = pos[1]; + int boxnum = (x / 3) * 3 + (y / 3); + + for (int num = 1; num <= 9; num++) { // 중복정답인경우 작은 수 출력이므로 1부터 시작 + if (!row[x][num] && !col[y][num] && !box[boxnum][num]) { // 수 검증 + row[x][num] = col[y][num] = box[boxnum][num] = true; // 방문 처리 + board[x][y] = num; // 입력 + + dfs(depth + 1); + if (solved) return; + + board[x][y] = 0; // 백트래킹 + row[x][num] = col[y][num] = box[boxnum][num] = false; + } + } + } +} diff --git "a/\354\235\264\354\244\200\355\235\254/2\355\225\231\352\270\260/1\354\243\274\354\260\250/[Baekjoon-9935] \353\254\270\354\236\220\354\227\264 \355\217\255\353\260\234.java" "b/\354\235\264\354\244\200\355\235\254/2\355\225\231\352\270\260/1\354\243\274\354\260\250/[Baekjoon-9935] \353\254\270\354\236\220\354\227\264 \355\217\255\353\260\234.java" new file mode 100644 index 0000000..4d34c66 --- /dev/null +++ "b/\354\235\264\354\244\200\355\235\254/2\355\225\231\352\270\260/1\354\243\274\354\260\250/[Baekjoon-9935] \353\254\270\354\236\220\354\227\264 \355\217\255\353\260\234.java" @@ -0,0 +1,38 @@ +import java.io.BufferedReader; +import java.io.IOException; +import java.io.InputStreamReader; +import java.util.StringTokenizer; + +public class Main { + + public static void main(String[] args) throws IOException { + BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); + StringTokenizer st; + + String str = br.readLine(); + String bomb = br.readLine(); + + StringBuilder sb = new StringBuilder(); + + int blen = bomb.length(); + + for (char c : str.toCharArray()) { + sb.append(c); + + if (sb.length() >= blen) { + if (sb.substring(sb.length() - blen).equals(bomb)) { + sb.delete(sb.length()-blen,sb.length()); + } + } + } + + + if (sb.length() != 0) { + System.out.println(sb.toString()); + } else { + System.out.println("FRULA"); + } + } + + +}