CS/알고리즘_문제풀이(파이썬)

구슬 게임

Jedy_Kim 2021. 7. 13. 16:49
728x90

문제

철수와 영희는 구슬 게임이 구슬 게임을 하려 한다. 이 구슬 게임의 규칙은 다음과 같다.

  1. 철수와 영희는 번갈아가며 구슬을 가져간다. 맨 처음에는 철수가 구슬을 가져간다.
  2. 구슬을 가져갈 때에는, 최소 1개에서 최대 3개까지 구슬을 가져갈 수 있다.
  3. 가져갈 구슬이 없는 사람이 진다.

예를 들어 5개의 구슬이 있다고 하자. 여기서 철수가 1개의 구슬을 가져가고, 영희가 3개의 구슬을 가져간 후, 철수가 마지막으로 1개의 구슬을 가져갔다고 가정하면 이 게임의 승자는 철수가 된다. 물론, 각자가 어떻게 구슬을 가져가느냐에 따라 승패가 달라질 수 있다. 철수와 영희는 이기기 위해서 최선을 다해서 게임을 플레이 한다. n개의 구슬을 시작으로 게임을 진행한다고 할 때, 철수가 이 게임을 이길 수 있다면 YES, 그렇지 않다면 NO를 출력하는 프로그램을 작성하시오.

 

입력

첫째 줄에 전체 구슬의 개수n 이 주어진다. (0 ≤ n ≤ 1,000,000)  

출력

첫째 줄에 철수가 이길 수 있으면 YES, 그렇지 않으면 NO를 출력한다.

 

예제 입력

3

예제 출력

YES

 

예제 입력

5

예제 출력

YES

 

예제 입력

191124

예제 출력

NO

 

# 접근법 

# 우선 문제의 포인트를 찾아보자면

# "철수와 영희는 이기기 위해서 최선을 다해서 게임을 플레이 한다." 이부분이다.

# 이 말은 구술이 4개 있을 경우에 

# 철수가 시작 시 1개를 가져갔다면 영희는 이기기위해 3개를 가져간다는 것이다 즉 철수가 1일 때 영희는 1을 선택할 경우의 수는 없다는 것이다.

# 또 철수가 2개를 가져가면 영희는 2개, 철수가 3개를 가져가면 영희는 1개 구술 4개의 상황에서는 철수가 이기는 상황은 없다.

# 구술 1~3일 경우는 철수가 무조건 전체를 시작하자마자 다 가져갈 것이기에 철수가 무조건 이긴다.

# 이런식으로 계산을 해보면 4의 배수에서 철수는 무조건 진다는 규칙을 찾을 수 있다.

 

#코드

1
2
3
4
5
6
7
8
9
10
import sys
 
if __name__ == "__main__":
  input = sys.stdin.readline
  
  n = int(input())
  if n%4 == 0
    print("NO")
  else:
    print("YES")
cs

 

반응형

'CS > 알고리즘_문제풀이(파이썬)' 카테고리의 다른 글

버튼 누르기  (0) 2021.07.14
카드 놀이  (0) 2021.07.14
직사각형의 합  (0) 2021.07.13
그룹 단어 체커  (0) 2021.07.12
1, 2, 3 더하기  (0) 2021.07.12