백준7576 토마토
2023. 6. 11. 23:11
Algorithm
처음엔 dfs를 이용해 풀어보려고 했으나 실패했다. bfs를 이용해 익은 토마토가 들어있는(1) 좌표를 q에 넣어주고, 상하좌우에 있는 토마토 중 안익은(0) 토마토가 들어있는 좌표가 있으면 익은 토마토 일수에서 1을 더해준다 즉 depth가 1 깊어질 때마다 1을 추가해 주는 것이다. 이렇게 하면 일수를 계산 가능하다. 그 후 countDay메서드를 통해 가장 깊은 depth를 cnt에 담아주고 depth는 1에서 시작했는데 일수는 0에서부터 시작했으니 날짜를 계산할 때는 1을 빼준다. 최종적으로 checkTomato메서드를 통해 안익은 토마토가 있으면 -1을 출력하고 그렇지 않으면 모든 토마토가 있은것이므로 cnt를 출력한다. import java.io.BufferedReader; import jav..
DFS / BFS
2023. 4. 14. 14:57
Algorithm
DFS/BFS를 한번에 정리해 보려고 한다. DFS/BFS로 풀기 좋은 대표적 문제 유형 1.경로 탐색(최단거리/시간) 2.네트워크 유형(연결) 3.조합 유형(모든 조합 만들기) DFS (깊이 우선 탐색) 한길로 쭉 가는 유형, 재귀로 구현하는 것이 일반적! 재귀를 타고타고 가서 탈출조건에 도달하고 파라미터를 하나씩 바꿔가면서 정점을 찾는 방식 DFS문제 예 프로그래머스-타겟 넘버 class Solution { static int answer; public int solution(int[] numbers, int target) { answer =0; dfs(0,0,numbers,target); return answer; } static void dfs(int index, int sum, int[]numb..