풀이
n = int(input())
total = [0, True,False,True,True] + [0]*(n-4)
for _ in range(5,n+1):
if False in [total[_-1],total[_-3],total[_-4]]:
total[_]= True
else:
total[_]=False
if total[n]:
print("SK")
else:
print("CY")
c언어에서는 생각 조차 할 수 없었던 [0]*(n-4) 라는 표현을 구글링을 통해 알게 되었는데 파이썬은 내 생각보다 무지 대단한 놈 같다. 어쨋든 total 리스트는 본인 차례에 가져갈 수 있는 구슬의 개수에 따라 패배 혹은 승리가 결정되는 것을 미리 1,2,3,4개의 돌에 대한 승 패 값으로 지정해놓았다. 이 수보다 더 큰 돌의 개수의 경우에는 1,3,4를통해 true에 도달할 수 있다면 false 값을, false에 도달할 수 있다면 true값을 할당하는 알고리즘을 구상했다.
'Koala - 5기 > 코딩테스트 준비 스터디' 카테고리의 다른 글
[백준 / JAVA] 친구비 - 16562 (0) | 2022.01.28 |
---|---|
[백준/C++] 소가 길을 건너간 이유 5 (0) | 2022.01.27 |
[BOJ / Python] 16395 - 파스칼의 삼각형 (0) | 2022.01.23 |
[백준/C++] 이친수 (0) | 2022.01.23 |
[백준/C++] 알고리즘 5582번 공통 부분 문자열 (0) | 2022.01.23 |