[백준] 24553번 팰린드롬 게임

heering·2022년 3월 12일
0

백준

목록 보기
1/11
post-thumbnail

문제 ➡ https://www.acmicpc.net/problem/24553

T = int(input()) #테스트케이스 개수
for _ in range(0, T): #상윤 -> 승우
    N = int(input()) #돌 무더기 개수
    
    if N % 10 == 0:
        print('1')
    else:
        print('0')

제목은 팰린드롬 게임이지만 다른 방식으로 간단하게 접근 가능하다.
바로.. 10으로 나눴을 때 나머지를 가지고 판단하는 방법이다. (10의 배수 여부)

그게 왜 그러냐면, 상윤이 다음에 승우 차례인데.
N의 값이 1, 2, 3, 4, 5, 6, 7, 8, 9 이중에 하나라면, 다 팰린드롬이다.
걍 상윤이가 처음부터 N값만큼 가져가버리면 승우가 진다.

N의 값이 10이라면, 처음 순서인 상윤이는 10만큼은 팰린드롬이 아니기 때문에 못 가져가고... 머리 굴려서 10보다 작은 그 어떤 수를 가져가도 다음 차례인 승우는 남는 개수 몽땅 가져가버리면 이긴다.

N의 값이 11이라면, 상윤이가 11개 가져가면 이기고,
N의 값이 12라면, 항상 최선의 방법을 택하니까 상윤이가 2개 가져가고 승우가 10개는 못 가져가니, 10이하의 수만큼 가져가면, 상윤이가 남는 개수는 팰린드롬이니까 어떻게든 이긴다.

따라서 N의 값이 10의 배수일 때는, 승우가 이기며 아닐 때는 상윤이가 이긴다.

이름이 너무 헷갈려 ㅠ

0개의 댓글