본문 바로가기
코딩 따라하기

삼육구 따라하기 (Coding Game three-six-nine)

by 전자남성 2020. 11. 24.

삼육구 따라하기 (Coding Game three-six-nine)

 

 

이번에는 추억의 삼육구 게임을 코딩해보겠습니다.

파일 이름은 three-six-nine.py로 지었습니다.

 

먼저 369 게임의 규칙을 설명하고 코드를 따라 해 보겠습니다.

 

첫째, 3693의 배수가 아닌 369가 들어가는 모든 숫자에서 박수를 치는 게임입니다.

3의 배수에서 손뼉 치는 게임이 아니라는 사실을 다시 한번 상기하셔 야합니다.

 

둘째, 369369가 들어가는 숫자대로 박수를 쳐야 합니다.

예를 들어 3636이 들어갔으니 박수를 두 번 칩니다. 333이 두 번 들어갔으니 박수를 두 번 칩니다.

369369과 들어갔으니 박수를 세 번 칩니다. 3333이 세 번 들어갔으니 박수를 세 번 칩니다.

두 가지 규칙만 기억하신다면 이제 누구라도 369게임을 만들 수 있습니다.

 

n = int(input('삼육구 게임이 끝나는 지점의 숫자를 넣으면 게임이 시작됩니다.'))

 

for n in range(1,n+1):

c=str(n).count('3')+str(n).count('6')+str(n).count('9')

if c==0:

print(n)

else:

print('*'*c)

 

 

1행에서는 삼육구 게임에 대한 설명을 친절하게 넣어봤습니다.

게임이 끝나는 지점의 값을 숫자 n으로 인식하게 세팅했습니다.

코드 실행 시 n은 사용자가 임의로 입력할 수 있습니다.

 

2행에서는 range(1,n+1)로 1에서 n까지, 1,2,3,4,~,n까지의 범위가 실행되는 함수입니다.

맨 앞에 for가 있으니 1~n 범위까지의 반복문입니다.

 

3행에서는 삼육구가 들어가는 숫자를 어떻게 정의하느냐입니다.

삼육구 코드의 가장 중요한 부분이라고 할 수 있습니다.

삼육구의 키포인트는 각 자리를 분리하여 생각하는 것입니다.

그럼 어떻게 각 자리를 분리할지에 대해 풀어보겠습니다.

n=123은 어떻게 분리할까요. n=123str(n)으로 생각해보겠습니다.

n=123str(n)이 됐으니 문자열로 바뀝니다. 여기서 str(n).count('3')을 넣습니다.

그럼 str(n)에서 3을 세는 함수가 됩니다.

그럼 다시 3행으로 돌아와 보겠습니다.

str(n).count('3')+str(n).count('6')+str(n).count('9')을 사용하면 해당 숫자에서 369일 때의 숫자를 카운트하여 더하게 됩니다.

 

4행은 3행에서 카운트한 숫자가 0이면 5행에서 그냥 정수 n이 출력됩니다.

 

6행은 카운트한 숫자가 0이 아니라서 4행을 만족하지 않으면 else문이 실행됩니다.

 

7행에서는 3행의 3,6,9가 들어간 숫자의 카운트를 '*'방식으로 표현했습니다.

'*'는 삼육구 게임에서 박수 정도로 가볍게 생각하시면 될 것 같습니다.

 

오늘도 VSCodeTERMINAL에서 코드를 실행했습니다.

 

 

 

C:\Users\ATIV\Downloads\myworks>python .\three-six-nine.py

삼육구 게임이 끝나는 지점의 숫자를 넣으면 게임이 시작됩니다.100

1

2

*

4

5

*

7

8

*

10

11

12

*

14

15

*

17

18

*

20

21

22

*

24

25

*

27

28

*

*

*

*

**

*

*

**

*

*

**

40

41

42

*

44

45

*

47

48

*

50

51

52

*

54

55

*

57

58

*

*

*

*

**

*

*

**

*

*

**

70

71

72

*

74

75

*

77

78

*

80

81

82

*

84

85

*

87

88

*

*

*

*

**

*

*

**

*

*

**

100

 

삼육구 또한 다양한 방식으로 표현할 수 있습니다.

저도 여러 버전에 삼육구를 봤지만 str().count()로 사용하는 코드가 제일 마음에 들었습니다.

거듭 강조하지만 자신한테 가장 잘 맞는 방식으로 코딩에 접근하시길 바랍니다.

댓글