본문 바로가기

CS/Algorithm90

[알고리즘][BOJ][2146] 다리 만들기 [알고리즘][BOJ][2146] 다리 만들기 문제 https://www.acmicpc.net/problem/2146 풀이 꽤 시간을 많이 쏟은 문제입니다. 쉽지 않았어요. 풀고나니 잘 풀 수 있을 거라고 느껴지지만 처음 문제를 볼 땐 많이 헤맸습니다. 다음에 꼭 복습해서 숙달시키려구요. 육지의 번호를 입력받은 후 BFS로 육지마다 번호를 다르게 매겨서 구분해줍니다. for문을 돌려 1을 발견하면 Numbering_BFS에 들어갑니다. 그리고 이 때, count변수를 통해 육지 번호표를 매깁니다. BFS로 탐색을 해서 육지가 나타날 때마다 count변수를 올려서 번호표를 붙혀줘요. 그 다음은 다리 놓기 입니다. 땅마다 각기 다른 번호표가 매겨져 있습니다. 이 번호표를 하나씩 넓혀 땅을 차지하는 땅따먹기 방.. 2018. 10. 30.
[알고리즘][BOJ][1697] 숨바꼭질 [알고리즘][BOJ][1697] 숨바꼭질 문제 https://www.acmicpc.net/problem/1697 풀이 BFS를 이용해서 문제를 풀었어요. 최단 경로를 찾아야 하기 때문에 DFS를 이용했다가 무한루프에 빠져서 BFS로 방법을 바꿨습니다. 큐에 넣고 이동할 때마다 시간을 함께 카운팅하여 넣어주는 방식으로 풀었는데 다른 문제에서도 유사한 방식으로 풀었던 기억이 납니다! 잘 기억해놨다가 다음에는 삽질하지 않도록 해야겠네요! 코드 import java.util.Arrays; import java.util.LinkedList; import java.util.Queue; import java.util.Scanner; public class Main { public static void main(Str.. 2018. 10. 17.
[알고리즘][BOJ][2563] 색종이 [알고리즘][BOJ][2563] 색종이 문제 https://www.acmicpc.net/problem/2563 풀이 색종이가 겹쳐졌을 때 겹친 횟수를 카운팅 해줍니다. 또한, 전체 넓이는 [색종이의 수 * 100] 이므로 [겹친 횟수 + 1] 만큼 넓이에서 빼주면 됩니다. 코드 package algorithm_basic; import java.util.Scanner; public class q_2563 { static int[][] paper; static int[][] all; static int num; public static void main(String[] args) { Scanner sc = new Scanner(System.in); num = sc.nextInt(); sc.nextLine().. 2018. 10. 16.
[알고리즘][BOJ][2667] 단지번호 붙이기 [알고리즘][BOJ][2667] 단지번호 붙이기 문제 https://www.acmicpc.net/problem/2667 풀이 DFS를 이용해 탐색하며 단지의 수와 단지 내 집의 수를 구해주면 되는 문제입니다. 단지의 수를 카운팅할 때는 count변수를 두었습니다. 새로운 단지일 때, count변수를 이용하여 ArrayList에 단지를 추가해줍니다. DFS함수로 들어갔을 때, h_num의 값을 증가시켜 집의 수를 구해줍니다. 탐색을 마치고 새로운 단지를 발견했을 때, count변수를 증가시키고 반복합니다. 코드 package algorithm_review; import java.util.ArrayList; import java.util.Collections; import java.util.Scanner; .. 2018. 10. 3.