일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 코딩봉사
- 회고
- 파이썬
- 공부일지
- 시나공
- MYSQL
- 1과목
- kotlin
- BFS
- 소프티어
- 백준 알고리즘
- 코딩교육봉사
- CJ UNIT
- 코틀린
- 프로그래머스
- SW봉사
- 백준
- programmers
- python
- softeer
- 정보처리산업기사
- 스프링
- java
- C++
- 알고리즘
- 자바
- 데이터베이스
- SQL
- 문제풀이
- 백준알고리즘
Archives
- Today
- Total
JIE0025
[DP][실버5] 9655번 돌게임 - 파이썬(python) 본문
728x90
문제
돌 게임은 두 명이서 즐기는 재밌는 게임이다.
탁자 위에 돌 N개가 있다. 상근이와 창영이는 턴을 번갈아가면서 돌을 가져가며, 돌은 1개 또는 3개 가져갈 수 있다. 마지막 돌을 가져가는 사람이 게임을 이기게 된다.
두 사람이 완벽하게 게임을 했을 때, 이기는 사람을 구하는 프로그램을 작성하시오. 게임은 상근이가 먼저 시작한다.
💻 사고과정
💻 내가 쓴 정답코드
import sys
input = sys.stdin.readline
n = int(input())
dp = [0] * (1001)
if n<=3:
result = 'SK' if n%2 == 1 else'CY'
print(result)
exit()
dp[1] = 1
dp[2] = 0
dp[3] = 1
for i in range(4, n+1):
dp[i] = not dp[i-1] or not dp[i-3]
if dp[n]:
print('SK')
else:
print('CY')
💻 근데 사실 이렇게 할 필요가 없다.
사고과정을 보다보면 -- 어차피 상근이가 게임을 시작하기 떄문에
n이 홀수이면 무조건 상근이가 이긴다는걸 파악할 수 있다. ㅋㅋㅋㅋㅋ
따라서 이런 코드도 정답이 될수있따.
n = int(input())
if n%2 == 0:
print('CY')
else:
print('SK')
'Algorithm > 백준' 카테고리의 다른 글
[다익스트라][골드5] 1916번 최소비용 구하기 - 파이썬(python) (0) | 2023.02.12 |
---|---|
[우선순위큐][실버3] 14235번 크리스마스 선물 - 파이썬(python) (0) | 2023.02.12 |
[▲][조합][골드5] 1038번 감소하는 수 - 파이썬(python) (0) | 2023.02.06 |
[백트래킹][실버3] 18429번 근손실 - 파이썬(python) (0) | 2023.02.06 |
[백트래킹][실버3] 15649번 N과 M (1) - 파이썬(python) (0) | 2023.02.06 |