알고리즘
-
[백준]2023. 신기한 소수 (Java)알고리즘/백준 2021. 8. 23. 18:42
💡 문제 분석 /** * # 계획 * 1. N = 8이니까 8!, 시간 충분 * 2. 1자리부터 N자리까지 하나씩 숫자 붙여가면서 소수인지 확인 * 3. N자리까지 전부 소수였으면 출력 */ ⌨️ 코드 JAVA import java.util.Scanner; public class Q2023 { static int N; public static void main(String[] args){ Scanner sc = new Scanner(System.in); N = sc.nextInt(); for(int i = 1; i < 10; i++) { if(isPrime(i)) solve(i, 1); } } public static void solve(int cur, int cnt) { if(cnt == N) { Sy..
-
[백준]1915. 가장 큰 정사각형 (Java)알고리즘/백준 2021. 8. 23. 18:41
💡 문제 분석 /** * 정사각형이 되려면 * 1 1 * 1 1 -> 이렇게 되야됨, (1, 1) 좌표 기준으로 (0, 0), (0, 1), (1, 0)의 최소값을 (1, 1)에 더한 값이 최대 정사각형의 한 변의 길이가 됨 * * 1 1 1 * 1 1 1 * 1 1 1 -> 이 경우에 위의 공식으로 하면 * * 1 1 1 * 1 2 2 * 1 2 3 -> 최대 길이 3, 넓이는 3 * 3 = 9 * **/ ⌨️ 코드 JAVA import java.util.Arrays; import java.util.Scanner; public class Q1915 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int N =..
-
[백준]1759. 암호 만들기 (Java)알고리즘/백준 2021. 8. 23. 18:41
💡 문제 분석 /** * # 계획 * 1. 최소 모음이 한 개, 자음이 두 개 * 2. 정렬된 순서대로 나열 */ ⌨️ 코드 JAVA import java.util.Arrays; import java.util.HashSet; import java.util.Scanner; public class Q1759 { static int L, C; static HashSet moum = new HashSet(); static Character[] arr, pick; public static void main(String[] args){ Scanner sc = new Scanner(System.in); L = sc.nextInt(); C = sc.nextInt(); moum.add('a'); moum...
-
[백준]1756. 피자 굽기 (Java)알고리즘/백준 2021. 8. 23. 18:41
💡 문제 분석 /** * # 계획 * 1. 오븐 지름 배열을 만들 때, 현재 깊이까지 올 수 있는 최대 반죽 지름으로 설정 * ex) 5 6 4 3 6 2 3이라면 두번 째 6은 어차피 5에 걸려서 못들어옴. 그리고 다섯번 째 6도 앞의 3에 걸려서 들어올 수 없다 * 변경한 배열) 5 5 4 3 3 2 2 * 2. 오븐 지름 배열을 변경한 상태에서, 피자 반죽이 들어올 때 오븐 맨밑에서부터 가능한 깊이부터 채워나간다 */ ⌨️ 코드 JAVA import java.util.Scanner; public class Q1756 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int D = sc.nextInt(); i..
-
[백준]1753. 최단경로 (Java)알고리즘/백준 2021. 8. 23. 18:41
💡 문제 분석 /** * # 계획 * 1. 시작점이 주어지고, 다른 모든 정점으로의 최단경로를 구하면 되기 때문에 다익스트라를 사용한다 */ ⌨️ 코드 JAVA import java.util.*; public class Q1753 { static int V, E; static List[] adj; static final int INF = 300000; public static void main(String[] args) { Scanner sc = new Scanner(System.in); V = sc.nextInt(); E = sc.nextInt(); int s = sc.nextInt(); adj = new List[V + 1]; for(int i = 1; i dist[cur.to]) continue; ..
-
[백준]1599. 민식어 (Java)알고리즘/백준 2021. 8. 23. 18:41
💡 문제 분석 /** * # 계획 * 1. k를 c로 바꾸고 시작한다 * 2. ng를 'n~'로 바꾼다 * 3. 알파벳 순서대로 정렬 * 4. 바꾼 문자를 원래대로 복구 */ ⌨️ 코드 JAVA import java.util.Scanner; import java.util.stream.IntStream; public class Q1599 { public static void main(String[] args){ Scanner sc = new Scanner(System.in); int N = sc.nextInt(); IntStream.range(0, N) .mapToObj(i -> sc.next().replace("k", "c").replace("ng", "n~")) .sorted() .map..
-
[백준]1068. 트리(Java)알고리즘/백준 2021. 8. 23. 18:41
💡 문제 분석 /** * 1. 각 노드의 부모를 알고 있기 때문에, 부모 노드에서 자식 노드로 갈 수 있는 방향 그래프를 만들자 * 2. 루트에서 bfs or dfs를 하면서, 지울 노드의 번호가 나오면 break; * 3. 자식 노드가 없다면 리프 노드이므로 카운트 * % 노드를 지웠을 때 부모 노드가 리프노드가 될 경우를 카운트하자 */ ⌨️ 코드 JAVA import java.util.*; public class Q1068 { static int N, root, delete; static List[] adj; public static void main(String[] args){ Scanner sc = new Scanner(System.in); N = sc.nextInt(); adj = new Li..
-
[백준]1107. 리모컨 (Java)알고리즘/백준 2021. 8. 23. 18:41
💡 문제 분석 /** * # 계획 * 1. (고장나지 않은 버튼들로 만들 수 있는 채널들 - 목표 채널)의 최솟값 * 2. 목표 채널은 50000 이하이므로 6자리수까지 만들어보면 될 듯, 6! */ ⌨️ 코드 JAVA import java.util.Scanner; public class Q1107 { static boolean[] chk; // 고장난 버튼 체크, false면 고장 안난 거, true가 고장난 거 static int ret, N, M; public static void main(String[] args){ Scanner sc = new Scanner(System.in); N = sc.nextInt(); M = sc.nextInt(); chk = new boolean[10]; for(in..