CodingTest

SWEA - 간단한 369게임(1926)

취업하고싶다! 2023. 10. 19. 18:45
 

SW Expert Academy

SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!

swexpertacademy.com

 

문제

3 6 9 게임을 프로그램으로 제작중이다. 게임 규칙은 다음과 같다.

 

1. 숫자 1부터 순서대로 차례대로 말하되, “3” “6” “9” 가 들어가 있는 수는 말하지 않는다.

  1 2 3 4 5 6 7 8 9

2. "3" "6" "9"가 들어가 있는 수를 말하지 않는대신, 박수를 친다. 이 때, 박수는 해당 숫자가 들어간 개수만큼 쳐야 한다.  
예를 들어 숫자 35의 경우 박수 한 번, 숫자 36의 경우 박수를 두번 쳐야 한다.
 

입력으로 정수 N 이 주어졌을 때, 1~N 까지의 숫자를

게임 규칙에 맞게 출력하는 프로그램을 작성하라.

박수를 치는 부분은 숫자 대신, 박수 횟수에 맞게 “-“ 를 출력한다.

여기서 주의해야 할 것은 박수 한 번 칠 때는 - 이며, 박수를 두 번 칠 때는 - - 가 아닌 -- 이다. 
 

[제약사항]

N은 10이상 1,000이하의 정수이다. (10 ≤ N ≤ 1,000)

 

 

접근방식

for문을 인자 i를 받아 1부터~N+1까지 돌리면서 숫자 i를 문자열로 바꿔줌(1 -> '1', 2 -> '2', 3 -> '3'...)

그리고 counts = i.count('3') + i.count('6') + i.count('9')를 통해 그 문자열에 문자 '3', '6', '9'가 얼마나 있는지 확인

예로 i = 36 이면 i = str(i)를 통해 i = '3'으로 만들고 counts = 1이 됨

만약 counts = 0이면 문자 '3', '6', '9'가 없는 것이므로 문자 i를 그대로 출력

counts != 0이면 문자 '3', '6', '9'가 있는 것이므로 문자 i 대신 문자 '-'를 출력하는데 counts 값만큼 출력

 

 

 

코드

N = int(input())
for i in range(1, N+1):
    i = str(i)
    counts = i.count('3') + i.count('6') + i.count('9')
    if counts == 0:
        print(i, end=' ')
    else:
        print("-" * counts, end=' ')