공부하자

[SWEA/Python][D2] 1926. 간단한 369게임 본문

Algorithm/SWEA

[SWEA/Python][D2] 1926. 간단한 369게임

dev_riley 2021. 9. 8. 00:41

<문제>

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())
for i in range(1, N+1):
    cnt = 0
    if (i % 10) == 3 or (i % 10) == 6 or (i % 10) == 9:
        cnt += 1
    if (i // 10) != 0 and (i // 10) % 3 == 0:
        cnt += 1

    if cnt >= 1:
        i = '-' * cnt
    print(i, end=' ')

<REVIEW>

조금 고민이 되었던 문제다. 처음에는 in을 써서 if '3' in str(i) 일때 cnt에 1을 더해주는 식으로 했는데, 이런식으로 하니 33이나 66같은 중복된 숫자도 1로 카운트되었다. 그래서 아예 10의 자리수 카운트 따로하고, 1의 자리수 카운트 따로 하는 식으로 코드를 짰다. REVIEW를 적다보니 생각난 건데, 비록 SWEA에 pass를 했지만, 이 코드는 N이 100이하 일때만 가능한 코드인 것 같다. 숫자가 무엇이 주어지든 간에 적용가능해야하는데 이 코드는 그러지 못하니 다시 한 번 생각을 해봐야겠다. 흠..pass했다고 마냥 좋아할 게 아니었다.

<출처>

https://swexpertacademy.com/main/code/problem/problemDetail.do?problemLevel=2&contestProbId=AV5PTeo6AHUDFAUq&categoryId=AV5PTeo6AHUDFAUq&categoryType=CODE&problemTitle=&orderBy=FIRST_REG_DATETIME&selectCodeLang=ALL&select-1=2&pageSize=10&pageIndex=1

'Algorithm > SWEA' 카테고리의 다른 글

[SWEA/Python][D2]1859. 백만장자 프로젝트  (0) 2021.09.07
[SWEA/Python][D1] 2056. 연월일 달력  (0) 2021.09.02
Comments