N

(SWEA c++)3499. 퍼펙트 셔플 본문

SW Expert Academy

(SWEA c++)3499. 퍼펙트 셔플

naeunchan 2020. 11. 9. 10:36
728x90
반응형

swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AWGsRbk6AQIDFAVW&categoryId=AWGsRbk6AQIDFAVW&categoryType=CODE

 

SW Expert Academy

SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!

swexpertacademy.com

카드를 반절로 나누기 때문에 인덱스를 앞, 뒤로 표현할 수 있는 변수가 필요하다.

bool형 check로 앞에 있는 덱인지, 뒤에 있는 덱인지 확인한다.

앞에 있는 덱이면 0 ~ 2 / n 인덱스 까지 ans 변수에 넣어주도록 한다.

뒤에 있는 덱이라면 n - (2 / n) ~ (n - 1) 인덱스까지 ans 변수에 넣어주면 된다.

check도 함께 바꿔주면 쉽게 답을 구할 수 있다.

#include <iostream>
#include <vector>
#include <string>

using namespace std;

int main(void)
{
    int t;
    cin >> t;
    
    for(int tc = 1; tc <= t; tc++)
    {
        int n, f, b;
        bool check = true;
        vector<string> v, ans;
        
        cin >> n;
        f = 0;
        b = n - (n / 2);
        
        for(int i = 0; i < n; i++)
        {
            string s;
            cin >> s;
            v.push_back(s);
        }
        
        for(int i = 0; i < n; i++)
        {
            if(check)
            {
                ans.push_back(v[f++]);
                check = false;
            }
            else
            {
                ans.push_back(v[b++]);
                check = true;
            }
        }
        cout << "#" << tc << " ";
        for(int i = 0; i < n; i++)
            cout << ans[i] << " ";
        cout << endl;
    }
    return 0;
}
728x90
반응형