N

(SWEA c++)4047. 영준이의 카드 카운팅 본문

SW Expert Academy

(SWEA c++)4047. 영준이의 카드 카운팅

naeunchan 2020. 11. 10. 09:31
728x90
반응형

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

 

SW Expert Academy

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

swexpertacademy.com

어려운 규칙 없이 하드 코딩을 하면 쉽게 풀 수 있는 문제.

4가지 모양의 14 크기의 bool형 벡터를 만들어 카드를 체크해준다.

만약 해당 모양의 숫자가 true이면 "ERROR"를 출력하고,

아니라면 true로 바꿔주고 카운팅을 -1 해주면 된다.

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

using namespace std;

int main(void)
{
    ios::sync_with_stdio(false);
    cin.tie(0);
    cout.tie(0);
    
    int t;
    cin >> t;
    
    for(int tc = 1; tc <= t; tc++)
    {
        vector<bool> S(14, false), D(14, false), H(14, false), C(14, false);
        string s;
        bool check = false;
        int sC = 13, dC = 13, hC = 13, cC = 13;
        
        cin >> s;
        
        for(int i = 0; i < s.size(); i += 3)
        {
            string card = s.substr(i, 3);
            int num = stoi(s.substr(i + 1, 2));
            if(card[0] == 'S')
            {
                if(S[num])
                {
                    check = true;
                    break;
                }
                S[num] = true;
                sC--;
            }
            else if(card[0] == 'D')
            {
                if(D[num])
                {
                    check = true;
                    break;
                }
                D[num] = true;
                dC--;
            }
            else if(card[0] == 'H')
            {
                if(H[num])
                {
                    check = true;
                    break;
                }
                H[num] = true;
                hC--;
            }
            else
            {
                if(C[num])
                {
                    check = true;
                    break;
                }
                C[num] = true;
                cC--;
            }
        }
        cout << "#" << tc << " ";
        if(check)
            cout << "ERROR" << endl;
        else
            cout << sC << " " << dC << " " << hC << " " << cC << endl;
    }
    return 0;
}
728x90
반응형