[프로그래머스] Lv.0 369게임 풀이

Jiumn·2022년 11월 30일
0
post-thumbnail

[프로그래머스] Lv.0 369게임

문제 설명

머쓱이는 친구들과 369게임을 하고 있습니다. 369게임은 1부터 숫자를 하나씩 대며 3, 6, 9가 들어가는 숫자는 숫자 대신 3, 6, 9의 개수만큼 박수를 치는 게임입니다. 머쓱이가 말해야하는 숫자 order가 매개변수로 주어질 때, 머쓱이가 쳐야할 박수 횟수를 return 하도록 solution 함수를 완성해보세요.

제한사항

1 ≤ order ≤ 1,000,000

입출력 예 설명

입출력 예 #1

  • 3은 3이 1개 있으므로 1을 출력합니다.

입출력 예 #2

  • 29423은 3이 1개, 9가 1개 있으므로 2를 출력합니다.

풀이

나의 답안

숫자를 문자열로 바꾸고 해당 문자열 안에서 3, 6, 9 가 있으면 박수 칠 횟수를 1씩 더해주면 된다고 생각했다.

def solution(order):
    count = 0
    order_str = str(order)
    if order_str.count('3') >= 1 or order_str.count('6') >= 1 or order_str.count('9') >= 1:
        count += 1
        return count
    else:
        return 0

그런데 이 코드의 문제는 3, 6, 9 가 숫자에 2개 이상 들어갈 때는 셀 수가 없다는 점이다.
if문을 3, 6, 9가 포함되는 횟수가 0 이상일 때로 만들어줬지만 그래도 박수 칠 횟수(count)는 여전히 1씩만 올라가는 게 문제인 것 같았다.

거의 다 푼 것 같은데 힌트를 못 찾겠어서 결국 실패. ^_ㅠ

정답 코드

def solution(order):
    count = 0
    order_str = str(order)
    for i in range(len(order_str)):
        if order_str[i] == '3' or order_str[i] == '6' or order_str[i] == '9':
            count += 1
    return count

(정답 코드를 보니 거의 다 왔는데...)
문자열이나 배열에서 해당 문자열 여부를 찾아줄 때는 반복문을 사용해야 한다.
부등호 쓸 필요 없고 동등 연산자로 체크해주면 된다!

profile
Back-End Wep Developer. 꾸준함이 능력이다.

0개의 댓글