[백준(BOJ) 1697번] 숨바꼭질 (C++)

2022. 1. 30. 14:37·PS(Problem Solving)/C++

문제 링크

https://www.acmicpc.net/problem/1697

 

문제 정보

입력

첫 번째 줄에 수빈이가 있는 위치 N과 동생이 있는 위치 K가 주어진다. N과 K는 정수이다.

출력

수빈이가 동생을 찾는 가장 빠른 시간을 출력한다.

 

풀이

 이 문제는 BFS의 응용 문제로 1차원에서의 BFS를 돌리는 문제이다. 

 

소스 코드

#include <bits/stdc++.h>
using namespace std;

#define X first
#define Y second

int dist[100002];
int n, k;

int main(void) {
	ios::sync_with_stdio(0);
	cin.tie(0);
	
	cin >> n >> k;
	fill(dist, dist + 100002, -1);
	
	queue<int> Q;
	Q.push(n);
	dist[n] = 0;
	
	while (!Q.empty()) {
		auto cur = Q.front();
		Q.pop();
		
		for (int nxt : {cur -1, cur + 1, 2 * cur}) {
			if (nxt < 0 || nxt >= 100002) {
				continue;
			}
			if (dist[nxt] != -1) {
				continue;
			}
			
			dist[nxt] = dist[cur] + 1;
			Q.push(nxt);
		}
	}
	
	cout << dist[k];
	
	return 0;
}

 

저작자표시 비영리 변경금지 (새창열림)
'PS(Problem Solving)/C++' 카테고리의 다른 글
  • [백준(BOJ) 2480] 주사위 세개 (C++)
  • [백준(BOJ) 11729번] 하노이 탑 이동 순서 (C++)
  • [백준(BOJ) 4179번] 불! (C++)
  • [백준(BOJ) 7576번] 토마토 (C++)
SiwonHae
SiwonHae
프로그래밍을 공부하고 있는 학생입니다.
  • SiwonHae
    시원해의 블로그
    SiwonHae
  • 전체
    오늘
    어제
    • 전체보기 (150) N
      • PS(Problem Solving) (95)
        • C (25)
        • C++ (33)
        • JAVA (37)
      • Algorithm & Data Structure (13)
      • Computer Science (12)
        • Network (2)
        • Design Pattern (10)
      • Back-end (6)
        • Spring (5)
      • Front-end (1)
        • React (1)
      • JAVA (4) N
      • 정보처리기사 (17)
      • SQLD (2)
  • 블로그 메뉴

    • 홈
    • 방명록
    • 글쓰기
  • 인기 글

  • 최근 댓글

  • hELLO· Designed By정상우.v4.10.0
SiwonHae
[백준(BOJ) 1697번] 숨바꼭질 (C++)
상단으로

티스토리툴바