
14502 - 연구소 (DFS,BFS)
2023. 1. 12. 09:34
알고리즘(BOJ)/Gold
문제분석 가장 먼저 3개의 1을 배치하는 것이 먼저였다. DFS에서 이중포문을 이용해서 1을 배치해줬다. 3개가 될때까지 재귀를 타도록하고 끝나면 1을 다시 0으로 바꿔줬다. public static void dfs(int cnt) { if (cnt == 3) { bfs(); return; } for (int i = 0; i < xsize; i++) { for (int j = 0; j < ysize; j++) { if (array[i][j] == 0) { array[i][j] = 1; dfs(cnt + 1); array[i][j] = 0; } } } } 그 후에 BFS를 통해 2를 퍼트리는것 어렵지 않았지만 2차배열을 복사하는건 처음이여서 1차배열에서 단순히 clone을 사용하거나 배열을 넘겨주는것은 두..

2667 - 단지번호붙이기 (BFS)
2023. 1. 11. 15:43
알고리즘(BOJ)/Silver
순서도 2중포문을 돌면서 1인경우 큐에 담아준다 그 후 꺼내서 x와y좌표를 이동하며 1인경우 q에 또 담아주고 방문여부를 true로 바꿔준다. 위의 순서도는 문제를 처음 접할 때 핵심로직에 관해서 그린거여서 참고정도만 하면 좋을 것 같다. 결과 값을 오름차순으로 바꿔줘야 하기때문에 sort로 정렬해줬다. 단지번호 만큼 이중포문을 도는게 맘에 들지 않아서 큐에 그 값을 담아줬다가 배열에 다시 넣어주는것도 좋은 방법일것 같다. int cnt = 1; System.out.println(danji-1); int[] result = new int[danji]; while (cnt < danji) { int ck=0; for (int i = 0; i < size; i++) { for (int j = 0; j < s..