https://www.acmicpc.net/problem/2164
*c++아직 안배워서 c로 풂*
생각하는 과정
1. 큐에 push로 n만큼 숫자 넣기
2. pop으로 맨 위에 빼기 (선입선출이니까 가능)
3. front를 어떻게 빼서 아래로 옮기지? push로!!
4. pop으로 맨 위에 버리기
하나 남을 때 까지 반복
5. (top은 스택임;;) front로 출력
#include <iostream>
#include <stdio.h>
#include <queue>
using namespace std;
queue <int> q;
int main(){
int n;
int arr[500000];
scanf("%d",&n);
for(int i=1 ; i<=n ; i++){
q.push(i);
}
while(q.size()>1){ // q.size()==1은 안 됨
q.pop();
q.push(q.front());
q.pop();
}
printf("%d", q.front());
return 0;
}
처음에 while문 조건을 q.size()==1로 했는데 틀렸다
size가 1이 되는 순간! 빠져나와야 되므로 1보다 커야함
728x90
'백준' 카테고리의 다른 글
백준 1260번 C++ 배열 사용 (0) | 2023.07.06 |
---|---|
백준 4949번 c++ (0) | 2023.07.06 |
백준 1935번 C++ 배열 사용 (0) | 2023.07.06 |
백준 9012번 c++ (0) | 2023.06.25 |
백준 10773번 C++ (1) | 2023.01.17 |