-
[Algorithm - 프로그래머스] Python 숫자 문자열과 영단어Programming/Algorithm 2021. 10. 21. 00:40
문제 (LV.1)
https://programmers.co.kr/learn/courses/30/lessons/81301
코드
def solution(s): answer = '' num = {"zero" : '0', "one" : '1', "two" : '2', "three" : '3' , "four" : '4', "five" : '5', "six" : '6', "seven" : '7' , "eight" : '8', "nine" : '9' } tmp_words = "" for i in s: if i.isdigit(): answer += i continue tmp_words += i if tmp_words in num.keys(): # dictionary key 안에 단어가 존재한다면 answer += num.get(tmp_words) # num[tmp_words] tmp_words = "" return int(answer) # int형으로 변환
해설
파라미터로 주어지는 문자열이 for 문을 돌 때, 숫자라면 answer에 값을 더해준다.
문자라면 각각에 단어를 임시 리스트에 넣어주고 그 임시 리스트가 딕셔너리키에 존재할 때, answer에 넣어주고 다시 임시 리스트를 초기화 한다.
좀 더 깔끔한 방법이 없나 찾아보다가 아래와 같은 방식으로 푸신 분의 코드를 보았다.
num.items()를 사용하여 딕셔너리에 모든 아이템을 불러와 존재한다면 i[0]인 key는 i[1]인 value로 변경해준다.
for i in num.items(): # item은 key-value 리스트로 구성 s = s.replace(i[0], i[1])
아직 파이썬이 익숙하지 않지만, 파이썬의 장점인 간결함을 살릴 수 있는 코드를 많이 짜려고 노력해야겠다.
'Programming > Algorithm' 카테고리의 다른 글
[Algorithm - 프로그래머스] Python 전력망을 둘로 나누기 (0) 2021.11.23 [Algorithm - 프로그래머스] Python 조이스틱 (0) 2021.11.21 [Algorithm - 프로그래머스] Python 신규 아이디 추천 (0) 2021.10.20 [Algorithm - 프로그래머스] Python 로또의 최고 순위와 최저 순위 (0) 2021.10.19 [Algorithm] Python 1부터 n까지의 합 (0) 2021.09.23