백준온라인23 (JAVA) 백준온라인 - 1260번 DFS와 BFS 학교에서 그래프 탐색을 배우기는 했지만 사실 이론만 배우고 직접 구현하는 것은 하지 않았다. 다시 구글링하고 유튜브를 보며 이해를 하였다. 하지만 직접 구현하기 어려워서 구글링으로 문제를 검색을 하여서 이해를 하였다. 다시 풀어 볼 예정이다. import java.util.Arrays; import java.util.LinkedList; import java.util.Queue; import java.util.Scanner; public class Main { static int node[][]; //인접행렬 배열 static int check[]; // 노드의 방문 여부 표시 배열 static Queue queue = new LinkedList(); //BFS를 위한 큐 static void dfs(i.. 2023. 11. 17. (JAVA) 백준온라인 2133번 - 타일 채우기 import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int N = sc.nextInt(); int tile[] = new int[N+1]; tile[0] = 1; for(int i=2; i=0; j-=2){//각 N(i)마다 예외적인 부분(N(i)에서만 되는 특별한 타일 조합)도 경우의 수 더해주기 tile[i] += tile[j]*2;//2는 해당 j 에서마다 나오는 특별한 타일임. // 이 특별한 타일들이 전전 타일 이후부터의 타일 뒤에 붙는 경우를 //더해주는 거임 } } System.out.println(tile[N]); } } 2023. 11. 11. (JAVA) 백준온라인 9465번 - 스티커 오랜만이다. 한달만이다. ... 나름 시험 공부 한다고 글을 올리지 못한 것도 있고 나의 알고리즘 공부에 문제가 있다고 생각해서 다시 전에 풀었던 문제들을 푸느라 글을 올리지 않았다 문제를 빨리 빨리 푸는것에 집중하게 되다보니 나의 실력이 쌓이지 않는다는 생각이 들었다 그래서 다시 이전에 풀었던 문제들을 풀었다. 이번에는 새로운 문제를 접해서 포스팅을 하겠다 문제를 읽었을 때는 괜히 내용이 길어서 당황했지만 내용 이해를 하고 차분하게 입력값 넣는 코드까지 작성하고 많이 고민을 했는데 도저히 생각이 나지 않아서 구글링을 하였다. import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner sc = .. 2023. 10. 27. (JAVA) 백준온라인 1699번 - 제곱수의 합 dp배열에 n 까지의 모든 배열에 모두 1의 제곱으로 초기화 시킨다. 해당 i 안에서 j가 증가하며 기존 dp[i]와 새로 계산한 dp[i - j*j] + 1 중 최솟값을 해당 dp[i]에 저장한다 import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int n = sc.nextInt(); int[] dp = new int[100001]; for(int i = 0; i 2023. 9. 22. (JAVA) 1912번 - 연속합 import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int n = sc.nextInt(); int[] ary = new int[n]; int[] dp = new int[n]; int max = 0; for (int i = 0; i < n; i++) { ary[i] = sc.nextInt(); } dp[0] = ary[0]; max = ary[0]; for(int i = 1; i 2023. 9. 21. (JAVA) 백준온라인 10844번 - 쉬운 계단 수 문제 이해하고 정답 코드를 봐도 이해가 안되어서 애 좀 먹었다 import java.util.Scanner; public class Main { final static long mod = 1000000000; public static void main(String[] args) { Scanner sc = new Scanner(System.in); int N = sc.nextInt(); long[][] dp = new long[N + 1][10]; // 첫 번째 자리수는 오른쪽 맨 끝의 자릿수이므로 경우의 수가 1개밖에 없음 for(int i = 1; i < 10; i++){ dp[1][i] = 1; } // 두 번째 이상 자릿수부터 N까지 탐색 for(int i = 2; i 2023. 9. 15. 이전 1 2 3 4 다음