Notice
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- React Native
- 폴더구조
- 해외 대외활동
- BFS
- Project Bee
- 티스토리챌린지
- FlatList
- 경우의 수
- 완전탐색
- react
- Navigation
- 자료구조
- 휴대폰 기기
- 창의충전소
- springboot
- web view
- 버튼 활성화
- 노마드코더
- bfs dfs
- multipart upload
- ReactNative
- 구현
- service 테스트
- React Natvive
- 원복
- 백준 1992
- 비트마스킹
- 상속 관계 매핑
- 오블완
- 이영직
Archives
- Today
- Total
유미의 기록들
[백준 3주차 - 13913] 숨바꼭질 4 (Java) 본문
728x90
반응형
📌 문제
📝 풀이과정
1. 가장 빠른 시간
이전에 숨바꼭질 2 문제에서 BFS로 가장빠른 시간을 출력해보았다 (12851번 문제풀이 참고)
2. 어떻게 이동해야 하는 지
이동 경로를 추적하는 문제이므로 prev배열으로 구현할 수 있다
prev[next]=now;
for(int i=k;i!=n;i=prev[i]){
trace.add(i);
}
trace.add(n);
Collections.reverse(trace);
1) k인 17부터 prev[17], prev[16], prev[8] .... i가 5가 아닐 때까지 ArrayList<Integer> trace에 i를 넣는다
2) 마지막으로 n인 5를 넣어준다
3) 그럼 trace에는 17, 16, 8, 4, 5 순서로 들어있고, Collections.reverse로 뒤집어 주면 된다!
💻 코드
import java.util.Scanner;
import java.io.*;
import java.util.*;
public class Main{
static final int MAX=200000;
static int visited[]=new int[MAX+4];
static int prev[]=new int[MAX+4];
static ArrayList<Integer> trace=new ArrayList<>();
static int n,k;
static void bfs(int here){
visited[here]=1;
Queue<Integer>queue=new LinkedList<>();
queue.add(here);
while(!queue.isEmpty()){
int now=queue.poll();
for(int next:new int[]{now-1,now+1,now*2}){
if(next>=0 && next<=MAX){
if(visited[next]==0){
visited[next]=visited[now]+1;
queue.add(next);
prev[next]=now;
}
}
}
}
for(int i=k;i!=n;i=prev[i]){
trace.add(i);
}
trace.add(n);
Collections.reverse(trace);
}
public static void main(String[] args) throws IOException{
BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st=new StringTokenizer(br.readLine());
n=Integer.parseInt(st.nextToken());
k=Integer.parseInt(st.nextToken());
bfs(n);
System.out.println(visited[k]-1);
for(int item:trace){
System.out.print(item+" ");
}
}
}
728x90
반응형
'코딩테스트 기록 > 알고리즘 문제' 카테고리의 다른 글
[백준 3주차 - 3197] 백조의 호수 (Java) (0) | 2024.04.13 |
---|---|
[백준 3주차 - 17071] 숨바꼭질 5 (Java) (0) | 2024.04.12 |
[백준 3주차 - 12851] 숨바꼭질2 (Java) (0) | 2024.04.10 |
[백준 3주차 - 16637] 괄호 추가하기 (Java) (0) | 2024.04.09 |
[백준 3주차 - 12869] 뮤탈리스크 (Java) (0) | 2024.04.08 |
Comments