Algorithm

SWEA 1926번: 간단한 369게임 (D2) - Python 풀이

서서리 2025. 4. 25. 23:35
SMALL

문제 설명

 

SW Expert Academy

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

swexpertacademy.com

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

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

1 2 3  4 5 6  7 8 9 …

  1. "3" "6" "9"가 들어가 있는 수를 말하지 않는대신, 박수를 친다. 이 때, 박수는 해당 숫자가 들어간 개수만큼 쳐야 한다.

예를 들어 숫자 35의 경우 박수 한 번, 숫자 36의 경우 박수를 두번 쳐야 한다.

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

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

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

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

[제약사항]

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

[입력]

입력으로 정수 N 이 주어진다.

[출력]

1 ~ N까지의 숫자를 게임 규칙에 맞게 출력한다.

입력

10

input.txt

출력

1 2 - 4 5 - 7 8 - 10

output.txt

풀이 과정

이지합니다.

369 같은 경우 ‘—-’로 바꿔야 하기 때문에 입력에 3과 6, 9가 몇 개씩 들어가는지 세서 개수만큼 ‘-’를 더해주고, 0개가 뜨면 숫자 그대로 넣으면 됩니다.

정답 코드

N = int(input())
arr = []
for i in range(1, N+1):
    # 배열에 append 될 요소를 문자열로 초기화
    element = ""
    # 3,6,9가 i에 몇 번 들어가는지 횟수를 저장할 변수
    cnt = 0
    # 3,6,9 횟수 세서 합치기
    cnt += str(i).count('3') + str(i).count('6') + str(i).count('9')
    # 0개라면
    if cnt == 0:
        # 해당 숫자를 문자로 전환만
        element = str(i)
    # 1개 이상이면
    else:
        # 개수만큼 "-" 곱하기
        element += "-" * cnt
    # 배열에 추가
    arr.append(element)
# 요소마다 한 칸씩 띄어서 출력
print(' '.join(arr))

이상입니다.

LIST