코딩테스트/카카오

카카오 1차 코딩테스트 2번 다트게임 문제풀이

글로벌디노 2018. 5. 22. 15:49

카카오 1차 코딩 테스트 2번 문제풀이

문제 및 해설 바로가기


2. 다트 게임(난이도: 하)

 입력

출력 

1S2D*3T

37

1D2S#10S

9

1D2S0T

3

1S*2T*3S

23

1D#2S*3S

5

1T2D3D#

-4

1D2S3T*

59



C++ 소스코드 (20201018 코드 수정)

// 프로그래머스 2018 KAKAO BLIND RECRUITMENT [1차] 다트 게임

#include <string>
using namespace std;

int solution(string dartResult) 
{
    int answer = 0;
    int prev = 0;
    int score = 0;
    int idx = 0;

    for (int i = 0; i < 3; i++)
    {
        score = dartResult[idx++] - '0';
        if (score == 1 && dartResult[idx] - '0' == 0)
        {
            score = 10;
            ++idx;
        }

        if (dartResult[idx] == 'D')
            score *= score;
        else if (dartResult[idx] == 'T')
            score *= score * score;
        ++idx;

        if (dartResult[idx] == '*')
        {
            score *= 2;
            prev *= 2;
            ++idx;
        }
        else if (dartResult[idx] == '#')
        {
            score *= -1;
            ++idx;
        }

        answer += prev;
        prev = score;
    }

    answer += prev;

    return answer;
}

int main()
{
    string arr[] = 
    { 
        "1S2D*3T", 
        "1D2S#10S",
        "1D2S0T",
        "1S*2T*3S",
        "1D#2S*3S",
        "1T2D3D#",
        "1D2S3T*"
    };

    for (auto str : arr)
        printf("%d\n", solution(str));

    return 0;
}