배운것
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 |
댓글