Algorithm/Programmers
[Programmers] 369게임 (str.count(),lambda,filter,정규표현식 사용한 풀이)
juyeong
2023. 2. 1. 17:45
반응형
import re
def solution1(order):
'''
source: https://school.programmers.co.kr/learn/courses/30/lessons/120891
idea:
1. count() 를 이용하여 풀기 (solution1)
2. lambda() 사용 (solution2)
3. filter() 사용 (solution3)
4. 정규표현식의 findall() 사용 (solution4)
'''
answer = 0
order = str(order)
answer += order.count('3')
answer += order.count('6')
answer += order.count('9')
return answer
def solution2(order):
order = str(order)
return sum(map((lambda x: order.count(x), '369')))
def solution3(order):
order = str(order)
return len(list(filter(lambda x: x in '369', order)))
def solution4(order):
order = str(order)
return len(re.findall('[369]', order))
숫자 order 가 매개변수로 주어질 때, 369게임에 맞춰 리턴해야하는 박수의 수를 구하는 문제이다.
solution1: str.count()를 사용하여 간단하게 풀이. 근데 저 answer를 + 로 연결해서 한줄로 끝내는게 더 깔끔했을 것 같다
solution2: 람다를 사용한다. 3,6,9를 순회한 뒤 리턴값을 sum함수를 이용하여 총합을 구한다.
solution3: filter를 사용한다. filter는 매개변수를 2개 갖는다. filter(args1: 거르는 기준이 되는 함수 , args2: 걸러질 리스트) 라고 생각하면 된다.
solution4: 정규표현식을 사용한다. (import re)
findall 의 결과는 리스트로 반환되고 이 리스트의 길이를 리턴한다.
간단한 문제인데 풀이방법이 다양했다. 그리고 파이썬의 람다, 맵, 정규표현식 같은 함수를 사용하는 것이 미숙해서 시간이 좀 소요됐다. 나중에 또 복습해야지~
반응형