# Coding/# 백준

[백준 / 24678] 돌무더기 게임 1 - Python

강현들 2022. 3. 17. 17:51
728x90
반응형

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

 

24678번: 돌무더기 게임 1

첫 번째 케이스에서 R의 첫 시행 이후 가능한 다음 상태는 $(0,0,2), (0,2,0), (2,0,0)$뿐이며, B는 더 이상 시행을 할 수 없으므로 이긴다. 두 번째 케이스에서 R의 첫 시행 이후 가능한 다음 상태는 다음

www.acmicpc.net

 

<풀이>

1. 정렬해주어 작고 큰 순서로 맞춰준다.

- 제일 작은 값과 두번 째 값의 차이를 1또는 0으로 만들어 준다.

2. 제일 큰 값을 제일 작은 값과 맞춰준다.

3. 세 값을 1과 2의 값으로 만들어 준다.

4. 유형에 따라 값을 더한다.

 

<전체 코드>

import sys

for _ in range(int(input())):
    rock = list(map(int, sys.stdin.readline().split()))
    rock.sort()

    cnt = 0

    # 0과 1을 맞춰줌
    gap = (rock[1]-rock[0])//2
    cnt += gap
    rock[0] += gap
    rock[1] -= gap
    rock[2] -= gap
    # 1과 2를 맞춰줌
    gap = 2*((rock[2]-rock[0])//2)
    cnt += gap
    rock[2] -= gap
    # 모두 1,2로 만들어줌
    toOne = rock[0]-1
    cnt += 3*toOne
    rock[0] -= toOne
    rock[1] -= toOne
    rock[2] -= toOne
    rock.sort()
    # 항목에 따라 나눠줌
    if rock == [1, 1, 1]:
        cnt += 1
    elif rock == [1, 1, 2]:
        cnt += 3
    elif rock == [1, 2, 2]:
        cnt += 4

    print('B' if cnt % 2 == 1 else 'R')
728x90
반응형