본문 바로가기
알고리즘

[알고리즘 문제] 369 (Python / 파이썬)

by yewonnie 2022. 5. 11.

문제

유니는 지니와 369 게임을 하고 있다.
369 게임은 유니가 처음에 1을 부르고, 지니가 2, 유니가 3, 지니가 4, ... 처럼 번갈아가며 자연수를 순서대로 부르면서 진행 된다. 단, 3, 6, 9가 들어간 수는 수를 부르지 않고 그 수에 3, 6, 9가 등장한 횟수만큼 박수를 쳐야 한다.
예를 들어 3, 6, 9, 13, 23 등은 박수를 한 번 쳐야 하고, 33, 63, 3322는 박수를 두 번, 9999는 박수를 네 번 쳐야 한다.
자연수 N이 주어질 때 유니와 지니가 부르는 수와 박수를 출력하는 프로그램을 작성하시오. 수를 부른다면 그 수를 출력하고, 박수를 친다면 
를 박수의 횟수만큼 출력한다. 만약 세 번의 박수를 친다면 ___ 처럼 
를 세 개 붙여서 출력한다.

입력

첫째 줄에 N이 주어진다. ( 2 ≤ N ≤ 1,000 ) 

출력

첫째 줄에 유니와 지니가 부르는 수와 박수의 개수를 공백으로 구분하여 출력한다.​

문제 풀이

369 게임은 어떤 수에 3, 6, 9가 등장한 횟수만큼 박수를 쳐야 합니다.

따라서 n이 주어졌을 때 1부터 n까지의 수를 차례로 부르며 

수를 부른다면 그 수를 출력하고 박수를 친다면 박수의 횟수를 출력해야 합니다.

 

for문을 이용해 1부터 n까지 하나씩 확인하며 해당 수의 3, 6, 9 등장 횟수를 세어줍니다.

수를 문자열로 바꿔주고, count() 함수를 이용해 해당 문자열 안의 

3, 6, 9 의 개수를 세어주어 모두 더해줬습니다.

 

만약 count가 0이라면 3, 6, 9가 등장하지 않은 것이므로 해당 수를 출력해주었고

count가 0보다 크다면 _를 count만큼 출력해주었습니다.


My Code

n = int(input())

for i in range(1, n + 1):
    num = str(i) # 문자열로 바꿔줌
    
    count = 0
    count += num.count('3') # 3의 등장 횟수
    count += num.count('6') # 6의 등장 횟수
    count += num.count('9') # 9의 등장 횟수

    if count == 0: # 3, 6, 9가 등장하지 않았다면
        print(num, end = ' ') # 수를 출력
    else:          # 등장했다면
        print(count * '_', end = ' ') # 등장 횟수만큼 _ 출력

댓글