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 함수를 사용할 방법은 전혀 알지 못했다. 새로운 방법을 하나 배워간다!
'CodingTest > 프로그래머스 (미운영)' 카테고리의 다른 글
| [프로그래머스 Lv.0] 대문자와 소문자 (0) | 2025.08.08 |
|---|---|
| [프로그래머스 Lv.0] 암호 해독 (0) | 2025.08.08 |
| [프로그래머스 Lv.0] 중복된 문자 제거 (0) | 2025.08.07 |
| [프로그래머스 Lv.0] 컨트롤 제트 (0) | 2025.08.07 |
| [프로그래머스 Lv.0] 소인수분해 (0) | 2025.08.01 |