백준 24393 조커 찾기

sirocube·2022년 2월 5일
0

BOJ

목록 보기
19/21

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

  • 자료 구조, 큐, 시뮬레이션

  • 풀이
    기재된 섞는 순서에 맞춰 left_side queue, right_side queue 에 분배해 놓는다.
    입력은 총 카드 수인 27 합을 맞출 때까지 받는다.
    오른쪽 한번 왼쪽 한번 반복하여 left_side, right_side에서 카드를 메인 queue로 보내 합친다.
    위 로직을 반복한다.

#include <bits/stdc++.h>
using namespace std;
#define fast ios_base::sync_with_stdio(false); cin.tie(NULL), cout.tie(NULL)

int N;
queue<int> ls, rs, ret;

int main(void){
    fast;
    cin>>N;
    ret.push(-1);
    for(int i=0;i<26;++i) ret.push(1);
    while(N--){
        int cnt=0;
        for(int i=0;i<13;++i) {
            ls.push(ret.front()); ret.pop();
        }
        for(int i=0;i<14;++i){
            rs.push(ret.front()); ret.pop();
        }
        bool flag=true;
        while(cnt<27){
            int card; cin>>card;
            cnt+=card;
            for(int i=0;i<card;++i){
                if(flag){
                    ret.push(rs.front()); rs.pop();
                } else{
                    ret.push(ls.front()); ls.pop();
                }
            }
            flag=!flag;
        }
    }
    for(int i=1;i<=27;++i){
        int cur=ret.front(); ret.pop();
        if(cur==-1){
            cout<<i; return 0;
        }
    }
}
  • 자료구조 - 큐와 구현력을 물어보는 문제
profile
잉차차

0개의 댓글