TIL-41. [코딩테스트] 프로그래머스 lv1. 숫자 문자열과 영단어
숫자와 숫자를 영단어로 바꾼 문자열이 뒤섞인 인자를 받아서
전부 숫자로 바꿔주면 되는 문제였다.
문자열 관련이라 마찬가지로 정규식으로 간단하게 풀어보았는데
너무 정규식만 쓰는 것 같아 다음 번엔 정규식 말고
split이나 다른 걸 이용해서 풀어봐야겠다.
def solution(s):
s = re.sub('zero', '0', s)
s = re.sub('one', '1', s)
s = re.sub('two', '2', s)
s = re.sub('three', '3', s)
s = re.sub('four', '4', s)
s = re.sub('five', '5', s)
s = re.sub('six', '6', s)
s = re.sub('seven', '7', s)
s = re.sub('eight', '8', s)
s = re.sub('nine', '9', s)
return int(s)
너무 하드코딩 느낌이라 별로인 느낌이다.
정규식은 한 줄에 처리돼야 깔끔한데..
리턴값에 int를 안 넣어주면 숫자 같이 생긴 문자열을 반환하기 때문에
채점을 통과하지 못한다.
첨에 답은 맞게 나오는데 다 일치하지 않는다고 나와서
어리둥절했었다. ㅎㅎ
다른 사람들이 답을 보니 나랑 똑같이 한 사람들도 있었지만
대부분 리스트 혹은 딕셔너리에 영단어를 담아두고
replace로 치환하는 형태를 썼다.
해당 소스들 참고해서 내 정규식 소스를 줄여보았다.
import re
eng_nums = ['zero', 'one', 'two', 'three', 'four', 'five', 'six', 'seven', 'eight', 'nine']
def solution(s):
for i in range(len(eng_nums)):
s = re.sub(eng_nums[i], str(i), s)
return int(s)
이전보다는 조금 더 짧아졌다.
하지만 이전 코드가 내 눈엔 더 직관적으로 읽히는 듯!
Author And Source
이 문제에 관하여(TIL-41. [코딩테스트] 프로그래머스 lv1. 숫자 문자열과 영단어), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@solarrrrr1010/TIL-41.-코딩테스트-프로그래머스-lv1.-숫자-문자열과-영단어저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)