본문 바로가기

알고리즘/BFS5

[백준] 아기상어 / 자바 문제         레벨: G3알고리즘: 풀이시간: 12:34힌트 참조 유무:https://www.acmicpc.net/problem/162361 번째 시도: 실패   [알고리즘 선택 사고 과정]먹을 수 있는 것들을 다 먹어야 함(배열 탐색)먹을 수 있는 것에서 갈 때에는 최소한의 거리로 가야 함 -> BFS 선택되게 간단히 알고리즘 선택했다 [풀이 과정]반복문상어가 먹을 수 있는 것을 찾을 때까지 탐색(BFS)한다.만약 먹을 것이 없다면 반복문을 종료하고 답을 반환한다.자세한 건 주석 참조  import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.util.ArrayDeque;i.. 2024. 5. 25.
[백준] 토마토/자바 문제         레벨: G5알고리즘: BFS풀이시간: 2시간힌트 참조 유무: 유https://www.acmicpc.net/problem/7569 1 번째 시도   기존 bfs와 다른 점은 하나인 줄 알았다. 방향이 상,하가 추가 되서 총 6개를 탐색해야 된다는 점이다 import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.util.LinkedList;import java.util.PriorityQueue;import java.util.Queue;public class Main { static int[] xx; static int[] yy; public stat.. 2024. 5. 12.
[백준] 벽 부수고 이동하기/자바 문제         레벨: G3알고리즘: BFS 풀이시간:  1시간 20분힌트 참조 유무: 유https://www.acmicpc.net/problem/22061 번째 시도   벽을 언제 뽀갤 건지 한 번에 알 수 있나?NO근데 왜 dfs가 아니고 bfs 인가?dfs는 최단 경로를 찾는 것이 아니라 끝까지 탐색해서 경로를 찾는 것이기 때문에 첫 번째 도착한 것이 최단경로임을 보장하지 않는다. 최단 경로 찾기에 bfs가 적합하다.import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.util.LinkedList;import java.util.Queue;public class Main.. 2024. 5. 7.
항해99 26일차 TIl( 단어 변환 / 프로그래머스) 문제 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 1 번째 시도 target -> start로 가는 길 찾기 DFS ? BFS? 이와 같은 단어 찾기 아니면 백트래킹 DFS 최소 횟수이니까 최단 거리? BFS 최소 횟수 = 최단 거리로 판단, BFS 구현 BFS를 이해하기 쉽게 디버깅 넣은 코드 import java.util.*; class Word { String name; int index; int cnt; Word(String name, int index, int cnt) { this.name= name; this.index = index; thi.. 2024. 4. 23.
항해 99 25일차 TIL( 게임 맵 최단거리 / 프로그래머스) 문제 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 1 번째 시도 DFS 문제 DFS를 통해 동,서,남,북 위치 중 갈 수 있는 곳을 다 탐색한다. 이때 depth로 길이를 알 수 있다. 계속 최소 depth를 업데이트 한다. import java.util.*; class Solution { int[] x = new int[]{1,0,0,-1}; int[] y = new int[]{0,1,-1,0}; boolean[][] visited; int answer = Integer.MAX_VALUE; public int solution(int[][] maps) .. 2024. 4. 22.