From 94c5b276e3ee75902d4623ba26208d9365e9f53a Mon Sep 17 00:00:00 2001 From: skydreamer21 Date: Mon, 7 Nov 2022 16:38:58 +0900 Subject: [PATCH 1/4] =?UTF-8?q?[Refactor]=20temp=20=ED=8C=8C=EC=9D=BC=20?= =?UTF-8?q?=EC=82=AD=EC=A0=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- "2022/[Week29 - Mix]/\352\271\200\354\243\274\355\230\204/temp" | 0 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 "2022/[Week29 - Mix]/\352\271\200\354\243\274\355\230\204/temp" diff --git "a/2022/[Week29 - Mix]/\352\271\200\354\243\274\355\230\204/temp" "b/2022/[Week29 - Mix]/\352\271\200\354\243\274\355\230\204/temp" deleted file mode 100644 index e69de29..0000000 From 9273a7393d27bb53816a99e0120a6ad16ff60b72 Mon Sep 17 00:00:00 2001 From: skydreamer21 Date: Mon, 7 Nov 2022 16:48:53 +0900 Subject: [PATCH 2/4] =?UTF-8?q?[Solve]=20Q2212=20-=20=EC=84=BC=EC=84=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Q2212.java" | 60 +++++++++++++++++++ 1 file changed, 60 insertions(+) create mode 100644 "2022/[Week29 - Mix]/\352\271\200\354\243\274\355\230\204/Q2212.java" diff --git "a/2022/[Week29 - Mix]/\352\271\200\354\243\274\355\230\204/Q2212.java" "b/2022/[Week29 - Mix]/\352\271\200\354\243\274\355\230\204/Q2212.java" new file mode 100644 index 0000000..7bf2879 --- /dev/null +++ "b/2022/[Week29 - Mix]/\352\271\200\354\243\274\355\230\204/Q2212.java" @@ -0,0 +1,60 @@ +// 2212번 센서 (G5) [정렬] +/* +<문제 정보> + 1. + +<변수 범위> + 1. + +<프로그램 진행> + 1. + +<필요 함수> + 1. + + */ + + +import java.io.*; +import java.util.Arrays; +import java.util.Collections; +import java.util.StringTokenizer; + +public class Q2212 { + + public static void main(String args[]) throws IOException { + BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); + BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out)); + StringBuilder sb = new StringBuilder(); + StringTokenizer st; + + // ******************** 입력 & 초기화 ******************** + int N = Integer.parseInt(br.readLine()); + int K = Integer.parseInt(br.readLine()); + int[] sensors = new int[N]; + st = new StringTokenizer(br.readLine()); + for (int i=0; i Date: Mon, 7 Nov 2022 16:49:42 +0900 Subject: [PATCH 3/4] =?UTF-8?q?[Solve]=20Q2668=20-=20=EC=88=AB=EC=9E=90=20?= =?UTF-8?q?=EA=B3=A0=EB=A5=B4=EA=B8=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Q2668.java" | 86 +++++++++++++++++++ 1 file changed, 86 insertions(+) create mode 100644 "2022/[Week29 - Mix]/\352\271\200\354\243\274\355\230\204/Q2668.java" diff --git "a/2022/[Week29 - Mix]/\352\271\200\354\243\274\355\230\204/Q2668.java" "b/2022/[Week29 - Mix]/\352\271\200\354\243\274\355\230\204/Q2668.java" new file mode 100644 index 0000000..0bd6464 --- /dev/null +++ "b/2022/[Week29 - Mix]/\352\271\200\354\243\274\355\230\204/Q2668.java" @@ -0,0 +1,86 @@ +// 2668번 숫자 고르기 (G5) [그리디] +/* +<문제 정보> + 1. + +<변수 범위> + 1. + +<프로그램 진행> + 1. + +<필요 함수> + 1. + + */ + + +import java.io.*; +import java.util.*; + +public class Q2668 { + static int N; + static int[] arr; + static boolean[] visited; + static int answer = 0; + + public static void main(String args[]) throws IOException { + BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); + BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out)); + StringBuilder sb = new StringBuilder(); + StringTokenizer st; + + // ******************** 입력 & 초기화 ******************** + N = Integer.parseInt(br.readLine()); + arr = new int[N+1]; + for (int i=1; i<=N; i++) { + arr[i] = Integer.parseInt(br.readLine()); + } + + // ******************** 메인 로직 ******************** + visited = new boolean[N+1]; + for (int i=1; i<=N; i++) { + if (!visited[i]) { + search(i); + } + } + + // ******************** 정답 출력 ******************** + sb.append(answer).append("\n"); + for (int i=1; i<=N; i++) { + if (visited[i]) sb.append(i).append("\n"); + } + + bw.write(sb.toString()); + bw.flush(); + bw.close(); + br.close(); + } + + public static void search (int n) { + int start = n; + int end = 0; + Set visitList = new HashSet<>(); + boolean isOriginalPoint = false; + + while ( !isOriginalPoint ) { + end = arr[start]; + if ( visited[end] || visitList.contains(end) ) break; + visitList.add(end); + if (end == n) { + isOriginalPoint = true; + } else if ( start == end) { + break; + } else { + start = end; + } + } + + if (isOriginalPoint) { + answer += visitList.size(); + for (int point : visitList) { + visited[point] = true; + } + } + } +} From e609d79dca4a622e096454fb9d35d4d77b3df9d2 Mon Sep 17 00:00:00 2001 From: skydreamer21 Date: Mon, 7 Nov 2022 22:21:09 +0900 Subject: [PATCH 4/4] =?UTF-8?q?[Solve]=20Q1987=20-=20=EC=95=8C=ED=8C=8C?= =?UTF-8?q?=EB=B2=B3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Q1987.java" | 89 +++++++++++++++++++ 1 file changed, 89 insertions(+) create mode 100644 "2022/[Week29 - Mix]/\352\271\200\354\243\274\355\230\204/Q1987.java" diff --git "a/2022/[Week29 - Mix]/\352\271\200\354\243\274\355\230\204/Q1987.java" "b/2022/[Week29 - Mix]/\352\271\200\354\243\274\355\230\204/Q1987.java" new file mode 100644 index 0000000..4665d93 --- /dev/null +++ "b/2022/[Week29 - Mix]/\352\271\200\354\243\274\355\230\204/Q1987.java" @@ -0,0 +1,89 @@ +// 1987번 알파벳 (G4) [백트래킹] +/* +<문제 정보> + 1. + +<변수 범위> + 1. + +<프로그램 진행> + 1. + +<필요 함수> + 1. + + */ + + +import java.io.*; +import java.util.HashSet; +import java.util.Set; +import java.util.StringTokenizer; + +public class Q1987 { + static int N; + static int M; + static int answer = -1; + static char[][] map; + static boolean[] visitedAlphabet = new boolean[26]; + + static int[][] DIR = {{1,0}, {0,1}, {-1,0}, {0,-1}}; + + public static void main(String args[]) throws IOException { + BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); + BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out)); + StringBuilder sb = new StringBuilder(); + StringTokenizer st; + + // ******************** 입력 & 초기화 ******************** + st = new StringTokenizer(br.readLine()); + N = Integer.parseInt(st.nextToken()); + M = Integer.parseInt(st.nextToken()); + map = new char[N][M]; + for (int i=0; i= 0 && nextY >=0 && nextX < N && nextY < M; + if (inRange && !visitedAlphabet[alphabetToIndex(map[nextX][nextY])]) { + int alphabetIndex = alphabetToIndex(map[nextX][nextY]); + hasPossibleRoad = true; + visitedAlphabet[alphabetIndex] = true; + dfs(depth+1, nextX, nextY); + visitedAlphabet[alphabetIndex] = false; + } + } + + if (!hasPossibleRoad) { + answer = Math.max(answer, depth); +// System.out.printf("[OUT - No Path] depth : %d, x : %d, y : %d Alphabet : %c \n", depth, x, y, map[x][y]); + return; + } +// System.out.printf("[OUT - All Searched] depth : %d, x : %d, y : %d Alphabet : %c \n", depth, x, y, map[x][y]); + } + + public static int alphabetToIndex (char alphabet) { + return alphabet - 'A'; + } +}