Notice
Recent Posts
Recent Comments
Link
just inside
[SWEA/D2] 1926. 간단한 369게임 본문
728x90
[문제 링크]
https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV5PTeo6AHUDFAUq
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)
[입력]
입력으로 정수 N 이 주어진다.
[출력]
1 ~ N까지의 숫자를 게임 규칙에 맞게 출력한다.
제출 코드
n = int(input())
res = []
num_369 = ['3', '6', '9']
for i in range(1, n+1):
i = str(i)
# 3, 6, 9가 들어있는 경우
if ('3' in i) or ('6' in i) or ('9' in i):
# 3, 6, 9가 각각 몇번 등장하는지 count해 저장
cnt_dict = {num: i.count(num) for num in num_369}
# 369 총 등장 횟수 계산
cnt_369 = sum(cnt_dict.values())
# 등장 횟수만큼 - 곱해줌
i = str('-'*cnt_369)
res.append(i)
print(*res)
풀이
- 3, 6, 9가 등장하는 경우, 각 숫자가 몇 번씩 등장하는지 count하고, 등장 횟수만큼 -를 곱해줘 출력한다.
알아둘 사항
- 딕셔너리도 list comprehension 처럼 생성할 수 있다.
728x90
'coding test > SWEA' 카테고리의 다른 글
[SWEA/D2] 1945. 간단한 소인수분해 (0) | 2024.10.31 |
---|---|
[SWEA/D2] 1940. 가랏! RC카! (0) | 2024.10.31 |
[SWEA/D2] 1859. 백만 장자 프로젝트 (0) | 2024.10.31 |
[SWEA/D2] 1284. 수도 요금 경쟁 (1) | 2024.10.31 |
[SWEA/D2] 1204. 최빈수 구하기 (1) | 2024.10.31 |