-
https://www.acmicpc.net/problem/5014
5014번: 스타트링크
첫째 줄에 F, S, G, U, D가 주어진다. (1 ≤ S, G ≤ F ≤ 1000000, 0 ≤ U, D ≤ 1000000) 건물은 1층부터 시작하고, 가장 높은 층은 F층이다.
www.acmicpc.net
https://github.com/JUNGSOONIL/JAVA/blob/main/BAEKJOON%205014
GitHub - JUNGSOONIL/JAVA: JAVA 소스 코드
JAVA 소스 코드. Contribute to JUNGSOONIL/JAVA development by creating an account on GitHub.
github.com
해당 문제는 현재 층에서 몇 번의 버튼을 눌러서 가고자 하는 층수로 갈 수 있는지를 구하는 문제다.
총 F층이며 현재층은 S, 도착층은 G이고 버튼 한 번을 누르면 위로는 U층 아래는 D층 이동 가능하다.
해당 문제는 dp를 + bfs? 이용해서 쉽게 해결했다.
dp 배열을 하나 두고 입력 처리를 한 뒤 먼저 현재 층을 큐에 담고 배열을 1로 둔 뒤 bfs를 돌린다.
bfs에서는 up, down변수를 둬서 이동 값을 저장한 뒤 해당 값이 이동 가능하고
이미 방문하지 않았다면 큐에 넣어주고 이동 전 층의 값 + 1한 값을 넣어준다
위의 동작을 큐가 빌 때까지 반복하고 원하는 층의 배열 값이 0이면 해당 층을 못 갔기 때문에
실패 그렇지 않으면 해당 배열 값 - 1을 출력해준다(시작을 1로 두었기 때문)
https://www.acmicpc.net/problem/1697
1697번: 숨바꼭질
수빈이는 동생과 숨바꼭질을 하고 있다. 수빈이는 현재 점 N(0 ≤ N ≤ 100,000)에 있고, 동생은 점 K(0 ≤ K ≤ 100,000)에 있다. 수빈이는 걷거나 순간이동을 할 수 있다. 만약, 수빈이의 위치가 X일
www.acmicpc.net
이 문제랑 비슷했던 문제인 거 같다.
728x90'알고리즘 > Baekjoon' 카테고리의 다른 글
Baekjoon 1158 요세푸스 문제 파이썬 (0) 2021.11.03 Baekjoon 1110 더하기 사이클 파이썬 (0) 2021.11.03 Baekjoon 9012 괄호 파이썬 (0) 2021.11.03 Baekjoon 13460 구슬 탈출 2 JAVA (0) 2021.11.01 Baekjoon 19238 스마트 택시 JAVA (0) 2021.10.31 댓글