본문 바로가기

알고리즘/백준 문제 풀이

[Python] 2684번 동전 게임

728x90

https://www.acmicpc.net/problem/2684

 

2684번: 동전 게임

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

www.acmicpc.net


 

22/09/14

 

 

브론즈 문제라서 뇌 빼고 코딩했다. 그냥 문자열 비교를 해서 풀었다. 근데 좀 더 단순한 구현도 있을 것 같다.


 

문제 접근 방식:

 

 

3중 for문으로 구현했다. 제일 바깥쪽 for문은 3-동전수열 중 하나를 뽑는 for문, 두 번째와 세 번째 for문은 문자열 비교를 실행하는 for문인데, 이 문자열 비교를 40개짜리 문자열과 미리 뽑아놓은 3-동전 수열끼리 진행하는 것이다.

 

가능한 3-동전 수열은 총 8개가 있으므로, 제일 바깥쪽은 8번, 안쪽은 38*3번을 돌아서 3중 for문을 해도 충분하다고 생각했다.


아래는 내가 위의 접근 방식과 같이 작성한 파이썬 코드이다. 더보기를 누르면 확인할 수 있다.

더보기
# 2684번 동전 게임
# 문자열
import sys
input = sys.stdin.readline

T = int(input())
coins = ['TTT','TTH','THT','THH','HTT','HTH','HHT','HHH']
for _ in range(T):
    S = input().rstrip()
    result = []
    for coin in coins:
        total = 0
        for start in range(38):
            for i in range(3):
                if S[start+i] != coin[i]:
                    total -= 1
                    break
            total += 1
        result.append(total)
    print(*result)