본문 바로가기

Baekjoon/C++

[C++][BOJ/백준] 2684 동전 게임

 

 

Baekjoon Online Judge

 

2684번: 동전 게임

동전게임은 주로 두 사람이 함께 즐기는 게임이다. 이 중 3-동전게임은 여러 명이 할 수 있는 게임이다. 각 사람은 각각 3-동전수열 중 하나를 선택한다. 3-동전수열이란 앞 뒤 앞과 같은 수열이

www.acmicpc.net

 

 

[문제]

동전게임은 주로 두 사람이 함께 즐기는 게임이다. 이 중 3-동전게임은 여러 명이 할 수 있는 게임이다. 각 사람은 각각 3-동전수열 중 하나를 선택한다. 3-동전수열이란 앞 뒤 앞과 같은 수열이고, 8가지(뒤뒤뒤,뒤뒤앞,뒤앞뒤,뒤앞앞,앞뒤뒤,앞뒤앞,앞앞뒤,앞앞앞)가 있다.

이제 심판은 동전 1개를 40번 던진다. 그 다음 심판은 동전이 앞인지 뒤인지를 던진 순서대로 종이에 적는다. 그 다음 3-동전수열이 각각 몇 번씩 나왔는지 기록한다. 가장 많이 나온 수열을 선택한 사람이 이긴다.

동전 40번 던진 결과가 주어졌을 때, 3-동전수열이 각각 몇 번 나왔는지를 출력하는 프로그램을 작성하시오. 예를 들어, 40개의 동전이 모두 앞면일 경우 앞앞앞은 38번 나타난다.

 

 

[입력]

첫째 줄에 테스트 케이스의 개수 P(1 ≤ P ≤ 1000)가 주어진다. 각 테스트 케이스는 한 줄로 이루어져 있고, 동전을 40번 던진 결과가 주어진다. 이때, 앞면은 H로, 뒷면은 T로 표현한다.

 

 

[출력]

각 테스트 케이스마다 3-동전수열이 몇 번 나타났는지를 출력한다. 뒤뒤뒤, 뒤뒤앞, 뒤앞뒤, 뒤앞앞, 앞뒤뒤, 앞뒤앞, 앞앞뒤, 앞앞앞 순서대로 공백으로 구분해서 출력한다.

 

 


 

[코드]

#include <iostream>
using namespace std;

int main()
{
    int P;
    string s;

    cin >> P;

    for (int i = 0; i < P; i++)
    {
        cin >> s;

        int res[8] = { 0 };

        for (int j = 0; j < s.length() - 2; j++)
        {

            if (s[j] == 'T')
            {
                if (s[j + 1] == 'T')
                {
                    if (s[j + 2] == 'T')
                        res[0]++;
                    else
                        res[1]++;
                }
                else if (s[j + 1] == 'H')
                {
                    if (s[j + 2] == 'T')
                        res[2]++;
                    else
                        res[3]++;
                }
            }
            else if (s[j] == 'H')
            {
                if (s[j + 1] == 'T')
                {
                    if (s[j + 2] == 'T')
                        res[4]++;
                    else
                        res[5]++;
                }
                else if (s[j + 1] == 'H')
                {
                    if (s[j + 2] == 'T')
                        res[6]++;
                    else
                        res[7]++;
                }
            }
        }

        for (int j = 0; j < 8; j++)
            cout << res[j] << " ";

        cout << '\n';
    }

    return 0;
}