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

 

21756번: 지우개

$N$개의 칸에 $1$ 부터 $N$ 까지의 수들이 왼쪽부터 순서대로 저장되어 있다. 또, 각 칸은 왼쪽부터 $1$ 부터 $N$까지 순서대로 번호가 붙어 있다. 즉, 처음에는 각 칸의 번호와 각 칸에 저장된 수가

www.acmicpc.net

 

 

[난이도] Bronze2
[유형] 구현

[풀이]
vector 두개를 선언하여 짝수번째 수들만 1개만 남을 때까지 복사해주면 됩니다.

 

#include <cstdio>
#include <vector>
using namespace std;
int N;
vector<int> v1,v2;
int main(){
    scanf("%d",&N);
    for(int i=1;i<=N;i++) v1.push_back(i);
    while(v1.size()!=1){
        v2.clear();
        for(int i=1;i<v1.size();i+=2) v2.push_back(v1[i]);
        v1=v2;
    }
    printf("%d",v1.front());
}


https://github.com/has2/Problem-Solving/blob/master/boj-solved.ac/Bronze2/21756.cpp

+ Recent posts