diff --git a/week2/.idea/.gitignore b/week2/.idea/.gitignore new file mode 100644 index 00000000..13566b81 --- /dev/null +++ b/week2/.idea/.gitignore @@ -0,0 +1,8 @@ +# Default ignored files +/shelf/ +/workspace.xml +# Editor-based HTTP Client requests +/httpRequests/ +# Datasource local storage ignored files +/dataSources/ +/dataSources.local.xml diff --git a/week2/.idea/git_toolbox_blame.xml b/week2/.idea/git_toolbox_blame.xml new file mode 100644 index 00000000..7dc12496 --- /dev/null +++ b/week2/.idea/git_toolbox_blame.xml @@ -0,0 +1,6 @@ + + + + + \ No newline at end of file diff --git a/week2/.idea/material_theme_project_new.xml b/week2/.idea/material_theme_project_new.xml new file mode 100644 index 00000000..0acefebe --- /dev/null +++ b/week2/.idea/material_theme_project_new.xml @@ -0,0 +1,10 @@ + + + + + + \ No newline at end of file diff --git a/week2/.idea/misc.xml b/week2/.idea/misc.xml new file mode 100644 index 00000000..31e1ebce --- /dev/null +++ b/week2/.idea/misc.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/week2/.idea/modules.xml b/week2/.idea/modules.xml new file mode 100644 index 00000000..11a061b8 --- /dev/null +++ b/week2/.idea/modules.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/week2/.idea/vcs.xml b/week2/.idea/vcs.xml new file mode 100644 index 00000000..6c0b8635 --- /dev/null +++ b/week2/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/week2/.idea/week2.iml b/week2/.idea/week2.iml new file mode 100644 index 00000000..37cf0eb4 --- /dev/null +++ b/week2/.idea/week2.iml @@ -0,0 +1,11 @@ + + + + + + + + + + + \ No newline at end of file diff --git "a/week2/dynamic_programming/\353\217\214\352\262\214\354\236\204/dlwldn30/Main.java" "b/week2/dynamic_programming/\353\217\214\352\262\214\354\236\204/dlwldn30/Main.java" new file mode 100644 index 00000000..3a4225d2 --- /dev/null +++ "b/week2/dynamic_programming/\353\217\214\352\262\214\354\236\204/dlwldn30/Main.java" @@ -0,0 +1,20 @@ +package 돌게임.dlwldn30; + +import java.io.BufferedReader; +import java.io.IOException; +import java.io.InputStreamReader; + +public class Main { + public static void main(String[] args) throws IOException { + BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); + + int N = Integer.parseInt(br.readLine()); + + if(N%2==0){ + System.out.println("CY"); + } + else { + System.out.println("SK"); + } + } +} diff --git "a/week2/dynamic_programming/\354\204\240\354\210\230\352\263\274\353\252\251/dlwldn30/Main.java" "b/week2/dynamic_programming/\354\204\240\354\210\230\352\263\274\353\252\251/dlwldn30/Main.java" new file mode 100644 index 00000000..4b81620f --- /dev/null +++ "b/week2/dynamic_programming/\354\204\240\354\210\230\352\263\274\353\252\251/dlwldn30/Main.java" @@ -0,0 +1,14 @@ +package 선수과목.dlwldn30; + +import java.io.BufferedReader; +import java.io.IOException; +import java.io.InputStreamReader; + +public class Main { + 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()); + } +} diff --git "a/week2/dynamic_programming/\355\225\251\353\266\204\355\225\264/dlwldn30/Main.java" "b/week2/dynamic_programming/\355\225\251\353\266\204\355\225\264/dlwldn30/Main.java" new file mode 100644 index 00000000..1d123b1b --- /dev/null +++ "b/week2/dynamic_programming/\355\225\251\353\266\204\355\225\264/dlwldn30/Main.java" @@ -0,0 +1,28 @@ +package 합분해.dlwldn30; + +import java.io.BufferedReader; +import java.io.IOException; +import java.io.InputStreamReader; + +public class Main { + public static void main(String[] args) throws IOException { + BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); + + int N = Integer.parseInt(br.readLine()); + int K = Integer.parseInt(br.readLine()); + + int[][] dp= new int[K+1][N+1]; + + for (int i = 0; i <= N; i++){ + dp[1][i] = 1; + } + + for (int i = 2; i <= K; i++){ + for (int n = 0; n <= N; n++){ + dp[i][n] = (dp[i][n-1] + dp[i-1][n]) % 1000000000; + } + } + System.out.println(dp[K][N]); + } + +} diff --git a/week2/out/production/week2/README.md b/week2/out/production/week2/README.md new file mode 100644 index 00000000..3f5a6668 --- /dev/null +++ b/week2/out/production/week2/README.md @@ -0,0 +1,82 @@ +# Dynamic Programming 1 (동적계획법 1) + +[메인으로 돌아가기](https://github.com/Alom-codingTest/alom-codingTest-25-1) + +다이나믹 프로그래밍 유형 쉬운 문제 위주로 뽑았습니다. +다이나믹 프로그래밍은 점화식을 세우면 절반 이상은 풀었다고 볼 수 있습니다. +점화식 세우는 건 금방 익히기 힘들어 코딩테스트에 나올만한 문제들, +다이나믹 프로그래밍을 공부할만한 문제들을 최대한 뽑았습니다. + +| 순번 | 문제 번호 | 문제 이름 | 난이도 | +|:---:|:-------------------------------------------------------------------------:|:---------------------------------------------------------------------------------------------:|:----------------------------------------------------------------------------------:| +| 000 | 10870 | 피보나치 수 5 | | +| 001 | 2748 | 피보나치 수 2 | | +| 002 | 1010 | 다리 놓기 | | +| 003 | 9655 | 돌 게임 | | +| 004 | 2839 | 설탕 배달 | | +| 005 | 1463 | 1로 만들기 | | +| 006 | 2579 | 계단 오르기 | | +| 007 | 11726 | 2×n 타일링 | | +| 008 | 2407 | 조합 | | +| 009 | 17626 | Four Squares | | +| 010 | 11727 | 2×n 타일링 2 | | +| 011 | 9095 | 1, 2, 3 더하기 | | +| 012 | 1912 | 연속합 | | +| 013 | 11053 | 가장 긴 증가하는 부분 수열 | | +| 014 | 22857 | 가장 긴 짝수 연속한 부분 수열 (small) | | +| 015 | 11055 | 가장 큰 증가하는 부분 수열 | | +| 016 | 21317 | 징검다리 건너기 | | +| 017 | 10844 | 쉬운 계단 수 | | +| 018 | 1890 | 점프 | | +| 019 | 2156 | 포도주 시식 | | +| 020 | 22869 | 징검다리 건너기 (small) | | +| 021 | 11660 | 구간 합 구하기 5 | | +| 022 | 9465 | 스티커 | | +| 023 | 2294 | 동전 2 | | +| 024 | 15486 | 퇴사 2 | | +| 025 | 1106 | 호텔 | | +| 026 | 2293 | 동전 1 | | + +# Dynamic Programming 2 (동적계획법 2) + +[메인으로 돌아가기](https://github.com/Alom-codingTest/alom-codingTest-25-1) + +다이나믹 프로그래밍 유형 문제 위주로 뽑았습니다. + +다이나믹 프로그래밍은 점화식을 세우면 절반 이상은 풀었다고 볼 수 있습니다. + +점화식 세우는 건 금방 익히기 힘들어 코딩테스트에 나올만한 문제들, +다이나믹 프로그래밍을 공부할만한 문제들을 최대한 뽑았습니다. + +풀어보면 좋을 문제는 추천 문제에 체크(:heavy_check_mark:) 해놨습니다. + +| 순번 | 문제 번호 | 문제 이름 | 난이도 | +|:---:|:-------------------------------------------------------------------------:|:---------------------------------------------------------------------------------------:|:----------------------------------------------------------------------------------:| +| 000 | 15724 | 주지수 | || +| 001 | 12865 | 평범한 배낭 | || +| 002 | 9251 | LCS | |바로 가기| +| 003 | 2225 | 합분해 | || +| 004 | 5557 | 1학년 | |바로 가기| +| 005 | 17485 | 진우의 달 여행 (Large) | |바로 가기| +| 006 | 14567 | 선수과목 (Prerequisite) | |바로 가기| +| 007 | 9084 | 동전 | || +| 008 | 2758 | 로또 | || +| 009 | 1915 | 가장 큰 정사각형 | || +| 010 | 10942 | 팰린드롬? | || +| 011 | 2073 | 수도배관공사 | || +| 012 | 18427 | 함께 블록 쌓기 | |바로 가기| +| 013 | 2056 | 작업 | || +| 014 | 21941 | 문자열 제거 | || +| 015 | 21923 | 곡예 비행 | |바로 가기| +| 016 | 2624 | 동전 바꿔주기 | || +| 017 | 2631 | 줄세우기 | || +| 018 | 1520 | 내리막 길 | |바로 가기| +| 019 | 2228 | 구간 나누기 | || +| 020 | 1005 | ACM Craft | |바로 가기| +| 021 | 2629 | 양팔저울 | || +| 022 | 1695 | 팰린드롬 만들기 | || +| 023 | 11049 | 행렬 곱셈 순서 | || +| 024 | 1823 | 수확 | || +| 025 | 20542 | 받아쓰기 | || +| 026 | 3687 | 성냥개비 | |바로 가기| +| 027 | 20181 | 꿈틀꿈틀 호석 애벌레 - 효율성 | || \ No newline at end of file diff --git "a/week2/out/production/week2/\353\217\214\352\262\214\354\236\204/dlwldn30/Main.class" "b/week2/out/production/week2/\353\217\214\352\262\214\354\236\204/dlwldn30/Main.class" new file mode 100644 index 00000000..3e99a8d5 Binary files /dev/null and "b/week2/out/production/week2/\353\217\214\352\262\214\354\236\204/dlwldn30/Main.class" differ diff --git a/week3/.idea/.gitignore b/week3/.idea/.gitignore new file mode 100644 index 00000000..13566b81 --- /dev/null +++ b/week3/.idea/.gitignore @@ -0,0 +1,8 @@ +# Default ignored files +/shelf/ +/workspace.xml +# Editor-based HTTP Client requests +/httpRequests/ +# Datasource local storage ignored files +/dataSources/ +/dataSources.local.xml diff --git a/week3/.idea/material_theme_project_new.xml b/week3/.idea/material_theme_project_new.xml new file mode 100644 index 00000000..7c10705f --- /dev/null +++ b/week3/.idea/material_theme_project_new.xml @@ -0,0 +1,10 @@ + + + + + + \ No newline at end of file diff --git a/week3/.idea/vcs.xml b/week3/.idea/vcs.xml new file mode 100644 index 00000000..d843f340 --- /dev/null +++ b/week3/.idea/vcs.xml @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git "a/week3/backtracking/N\352\263\274M_6/dlwldn30/Main.java" "b/week3/backtracking/N\352\263\274M_6/dlwldn30/Main.java" new file mode 100644 index 00000000..09478d08 --- /dev/null +++ "b/week3/backtracking/N\352\263\274M_6/dlwldn30/Main.java" @@ -0,0 +1,49 @@ +package N과M_6.dlwldn30; + +import java.io.*; +import java.util.*; + +public class Main { + static int N, M; + static int[] arr; + static List output = new ArrayList<>(); + static StringBuilder sb = new StringBuilder(); + 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()); + + arr = new int[N]; + st = new StringTokenizer(br.readLine()); + for (int i = 0; i < N; i++) { + arr[i] = Integer.parseInt(st.nextToken()); + } + + Arrays.sort(arr); // 사전순 출력을 위해 정렬 + + solve(0, 0); + + System.out.print(sb); + } + + static void solve(int start, int depth) { + if (depth == M) { + for (int num : output) { + sb.append(num).append(' '); + } + sb.append('\n'); + return; + } + + for (int i = start; i < N; i++) { + output.add(arr[i]); + solve(i + 1, depth + 1); + output.remove(output.size() - 1); + } + } +} + + diff --git "a/week3/brute_force/\353\270\224\353\236\231\354\236\255/dlwldn30/Main.java" "b/week3/brute_force/\353\270\224\353\236\231\354\236\255/dlwldn30/Main.java" new file mode 100644 index 00000000..13638460 --- /dev/null +++ "b/week3/brute_force/\353\270\224\353\236\231\354\236\255/dlwldn30/Main.java" @@ -0,0 +1,38 @@ +package 블랙잭.dlwldn30; + +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 = new StringTokenizer(br.readLine()); + + int N = Integer.parseInt(st.nextToken()); + int M = Integer.parseInt(st.nextToken()); + int max = 0; + + int[] cards = new int[N]; + st = new StringTokenizer(br.readLine()); + + for (int i = 0; i < N; i++) { + cards[i] = Integer.parseInt(st.nextToken()); + } + + for (int i = 0; i < N - 2; i++) { + for (int j = i + 1; j < N - 1; j++) { + for (int k = j + 1; k < N; k++) { + int sum = cards[i] + cards[j] + cards[k]; + if (sum <= M) { + max = Math.max(max, sum); + } + } + } + } + + System.out.println(max); + } +} diff --git "a/week3/brute_force/\354\240\234\352\263\261\354\210\230\354\260\276\352\270\260/dlwldn30/Main.java" "b/week3/brute_force/\354\240\234\352\263\261\354\210\230\354\260\276\352\270\260/dlwldn30/Main.java" new file mode 100644 index 00000000..d882277e --- /dev/null +++ "b/week3/brute_force/\354\240\234\352\263\261\354\210\230\354\260\276\352\270\260/dlwldn30/Main.java" @@ -0,0 +1,4 @@ +package 제곱수찾기.dlwldn30; + +public class Main { +} diff --git a/week6/.idea/.gitignore b/week6/.idea/.gitignore new file mode 100644 index 00000000..13566b81 --- /dev/null +++ b/week6/.idea/.gitignore @@ -0,0 +1,8 @@ +# Default ignored files +/shelf/ +/workspace.xml +# Editor-based HTTP Client requests +/httpRequests/ +# Datasource local storage ignored files +/dataSources/ +/dataSources.local.xml diff --git a/week6/.idea/git_toolbox_blame.xml b/week6/.idea/git_toolbox_blame.xml new file mode 100644 index 00000000..7dc12496 --- /dev/null +++ b/week6/.idea/git_toolbox_blame.xml @@ -0,0 +1,6 @@ + + + + + \ No newline at end of file diff --git a/week6/.idea/material_theme_project_new.xml b/week6/.idea/material_theme_project_new.xml new file mode 100644 index 00000000..e5402825 --- /dev/null +++ b/week6/.idea/material_theme_project_new.xml @@ -0,0 +1,12 @@ + + + + + + \ No newline at end of file diff --git a/week6/.idea/misc.xml b/week6/.idea/misc.xml new file mode 100644 index 00000000..31e1ebce --- /dev/null +++ b/week6/.idea/misc.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/week6/.idea/modules.xml b/week6/.idea/modules.xml new file mode 100644 index 00000000..9b9bc1f4 --- /dev/null +++ b/week6/.idea/modules.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/week6/.idea/vcs.xml b/week6/.idea/vcs.xml new file mode 100644 index 00000000..6c0b8635 --- /dev/null +++ b/week6/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/week6/.idea/week6.iml b/week6/.idea/week6.iml new file mode 100644 index 00000000..c32c293b --- /dev/null +++ b/week6/.idea/week6.iml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git "a/week6/topological_sorting/\354\204\240\354\210\230\352\263\274\353\252\251/dlwldn30/Main.java" "b/week6/topological_sorting/\354\204\240\354\210\230\352\263\274\353\252\251/dlwldn30/Main.java" new file mode 100644 index 00000000..5b73d836 --- /dev/null +++ "b/week6/topological_sorting/\354\204\240\354\210\230\352\263\274\353\252\251/dlwldn30/Main.java" @@ -0,0 +1,67 @@ +package 선수과목.dlwldn30; + +import java.io.BufferedReader; +import java.io.IOException; +import java.io.InputStreamReader; +import java.util.*; + +public class Main { + + 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()); // 선수 조건 수 + + int[] degree = new int[n+1]; // 선수 과목들 수 + int[] semester = new int[n+1]; + + List> array = new ArrayList>(); + for (int i = 0; i <=n; i++) { + array.add(new ArrayList<>()); + } + + for (int i = 0; i queue = new LinkedList<>(); + + + //선수 과목 없는 것들 + for (int i = 1; i<= n; i++){ + if (degree[i] == 0){ + queue.add(i); + semester[i] = 1; + } + } + + while (!queue.isEmpty()){ + int cur = queue.poll(); // 선수과목에서 처음부터 차근차근 + for (int i : array.get(cur)){ // 얘랑 연결된 과목 + degree[i]--; + if (semester[i] <= semester[cur]){ + semester[i] = semester[cur]+1; + } + if(degree[i] == 0){ + queue.add(i); + } + } + } + // 결과 출력 + StringBuilder sb = new StringBuilder(); + for (int i = 1; i <= n; i++) { + sb.append(semester[i]).append(" "); + } + + System.out.println(sb.toString()); + + } + + +} diff --git "a/week6/topological_sorting/\354\244\204\354\204\270\354\232\260\352\270\260/dlwldn30/Main.java" "b/week6/topological_sorting/\354\244\204\354\204\270\354\232\260\352\270\260/dlwldn30/Main.java" new file mode 100644 index 00000000..d1aa6724 --- /dev/null +++ "b/week6/topological_sorting/\354\244\204\354\204\270\354\232\260\352\270\260/dlwldn30/Main.java" @@ -0,0 +1,56 @@ +package dlwldn30; + +import java.io.BufferedReader; +import java.io.IOException; +import java.io.InputStreamReader; +import java.util.*; + +public class Main { + 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()); // 선수 조건 수 + + List> array= new ArrayList<>(); + int[]order = new int[n+1]; + + for (int i = 0; i <= n; i++) { + array.add(new ArrayList<>()); + } + + + for (int i = 0; i < n; i++) { + st = new StringTokenizer(br.readLine()); + int a = Integer.parseInt(st.nextToken()); + int b = Integer.parseInt(st.nextToken()); + array.get(a).add(b); // A → B + order[b]++; // B의 진입차수 증가 + } + + // 위상 정렬 + Queue queue = new LinkedList<>(); + for (int i = 1; i <= n; i++) { + if (order[i] == 0) { + queue.offer(i); + } + } + + StringBuilder sb = new StringBuilder(); + + while (!queue.isEmpty()) { + int cur = queue.poll(); + sb.append(cur).append(" "); + + for (int next : array.get(cur)) { + order[next]--; + if (order[next] == 0) { + queue.offer(next); + } + } + } + + System.out.println(sb.toString().trim()); + } +}