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;
}
'Baekjoon > C++' 카테고리의 다른 글
[C++][BOJ/백준] 11931 수 정렬하기 4 (1) | 2024.03.06 |
---|---|
[C++][BOJ/백준] 9455 박스 (0) | 2024.03.03 |
[C++][BOJ/백준] 10804 카드 역배치 (0) | 2024.03.01 |
[C++][BOJ/백준] 3040 백설 공주와 일곱 난쟁이 (2) | 2024.02.29 |
[C++][BOJ/백준] 30017 치즈버거 만들기 (2) | 2024.02.27 |