백준

백준 2164 c++

solfa 2023. 1. 17. 17:15

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

 

2164번: 카드2

N장의 카드가 있다. 각각의 카드는 차례로 1부터 N까지의 번호가 붙어 있으며, 1번 카드가 제일 위에, N번 카드가 제일 아래인 상태로 순서대로 카드가 놓여 있다. 이제 다음과 같은 동작을 카드가

www.acmicpc.net

*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