본문 바로가기

알고리즘/JAVA56

dynamic programming(동적계획법) 1. 계단오르기 import java.util.*; class Main { static int n, answer = 0; public void DFS(int sum) { if (sum > n) return; if (sum == n) { answer++; return; } else { DFS(sum + 1); DFS(sum + 2); } } public int solution() { DFS(0); return answer; } public static void main(String[] args) { Main T = new Main(); Scanner kb = new Scanner(System.in); n = kb.nextInt(); System.out.print(T.solution()); } } impor.. 2021. 10. 6.
Greedy Algorithm 1. 씨름선수 import java.util.*; class Main { public int solution(int n, int[][] arr) { int answer = n; for (int i = 0; i < n; i++) { for (int j = 0; j < n; j++) { if (arr[i][0] < arr[j][0] && arr[i][1] < arr[j][1]) { answer--; break; } } } return answer; } public static void main(String[] args) { Main T = new Main(); Scanner kb = new Scanner(System.in); int n = kb.nextInt(); int[][] arr = new int[n].. 2021. 10. 4.
DFS, BFS 활용 import java.util.*; class Main { static int n, m, answer = Integer.MAX_VALUE; static int[] coin; public void DFS(int L, int sum) { if (L >= answer || sum > m) return; if (sum == m) { answer = Math.min(L, answer); return; } else { for (int i = 0; i < n; i++) { DFS(L + 1, sum + coin[i]); } } } public static void main(String[] args) { Main T = new Main(); Scanner kb = new Scanner(System.in); n = kb.. 2021. 9. 27.
Recursive, Tree, Graph(DFS, BFS 기초) 1. 재귀함수(스택프레임) import java.util.*; class Main { public void DFS(int n) { if (n == 0) return; else { DFS(n - 1); System.out.print(n + " "); } } public static void main(String[] args) { Main T = new Main(); Scanner kb = new Scanner(System.in); T.DFS(kb.nextInt()); kb.close(); } } 2.이진수 출력(재귀) import java.util.*; class Main { public void DFS(int n) { if (n == 0) return; else { DFS(n / 2); System.ou.. 2021. 9. 26.