아직은 정체성이 없는 블로그

[SWEA][D3][c++] 9778. 카드 게임 본문

알고리즘 역량테스트 문제/SWEA

[SWEA][D3][c++] 9778. 카드 게임

coooding 2020. 7. 17. 15:03

문제

9778. 카드 게임

 

문제 링크

https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AXE0YJiK3QcDFAVX

 

SW Expert Academy

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

swexpertacademy.com

 

풀이 과정

 

1. 입력 값을 통하여 플레이어의 현재 점수와 남은 카드들을 계산합니다.

2. 모든 남은 카드와 플레이어의 점수의 합이 21 이상인지 아닌지 확인을 합니다.

3. 만약 21 이하라면 해당 카드의 수 만큼 Result에 더합니다.

4. 만약 21 미만이라면 해당 카드의 수 만큼 Result에 뺍니다.

5. Result 값이 양수라면 GAZUA를 0 또는 음수라면 STOP을 출력합니다.

 

코드

#include<iostream>
using namespace std;

int scoreArr[12];

int main()
{
    ios::sync_with_stdio(0);
    cin.tie(0);
    cout.tie(0);
    
    int T,N,playerScore,Result,i;
    cin>>T;

    for(int t = 1; t <= T; ++t)
    {
        playerScore=0, Result=0;

        for(i=2; i<=11; i++)
            scoreArr[i]=4;
        scoreArr[10]=16;

        cin >> N;

        int temp;

        //현재 플레이어의 점수 입력
        for(i=0; i<N; i++){
            cin >>temp;
            scoreArr[temp]--;
            playerScore+=temp;
        }

        //현재 플레이어의 점수와 다음 카드의 합과 21의 비교
        for(i=2; i<=11; i++)
            if(playerScore+i<=21)
                Result+=scoreArr[i];
            else
                Result-=scoreArr[i];
    
        if(Result>0)
            cout<<"#"<<t<<" "<<"GAZUA\n";
        else
            cout<<"#"<<t<<" "<<"STOP\n";

    }
    return 0;
}

 

 

 

Comments