본문 바로가기
Algorithm/C++

[백준 1679] 숨바꼭질

by imagineer_jinny 2022. 8. 29.

1697번: 숨바꼭질 (acmicpc.net)

 

1697번: 숨바꼭질

수빈이는 동생과 숨바꼭질을 하고 있다. 수빈이는 현재 점 N(0 ≤ N ≤ 100,000)에 있고, 동생은 점 K(0 ≤ K ≤ 100,000)에 있다. 수빈이는 걷거나 순간이동을 할 수 있다. 만약, 수빈이의 위치가 X일

www.acmicpc.net

 

배운것

for(int nxt : {cur-1, cur+1, 2*cur}) 로 한꺼번에 처리하기

 

정답코드

#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+100001,-1);
  dist[n] = 0;
  queue<int> Q;
  Q.push(n);
  while(dist[k] == -1){
    int cur = Q.front(); Q.pop();
    for(int nxt : {cur-1, cur+1, 2*cur}){
      if(nxt < 0 || nxt > 100000) continue;
      if(dist[nxt] != -1) continue;
      dist[nxt] = dist[cur]+1;
      Q.push(nxt);
    }        
  }
  cout << dist[k];
}

'Algorithm > C++' 카테고리의 다른 글

[백준 10026] 적록색약  (0) 2022.08.30
[백준 1012] 유기농 배추  (0) 2022.08.30
[백준 4179] 불!  (0) 2022.08.29
[백준 1926] 그림  (0) 2022.08.19
[백준 2504] 괄호의 값  (0) 2022.08.17

댓글