코딩가딩가딩/알통
BOJ 2164 카드 (C++)
worldforest
2021. 1. 6. 22:11
BOJ 2164 S4 카드
#include <iostream>
#include <queue>
using namespace std;
int main(){
ios::sync_with_stdio(0);
cin.tie(0); cout.tie(0);
int N, ans;
cin >> N;
queue<int> Q;
for(int i = 1; i <= N; i++){
Q.push(i);
}
while(Q.size() != 1){
Q.pop();
Q.push(Q.front());
Q.pop();
}
cout << Q.front();
}
💡 how
1 ~ N까지 큐에 넣으면 1부터 pop()할 수 있겠다
pop()하고 맨 앞에 있는 값을 push()하고 pop()하다가
하나만 남았을 때 출력!
원래는 아래처럼 생각했는데 길이가 1이아닐때 까지로 while문 범위를 정하고
front()값을 바로 push()했다.
길이가 1개일 때 맨 앞에 있는(하나 남은)값이 출력된다.
왜 처음에 아래처럼 생각했지? 더 쉽게 생각해야지 :)
더보기
#include <iostream>
#include <queue>
using namespace std;
int main(){
ios::sync_with_stdio(0);
cin.tie(0); cout.tie(0);
int N, ans;
cin >> N;
queue<int> Q;
for(int i = 1; i <= N; i++){
Q.push(i);
}
int answer,temp;
while(!Q.empty()){
Q.pop();
temp = Q.front();
if(Q.size() == 1){
answer = temp;
break;
}
Q.pop();
Q.push(temp);
}
cout << answer;
}
반응형