Algorithm/SW Expert Academy

[Python] 5203. 베이비진 게임

느낌표 공장장 2021. 10. 5. 17:20

카드를 하나씩 추가해가며 검토하는 코드 

# babygin인지 확인하는 함수
def is_babygin(p_cards, n):
    for i in range(n-2):
        if p_cards[i] + 1 in p_cards and p_cards[i] + 2 in p_cards: # run 인가요 ?
            return True
        elif p_cards[i] == p_cards[i+1] == p_cards[i+2]:    # triplet 인가요?
            return True
    return False    # 암것도 아니야


for idx in range(1, int(input())+1):
    cards = list(map(int, input().split()))

    player1 = []
    player2 = []
    answer = 0
    for i in range(0, 12, 2):
        player1.append(cards[i])
        player2.append(cards[i + 1])

        if 4 <= i:
            # player1 카드 검토
            if is_babygin(sorted(player1), i//2+1):
                answer = 1  # triplet이나 run 됐으면 갱신하고 승자 출력
                break

            # player2 카드 검토
            if is_babygin(sorted(player2), i//2+1):
                answer = 2
                break

    print('#{} {}'.format(idx, answer)) # 둘다 babygin 되지 못했으면 0(무승부) 출력

 

인덱스를 활용하여 해결하는 코드

# run인지 확인하는 함수
def is_run(p_cards):
    for i in range(8):
        if p_cards[i] > 0 and p_cards[i+1] > 0 and p_cards[i+2] > 0:    # 연속된 세 자리에 각 카드가 하나 이상 있나요?
            return True
    return False    # run 아니야


for idx in range(1, int(input())+1):
    cards = list(map(int, input().split()))

    player1 = [0 for _ in range(10)]
    player2 = [0 for _ in range(10)]
    answer = 0
    for i in range(0, 12, 2):
        player1[cards[i]] += 1      # 해당 인덱스에 +1
        player2[cards[i+1]] += 1

        if 4 <= i:
            # player1 카드 검토
            if player1[cards[i]] == 3 or is_run(player1):   # triplet이나 run 됐으면 갱신하고 승자 출력
                answer = 1
                break

            # player2 카드 검토
            if player2[cards[i+1]] == 3 or is_run(player2):
                answer = 2
                break

    print('#{} {}'.format(idx, answer)) # 둘다 babygin 되지 못했으면 0(무승부) 출력

'Algorithm > SW Expert Academy' 카테고리의 다른 글

[Python] 5205. 퀵 정렬  (0) 2021.10.07
[Python] 5204. 병합 정렬  (0) 2021.10.07
[Python] 5202. 화물도크  (0) 2021.10.05
[Python] 5201. 컨테이너운반  (0) 2021.10.05
[Python] 5189. 전자카트  (0) 2021.10.03