From 803c47c5bcb2a01701d61afd32bab324e5d3db54 Mon Sep 17 00:00:00 2001 From: Jewan1120 Date: 2024年11月11日 11:49:56 +0900 Subject: [PATCH 01/10] =?UTF-8?q?=EB=B0=B1=EC=A0=9C=EC=99=84:=20[CT]=20?= =?UTF-8?q?=ED=9A=8C=EC=A0=84=ED=95=98=EB=8A=94=20=EB=B9=99=ED=95=98=5F241?= =?UTF-8?q?111?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...353212円224円_353円271円231円355円225円230円.java" | 136 ++++++++++++++++++ 1 file changed, 136 insertions(+) create mode 100644 "CodeTree/2019-2020353円205円204円/JW_355円232円214円354円240円204円355円225円230円353円212円224円_353円271円231円355円225円230円.java" diff --git "a/CodeTree/2019-2020353円205円204円/JW_355円232円214円354円240円204円355円225円230円353円212円224円_353円271円231円355円225円230円.java" "b/CodeTree/2019-2020353円205円204円/JW_355円232円214円354円240円204円355円225円230円353円212円224円_353円271円231円355円225円230円.java" new file mode 100644 index 00000000..c4e4c78b --- /dev/null +++ "b/CodeTree/2019-2020353円205円204円/JW_355円232円214円354円240円204円355円225円230円353円212円224円_353円271円231円355円225円230円.java" @@ -0,0 +1,136 @@ +import java.io.BufferedReader; +import java.io.InputStreamReader; +import java.util.ArrayDeque; +import java.util.Deque; +import java.util.StringTokenizer; + +public class JW_회전하는_빙하 { + + static int n, m, q; + static int[][] board; // 빙하를 저장할 배열 + static int[][] tempBoard; // 다음 빙하 결정에 영향을 주는 배열 + static boolean[][] visited; + static int maxCnt = 0; // 최대 군집의 크기 + static int sum = 0; // 남은 빙하의 합 + static int[] dy = { 0, 1, -1, 0 }; + static int[] dx = { 1, 0, 0, -1 }; + + public static void main(String[] args) throws Exception { + BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); + StringTokenizer st = new StringTokenizer(br.readLine()); + n = Integer.parseInt(st.nextToken()); + m = (int) Math.pow(2, n); + q = Integer.parseInt(st.nextToken()); + board = new int[m][m]; + for (int i = 0; i < m; i++) { + st = new StringTokenizer(br.readLine()); + for (int j = 0; j < m; j++) + board[i][j] = Integer.parseInt(st.nextToken()); + } + int[] level = new int[q]; + st = new StringTokenizer(br.readLine()); + for (int i = 0; i < q; i++) + level[i] = Integer.parseInt(st.nextToken()); + for (int t = 0; t < q; t++) { + // 레벨이 1이상인 경우에만 회전 + if (level[t]> 0) + rotate(level[t]); // 빙하의 회전 구현 + melt(); // 빙하의 녹음 구현 + } + caclulate(); // 빙하의 최대 군집의 크기 계산 및 총합 계산 + System.out.println(sum); + System.out.println(maxCnt); + } + + // 빙하의 회전 구현 + private static void rotate(int l) { + int M = (int) Math.pow(2, l); + int N = (int) Math.pow(2, l - 1); + tempBoard = new int[m][m]; + for (int i = 0; i < m; i += M) { + for (int j = 0; j < m; j += M) { + // 각 꼭짓점을 기준으로 덩어리들이 움직임 + move(i, j, N, 0); + move(i, j + N, N, 1); + move(i + N, j, N, 2); + move(i + N, j + N, N, 3); + } + } + for (int i = 0; i < m; i++) + for (int j = 0; j < m; j++) + board[i][j] = tempBoard[i][j]; + } + + // 빙하의 움직임 구현 + private static void move(int sy, int sx, int N, int dir) { + for (int i = 0; i < N; i++) + for (int j = 0; j < N; j++) { + int y = (sy + i) + N * dy[dir]; + int x = (sx + j) + N * dx[dir]; + tempBoard[y][x] = board[sy + i][sx + j]; + } + } + + // 빙하의 녹음 구현 + private static void melt() { + tempBoard = new int[m][m]; + for (int i = 0; i < m; i++) + for (int j = 0; j < m; j++) + if (board[i][j]> 0) { + int cnt = 0; + // 주변 빙하의 수 계산 + for (int k = 0; k < 4; k++) { + int y = i + dy[k]; + int x = j + dx[k]; + if (isValid(y, x) && board[y][x]> 0) + cnt++; + } + // 3개 미만이면 빙하 감소 + if (cnt < 3) + tempBoard[i][j]--; + } + for (int i = 0; i < m; i++) + for (int j = 0; j < m; j++) + board[i][j] += tempBoard[i][j]; + } + + // 군집 크기 및 총합 계산 + private static void caclulate() { + visited = new boolean[m][m]; + for (int i = 0; i < m; i++) + for (int j = 0; j < m; j++) + if (!visited[i][j] && board[i][j]> 0) { + // 빙하 군집의 크기를 계산하기 위한 BFS + int cnt = bfs(i, j); + maxCnt = Math.max(maxCnt, cnt); + } + } + + // BFS + private static int bfs(int y, int x) { + int cnt = 0; + Deque dq = new ArrayDeque(); + dq.offer(new int[] { y, x }); + while (!dq.isEmpty()) { + int[] cur = dq.poll(); + if (visited[cur[0]][cur[1]]) + continue; + visited[cur[0]][cur[1]] = true; + cnt++; // 빙하 수 카운트 + sum += board[cur[0]][cur[1]]; // 총 합 증가 + for (int i = 0; i < 4; i++) { + int ny = cur[0] + dy[i]; + int nx = cur[1] + dx[i]; + if (isValid(ny, nx) && !visited[ny][nx] && board[ny][nx]> 0) { + dq.offer(new int[] { ny, nx }); + } + } + } + return cnt; + } + + // 경계 체크 + private static boolean isValid(int y, int x) { + return 0 <= y && y < m && 0 <= x && x < m; + } +} \ No newline at end of file From 789d08998fa6c6a921a90a55ca0658a4ba4fdedf Mon Sep 17 00:00:00 2001 From: Jewan1120 Date: 2024年11月12日 11:27:44 +0900 Subject: [PATCH 02/10] =?UTF-8?q?=EB=B0=B1=EC=A0=9C=EC=99=84:=20[BOJ]=2029?= =?UTF-8?q?55=20=EC=8A=A4=EB=8F=84=EC=BF=A0=20=ED=92=80=EA=B8=B0=5F241112?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- "BOJ/1000-5000353円262円210円/JW_2955.java" | 126 +++++++++++++++++++++++ 1 file changed, 126 insertions(+) create mode 100644 "BOJ/1000-5000353円262円210円/JW_2955.java" diff --git "a/BOJ/1000-5000353円262円210円/JW_2955.java" "b/BOJ/1000-5000353円262円210円/JW_2955.java" new file mode 100644 index 00000000..0918dce3 --- /dev/null +++ "b/BOJ/1000-5000353円262円210円/JW_2955.java" @@ -0,0 +1,126 @@ +import java.io.BufferedReader; +import java.io.InputStreamReader; +import java.util.ArrayList; + +public class JW_2955 { + + public static void main(String[] args) throws Exception { + BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); + int[][] board = new int[9][9]; + for (int i = 0; i < 9; i++) { + String line = br.readLine(); + for (int j = 0; j < 9; j++) + if (Character.isDigit(line.charAt(j))) { + board[i][j] = line.charAt(j) - '0'; + } + } + // 갱신되는 숫자가 없을 때까지 반복 + boolean playFlag = true; + while (playFlag) { + playFlag = false; + // 각 숫자가 들어갈 수 있는 자리를 체크 + for (int num = 1; num <= 9; num++) { + // crossHatching을 이용하여 target이 들어갈 수 있는 자리들을 확인 + boolean[][] checkBoard = crossHatching(board, num); + // 잘못된 경우라면 에러 출력 + if (!isValid(num, board, checkBoard)) { + System.out.println("ERROR"); + return; + } + // 각 서브 그리드 안에 숫자를 넣을 수 있는지 확인 + for (int i = 0; i < 9; i++) + if (putNumber(num, board, i, checkBoard)) + playFlag = true; // 넣을 수 있다면 반복 + } + } + System.out.println(printBoard(board)); + } + + private static boolean[][] crossHatching(int[][] board, int target) { + boolean[][] checkBoard = new boolean[9][9]; + // 1. 이미 숫자가 존재함 + for (int i = 0; i < 9; i++) + for (int j = 0; j < 9; j++) + if (board[i][j] != 0) + checkBoard[i][j] = true; + // 2. 타겟과 같은 숫자의 위치 + for (int i = 0; i < 9; i++) + for (int j = 0; j < 9; j++) + if (board[i][j] == target) { + check(checkBoard, i, j); + } + return checkBoard; + } + + // 타겟(숫자)이 들어갈 수 있는지 확인하고 들어갈 자리가 한 곳이라면 삽입 + private static boolean putNumber(int target, int[][] board, int boardNum, boolean[][] checkBoard) { + ArrayList arr = new ArrayList(); + int sy = (boardNum / 3) * 3, sx = (boardNum % 3) * 3; + for (int i = 0; i < 3; i++) { + for (int j = 0; j < 3; j++) { + int ny = sy + i; + int nx = sx + j; + if (!checkBoard[ny][nx]) + arr.add(new int[] { ny, nx }); + } + } + if (arr.size() == 1) { + int y = arr.get(0)[0]; + int x = arr.get(0)[1]; + board[y][x] = target; + check(checkBoard, y, x); + return true; + } + return false; + } + + // 해당 자리 기준으로 상하좌우, 서브그리드 체크 + private static void check(boolean[][] checkBoard, int y, int x) { + int sy = (y / 3) * 3; + int sx = (x / 3) * 3; + for (int i = 0; i < 3; i++) + for (int j = 0; j < 3; j++) { + checkBoard[sy + i][sx + j] = true; + } + for (int i = 0; i < 9; i++) { + checkBoard[y][i] = true; + checkBoard[i][x] = true; + } + } + + // 유효성 체크 + private static boolean isValid(int target, int[][] board, boolean[][] checkBoard) { + for (int i = 0; i < 9; i++) { + int putCnt = 0; + int numCnt = 0; + int sy = (i / 3) * 3; + int sx = (i % 3) * 3; + for (int j = 0; j < 3; j++) + for (int k = 0; k < 3; k++) { + int ny = sy + j, nx = sx + k; + if (board[ny][nx] == target) + numCnt++; + if (!checkBoard[ny][nx]) + putCnt++; + } + // 서브그리드에 타겟과 동일한 숫자가 2개, 들어갈 자리가 없는데 타겟이 없을 경우 예외 + if (numCnt> 1 || putCnt == 0 && numCnt == 0) + return false; + } + return true; + } + + // 스도쿠 출력 + private static String printBoard(int[][] board) { + StringBuilder sb = new StringBuilder(); + for (int i = 0; i < 9; i++) { + for (int j = 0; j < 9; j++) + if (board[i][j] == 0) + sb.append("."); + else + sb.append(board[i][j]); + sb.append("\n"); + } + return sb.toString(); + } +} \ No newline at end of file From 3361c018d692a6ae5a1fba825e928947651aefd6 Mon Sep 17 00:00:00 2001 From: Jewan1120 Date: 2024年11月13日 09:44:10 +0900 Subject: [PATCH 03/10] =?UTF-8?q?=EB=B0=B1=EC=A0=9C=EC=99=84:=20[BOJ]=2020?= =?UTF-8?q?96=20=EB=82=B4=EB=A0=A4=EA=B0=80=EA=B8=B0=5F241113?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- "BOJ/1000-5000353円262円210円/JW_2096.java" | 46 ++++++++++++++++++++++++ 1 file changed, 46 insertions(+) create mode 100644 "BOJ/1000-5000353円262円210円/JW_2096.java" diff --git "a/BOJ/1000-5000353円262円210円/JW_2096.java" "b/BOJ/1000-5000353円262円210円/JW_2096.java" new file mode 100644 index 00000000..f7bc20a3 --- /dev/null +++ "b/BOJ/1000-5000353円262円210円/JW_2096.java" @@ -0,0 +1,46 @@ +public class JW_2096 { + + public static void main(String[] args) throws Exception { + int n = read(); + int[] maxDp = new int[3]; + int[] minDp = new int[3]; + for (int i = 0; i < 3; i++) { + int p = read(); + maxDp[i] = p; + minDp[i] = p; + } + // DP: 현재 값으로 다음 값 결정하지 + for (int i = 1; i < n; i++) { + int[] next = { read(), read(), read() }; + int[] nextMaxDp = new int[3]; + int[] nextMinDp = new int[3]; + + // 가능한 범위 내에서 최댓값 찾기 + nextMaxDp[0] = next[0] + Math.max(maxDp[0], maxDp[1]); + nextMaxDp[1] = next[1] + Math.max(Math.max(maxDp[0], maxDp[1]), maxDp[2]); + nextMaxDp[2] = next[2] + Math.max(maxDp[1], maxDp[2]); + + // 가능한 범위 내에서 최솟값 찾기 + nextMinDp[0] = next[0] + Math.min(minDp[0], minDp[1]); + nextMinDp[1] = next[1] + Math.min(Math.min(minDp[0], minDp[1]), minDp[2]); + nextMinDp[2] = next[2] + Math.min(minDp[1], minDp[2]); + + // DP 배열 갱신 + maxDp = nextMaxDp; + minDp = nextMinDp; + } + StringBuilder sb = new StringBuilder(); + sb.append(Math.max(maxDp[0], Math.max(maxDp[1], maxDp[2]))); + sb.append(" ").append(Math.min(minDp[0], Math.min(minDp[1], minDp[2]))); + System.out.println(sb); + } + + private static int read() throws Exception { + int c, n = System.in.read() & 15; + while ((c = System.in.read())>= 48) + n = (n << 3) + (n << 1) + (c & 15); + if (c == 13) + System.in.read(); + return n; + } +} \ No newline at end of file From 01000fce4166ecbb487dbca34dd4e20b7e11e0f1 Mon Sep 17 00:00:00 2001 From: Jewan1120 Date: 2024年11月13日 09:59:32 +0900 Subject: [PATCH 04/10] =?UTF-8?q?=EB=B0=B1=EC=A0=9C=EC=99=84:=20[BOJ]=2016?= =?UTF-8?q?13=20=EC=97=AD=EC=82=AC=5F241113?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- "BOJ/1000-5000353円262円210円/JW_1613.java" | 37 ++++++++++++++++++++++++ 1 file changed, 37 insertions(+) create mode 100644 "BOJ/1000-5000353円262円210円/JW_1613.java" diff --git "a/BOJ/1000-5000353円262円210円/JW_1613.java" "b/BOJ/1000-5000353円262円210円/JW_1613.java" new file mode 100644 index 00000000..6c040aba --- /dev/null +++ "b/BOJ/1000-5000353円262円210円/JW_1613.java" @@ -0,0 +1,37 @@ +import java.util.Arrays; + +public class JW_1613 { + + public static void main(String[] args) throws Exception { + int n = read(), k = read(); + int[][] dist = new int[n + 1][n + 1]; + // 상대적인 거리 초기화 + for (int i = 0; i < n; i++) { + int u = read(), v = read(); + dist[u][v] = -1; + dist[v][u] = 1; + } + // 플로이드 와샬 + for (int p = 1; p < n + 1; p++) + for (int i = 1; i < n + 1; i++) + for (int j = 1; j < n + 1; j++) + // i -> p의 상태를 이용하여 다음 값 결정 + if (dist[i][p] != 0 && dist[i][p] == dist[p][j]) + dist[i][j] = dist[i][p]; + int s = read(); + StringBuilder sb = new StringBuilder(); + while (s--> 0) { + sb.append(dist[read()][read()]).append("\n"); + } + System.out.println(sb); + } + + private static int read() throws Exception { + int c, n = System.in.read() & 15; + while ((c = System.in.read())>= 48) + n = (n << 3) + (n << 1) + (c & 15); + if (c == 13) + System.in.read(); + return n; + } +} \ No newline at end of file From 964922878ba4715facd3ee70408cb5fe82d2a2d0 Mon Sep 17 00:00:00 2001 From: Jewan1120 Date: 2024年11月15日 19:26:40 +0900 Subject: [PATCH 05/10] =?UTF-8?q?=EB=B0=B1=EC=A0=9C=EC=99=84:=20[PG]=20150?= =?UTF-8?q?366=20=ED=91=9C=20=EB=B3=91=ED=95=A9=5F241114?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Programmers/Level3/JW_150366.java | 128 ++++++++++++++++++++++++++++++ 1 file changed, 128 insertions(+) create mode 100644 Programmers/Level3/JW_150366.java diff --git a/Programmers/Level3/JW_150366.java b/Programmers/Level3/JW_150366.java new file mode 100644 index 00000000..72e4c0c4 --- /dev/null +++ b/Programmers/Level3/JW_150366.java @@ -0,0 +1,128 @@ +import java.util.ArrayList; +import java.util.Arrays; +class JW_150366 { + String[][] cells = new String[51][51]; + int[][][] parent = new int[51][51][2]; + + public String[] solution(String[] commands) { + // 빈 문자열로 초기화 + for (int i = 0; i < 51; i++) + Arrays.fill(cells[i], "EMPTY"); + for (int i = 1; i < 51; i++) + for (int j = 1; j < 51; j++) + // 자기 자신을 부모로 같도록 초기화 + parent[i][j] = new int[] { i, j }; + ArrayList result = new ArrayList(); + for (int i = 0; i < commands.length; i++) { + String[] command = commands[i].split(" "); + int r1, c1, r2, c2; + String value1, value2; + switch (command[0]) { + case "UPDATE": + if (command.length == 4) { + r1 = Integer.parseInt(command[1]); + c1 = Integer.parseInt(command[2]); + value1 = command[3]; + updateCell(r1, c1, value1); + } else { + value1 = command[1]; + value2 = command[2]; + updateArea(value1, value2); + } + break; + case "MERGE": + r1 = Integer.parseInt(command[1]); + c1 = Integer.parseInt(command[2]); + r2 = Integer.parseInt(command[3]); + c2 = Integer.parseInt(command[4]); + merge(r1, c1, r2, c2); + break; + case "UNMERGE": + r1 = Integer.parseInt(command[1]); + c1 = Integer.parseInt(command[2]); + unmerge(r1, c1); + break; + case "PRINT": + r1 = Integer.parseInt(command[1]); + c1 = Integer.parseInt(command[2]); + result.add(print(r1, c1)); + break; + } + } + // 리스트를 배열로 변경 후 반환 + return result.toArray(new String[0]); + } + + private void updateCell(int r, int c, String value) { + // 바꾸려는 위치의 그룹의 부모 + int[] rootX = find(r, c); + for (int i = 1; i < 51; i++) + for (int j = 1; j < 51; j++) { + int[] rootY = find(i, j); + // 같은 그룹이라면 값 변경 + if (rootX[0] == rootY[0] && rootX[1] == rootY[1]) { + cells[i][j] = value; + } + } + } + + private void updateArea(String value1, String value2) { + for (int i = 1; i < 51; i++) + for (int j = 1; j < 51; j++) + // 동일한 값을 가지는 모든 값 변경 + if (cells[i][j].equals(value1)) + cells[i][j] = value2; + } + + private void merge(int r1, int c1, int r2, int c2) { + if (r1 == r2 && c1 == c2) { + return; + } + String value = cells[r1][c1]; + if (value.equals("EMPTY")) { + value = cells[r2][c2]; + } + union(r1, c1, r2, c2); // 그룹 합치기 + updateCell(r1, c1, value); // 해당 셀과 같은 그룹인 셀들 값 변경 + } + + private void unmerge(int r, int c) { + // merge되어있는 그룹의 부모 + int[] rootX = find(r, c); + // 해당 그룹의 값 + String value = cells[rootX[0]][rootX[1]]; + for (int i = 1; i < 51; i++) + for (int j = 1; j < 51; j++) { + int[] rootY = find(i, j); + // 같은 그룹이라면 + if (rootX[0] == rootY[0] && rootX[1] == rootY[1]) { + // union되어있는 관계 풀어주고 빈 문자열 삽입 + parent[i][j] = new int[] { i, j }; + cells[i][j] = "EMPTY"; + } + } + // 병합을 시작한 부분의 값을 기존의 값으로 변경 + cells[r][c] = value; + } + + // 해당 셀 반환 + private String print(int r, int c) { + return cells[r][c]; + } + + // find 연산 + private int[] find(int r, int c) { + int pR = parent[r][c][0]; + int pC = parent[r][c][1]; + if (r != pR || c != pC) + parent[r][c] = find(pR, pC); + return parent[r][c]; + } + + // union 연산 + private void union(int r1, int c1, int r2, int c2) { + int[] rootX = find(r1, c1); + int[] rootY = find(r2, c2); + parent[rootX[0]][rootX[1]] = rootY; + } +} \ No newline at end of file From 0ce486fb90a92b0f5f893d695caedd120b840a89 Mon Sep 17 00:00:00 2001 From: Jewan1120 Date: 2024年11月15日 19:53:39 +0900 Subject: [PATCH 06/10] =?UTF-8?q?=EB=B0=B1=EC=A0=9C=EC=99=84:=20[PG]=20181?= =?UTF-8?q?188=20=EC=9A=94=EA=B2=A9=20=EC=8B=9C=EC=8A=A4=ED=85=9C=5F241115?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Programmers/Level3/JW_181188.java | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) create mode 100644 Programmers/Level3/JW_181188.java diff --git a/Programmers/Level3/JW_181188.java b/Programmers/Level3/JW_181188.java new file mode 100644 index 00000000..948cb3a9 --- /dev/null +++ b/Programmers/Level3/JW_181188.java @@ -0,0 +1,19 @@ +import java.util.Arrays; +class JW_181188 { + public int solution(int[][] targets) { + int answer = 0; + // 미사일의 마지막 위치로 오름차순 정렬 + Arrays.sort(targets, (o1, o2) -> o1[1] - o2[1]); + int missile = 0; // 요격 미사일의 좌표 + for (int i = 0; i < targets.length; i++) { + // 개구간 이기 때문에 등호 + // 해당 요격미사일로 요격할 수 있는지 + if (missile <= targets[i][0]) { + answer++; + // 가장 늦게 격추하는 것이 효율적이므로 마지막 값으로 갱신 + missile = targets[i][1]; + } + } + return answer; + } +} \ No newline at end of file From 2077a9a7eddb643957ff64e633b1146a5a9ad604 Mon Sep 17 00:00:00 2001 From: Jewan1120 Date: 2024年11月15日 20:04:36 +0900 Subject: [PATCH 07/10] =?UTF-8?q?=EB=B0=B1=EC=A0=9C=EC=99=84:=20[PG]=20181?= =?UTF-8?q?188=20=EC=9A=94=EA=B2=A9=20=EC=8B=9C=EC=8A=A4=ED=85=9C=5F241115?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Programmers/{Level3 => Level2}/JW_181188.java | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename Programmers/{Level3 => Level2}/JW_181188.java (100%) diff --git a/Programmers/Level3/JW_181188.java b/Programmers/Level2/JW_181188.java similarity index 100% rename from Programmers/Level3/JW_181188.java rename to Programmers/Level2/JW_181188.java From 3a03a9c00d1729e2886e783a619f1f3383a15350 Mon Sep 17 00:00:00 2001 From: Jewan1120 Date: 2024年11月15日 20:10:55 +0900 Subject: [PATCH 08/10] =?UTF-8?q?=EB=B0=B1=EC=A0=9C=EC=99=84:=20[PG]=20428?= =?UTF-8?q?84=20=EB=8B=A8=EC=86=8D=EC=B9=B4=EB=A9=94=EB=9D=BC=5F241115?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Programmers/Level3/JW_42884.java | 15 +++++++++++++++ 1 file changed, 15 insertions(+) create mode 100644 Programmers/Level3/JW_42884.java diff --git a/Programmers/Level3/JW_42884.java b/Programmers/Level3/JW_42884.java new file mode 100644 index 00000000..b719a36e --- /dev/null +++ b/Programmers/Level3/JW_42884.java @@ -0,0 +1,15 @@ +import java.util.Arrays; +class JW_42884 { + public int solution(int[][] routes) { + int answer = 0; + Arrays.sort(routes, (o1, o2) -> o1[1] - o2[1]); + int camera = Integer.MIN_VALUE; + for (int i = 0; i < routes.length; i++) { + if (camera < routes[i][0]) { + answer++; + camera = routes[i][1]; + } + } + return answer; + } +} \ No newline at end of file From 0f1b29062548ac463bbbb099c3766ab720c3ae23 Mon Sep 17 00:00:00 2001 From: Jewan1120 Date: 2024年11月16日 03:12:26 +0900 Subject: [PATCH 09/10] =?UTF-8?q?=EB=B0=B1=EC=A0=9C=EC=99=84:=20[SQL]=20In?= =?UTF-8?q?vestments=20in=202016=5F241112?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../JW_Investments_in_2016.sql" | 15 +++++++++++++++ 1 file changed, 15 insertions(+) create mode 100644 "SQL/10354円243円274円354円260円250円/JW_Investments_in_2016.sql" diff --git "a/SQL/10354円243円274円354円260円250円/JW_Investments_in_2016.sql" "b/SQL/10354円243円274円354円260円250円/JW_Investments_in_2016.sql" new file mode 100644 index 00000000..a99815f9 --- /dev/null +++ "b/SQL/10354円243円274円354円260円250円/JW_Investments_in_2016.sql" @@ -0,0 +1,15 @@ +SELECT + ROUND(SUM(tiv_2016), 2) AS tiv_2016 +FROM Insurance +WHERE tiv_2015 IN ( + SELECT tiv_2015 + FROM Insurance + GROUP BY tiv_2015 + HAVING COUNT(pid)> 1 +) +AND (lat, lon) IN ( + SELECT lat, lon + FROM Insurance + GROUP BY lat, lon + HAVING COUNT(pid) = 1 +) \ No newline at end of file From 113d9600dd253dfef14f6b17d58835818bea0129 Mon Sep 17 00:00:00 2001 From: Jewan1120 Date: 2024年11月16日 04:35:36 +0900 Subject: [PATCH 10/10] =?UTF-8?q?=EB=B0=B1=EC=A0=9C=EC=99=84:=20[SQL]=20?= =?UTF-8?q?=EC=98=A4=ED=94=84=EB=9D=BC=EC=9D=B8/=EC=98=A8=EB=9D=BC?= =?UTF-8?q?=EC=9D=B8=20=ED=8C=90=EB=A7=A4=20=EB=8D=B0=EC=9D=B4=ED=84=B0=20?= =?UTF-8?q?=ED=86=B5=ED=95=A9=ED=95=98=EA=B8=B0=5F241114?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...355円225円251円355円225円230円352円270円260円_.sql" | 23 +++++++++++++++++++ 1 file changed, 23 insertions(+) create mode 100644 "SQL/10354円243円274円354円260円250円/JW_354円230円244円355円224円204円353円235円274円354円235円270円_354円230円250円353円235円274円354円235円270円 355円214円220円353円247円244円 353円215円260円354円235円264円355円204円260円 355円206円265円355円225円251円355円225円230円352円270円260円_.sql" diff --git "a/SQL/10354円243円274円354円260円250円/JW_354円230円244円355円224円204円353円235円274円354円235円270円_354円230円250円353円235円274円354円235円270円 355円214円220円353円247円244円 353円215円260円354円235円264円355円204円260円 355円206円265円355円225円251円355円225円230円352円270円260円_.sql" "b/SQL/10354円243円274円354円260円250円/JW_354円230円244円355円224円204円353円235円274円354円235円270円_354円230円250円353円235円274円354円235円270円 355円214円220円353円247円244円 353円215円260円354円235円264円355円204円260円 355円206円265円355円225円251円355円225円230円352円270円260円_.sql" new file mode 100644 index 00000000..a5bc078a --- /dev/null +++ "b/SQL/10354円243円274円354円260円250円/JW_354円230円244円355円224円204円353円235円274円354円235円270円_354円230円250円353円235円274円354円235円270円 355円214円220円353円247円244円 353円215円260円354円235円264円355円204円260円 355円206円265円355円225円251円355円225円230円352円270円260円_.sql" @@ -0,0 +1,23 @@ +SELECT + DATE_FORMAT(SALES_DATE, "%Y-%m-%d") SALES_DATE, + PRODUCT_ID, + USER_ID, + SALES_AMOUNT +FROM + ONLINE_SALE +WHERE + SALES_DATE LIKE '2022-03%' +UNION ALL +SELECT + DATE_FORMAT(SALES_DATE, "%Y-%m-%d") SALES_DATE, + PRODUCT_ID, + NULL, + SALES_AMOUNT +FROM + OFFLINE_SALE +WHERE + SALES_DATE LIKE '2022-03%' +ORDER BY + SALES_DATE, + PRODUCT_ID, + USER_ID \ No newline at end of file

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