본문 바로가기

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

@doyiya242025. 8. 7. 16:35

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를 출력합니다.

 

 

내가 작성한 코드

def solution(order):
    count = 0
    for i in str(order):
        if i == "3" or i == "6" or i == "9" :
            count += 1
    return count

-> 제일 간단하고 가독성이 쉬운 코드인것 같다. 숫자를 문자로 바꿀때는 str() 사용!

 

 

 

 

다른 사람이 작성한 코드

def solution(order):
    return sum(map(lambda x: str(order).count(str(x)), [3, 6, 9]))

=> 이 코드는 어려워서 검색해서 코드 분석을 보았다. map을 통해 1을 매핑하였고, order 안에서 x인 3,6,9를 1로 세는 방식으로 구현하였다. 어렵다..

 

map(lambda x: str(order).count(str(x)), [3, 6, 9])

  • map()은 리스트 [3, 6, 9]의 각 요소 x에 대해,
    str(order).count(str(x)) 를 적용합니다.
  • 즉:
    • "936".count("3") → 1
    • "936".count("6") → 1
    • "936".count("9") → 1

→ 결과: [1, 1, 1]

 

 

 

회고

내가 한 부분도 틀리진않았다고 본다! 하지만 map과 lambda 함수를 사용할 방법은 전혀 알지 못했다. 새로운 방법을 하나 배워간다!

 

 

목차