반응형
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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
- 프로그래머스 나누어 떨어지는 숫자 배열 파이썬
- 빅데이터분석기사
- 가운데 글자 가져오기 파이썬
- 나누어 떨어지는 숫자 배열 java
- 코드업 1020 자바
- 최단 경로 알고리즘
- 청년 Ai Big Data 아카데미
- 프로그래머스 가운데 글자 가져오기 자바
- docker 완전 삭제
- 프로그래머스 나누어 떨어지는 숫자 배열 자바
- 나누어 떨어지는 숫자 배열 python
- 빅분기실기
- docker 삭제
- 최소 스패닝 트리
- 프로그래머스 가운데 글자 가져오기 파이썬
- m1 docker
- m1 docker install
- 핸즈온 머신러닝
- 청년 AI Big Data 아카데미 13기
- 최소 스패닝 트리 자바
- docker remove
- 트리의 지름 java
- 가운데 글자 가져오기 python
- 가운데 글자 가져오기 자바
- codeup 1020 자바
- 코드업 1020 java
- 가운데 글자 가져오기 java
- 프로그래머스 가운데 글자 가져오기 python
- 트리의 지름 자바
- codeup 1020 java
Archives
- Today
- Total
NineTwo meet you
[백준/자바] 13913 숨바꼭질 4 본문
반응형
문제
수빈이는 동생과 숨바꼭질을 하고 있다.
수빈이는 현재 점 N(0 ≤ N ≤ 100,000)에 있고, 동생은 점 K(0 ≤ K ≤ 100,000)에 있다.
수빈이는 걷거나 순간이동을 할 수 있다.
만약, 수빈이의 위치가 X일 때 걷는다면 1초 후에 X-1 또는 X+1로 이동하게 된다.
순간이동을 하는 경우에는 1초 후에 2*X의 위치로 이동하게 된다.
수빈이와 동생의 위치가 주어졌을 때, 수빈이가 동생을 찾을 수 있는 가장 빠른 시간이 몇 초 후인지 구하는 프로그램을 작성하시오.
입력
첫 번째 줄에 수빈이가 있는 위치 N과 동생이 있는 위치 K가 주어진다.
N과 K는 정수이다.
출력
첫째 줄에 수빈이가 동생을 찾는 가장 빠른 시간을 출력한다.
둘째 줄에 어떻게 이동해야 하는지 공백으로 구분해 출력한다.
예제 입력 1
5 17
예제 출력 1
4
5 10 9 18 17
예제 입력 2
5 17
예제 출력 2
4
5 4 8 16 17
설명
해당 문제는 다음과 같은 알고리즘 분류를 가진다.
- 그래프 이론
- 그래프 탐색
- 너비 우선 탐색
이 문제는 스페셜 저지 문제로 여러 개의 답이 존재하고 이중 한 가지를 정답으로 제출하면 된다.
이런 이유 때문에 예제의 입력이 5 17로 같지만 다른 답일 출력되어 있는 것을 확인할 수 있다.
해당 문제 역시 1697 숨바꼭질의 문제를 기본으로 해결할 수 있었다.
가장 최소의 시간을 구하기 위해서는 visited배열을 이용해 해당 위치의 방문한 적이 있는지 여부를 판단했다.
이문제와 1697 숨바꼭질의 차이점은 최소 시간의 경로를 출력하는 것이다.
이를 위해서 다음과 같이 부모의 index를 저장하는 배열을 설정해줬다.
static int parents[] = new int[100001];
동생의 위치에 도달했을 때 stack을 사용해 경로를 출력할 수 있다.
index | 5 | 10 | 9 | 18 | 17 |
parents[index] | 5 | 10 | 9 | 18 |
stack에 저장되는 순서는 다음과 같다.
index | parents[index] | stack -> | ||||
17 | ||||||
17 | 18 | 17 | 18 | |||
18 | 9 | 17 | 18 | |||
9 | 10 | 17 | 18 | 9 | ||
10 | 5 | 17 | 18 | 9 | 10 | |
5 | 0 | 17 | 18 | 9 | 10 | 5 |
stack이 빌때까지 pop하면 해당 경로를 구할 수 있다.
코드
반응형
'프로그래밍 문제 > 백준' 카테고리의 다른 글
[백준/자바] 1261 알고스팟 (0) | 2021.01.15 |
---|---|
[백준/자바] 14226 이모티콘 (0) | 2021.01.15 |
[백준/자바] 13549 숨바꼭질 3 (0) | 2021.01.15 |
[백준/자바] 12851 숨바꼭질 2 (0) | 2021.01.15 |
[백준/자바] 1697 숨바꼭질 (0) | 2021.01.15 |
Comments