프로그래머스 연습 문제 Lv.1
네오와 프로도가 숫자놀이를 하고 있습니다. 네오가 프로도에게 숫자를 건넬 때 일부 자릿수를 영단어로 바꾼 카드를 건네주면 프로도는 원래 숫자를 찾는 게임입니다.
다음은 숫자의 일부 자릿수를 영단어로 바꾸는 예시입니다.
1478 → "one4seveneight"
234567 → "23four5six7"
10203 → "1zerotwozero3"
이렇게 숫자의 일부 자릿수가 영단어로 바뀌어졌거나, 혹은 바뀌지 않고 그대로인 문자열 s가 매개변수로 주어집니다. s가 의미하는 원래 숫자를 return 하도록 solution 함수를 완성해주세요.
.replace( )로 하나하나 치환
def solution(s): answer = 0 # s 문자열 중에서 'one', 'two' 등 영어로 적혀있는 문자를 '1, '2'와 같은 형식으로 교체한다. 위치는 바꾸지 않는다. s = s.replace('one', '1') # replace 한 걸 s에 재할당해야 함. s = s.replace('two', '2') s = s.replace('three', '3') s = s.replace('four', '4') s = s.replace('five', '5') s = s.replace('six', '6') s = s.replace('seven', '7') s = s.replace('eight', '8') s = s.replace('nine', '9') s = s.replace('zero', '0') return int(s) # int로 변환
딕셔너리 활용
def solution(s): nums = { 'zero' : '0', 'one' : '1', 'two' : '2', 'three' : '3', 'four' : '4', 'five' : '5', 'six' : '6', 'seven' : '7', 'eight' : '8', 'nine' : '9' } for key, value in nums.items(): s = s.replace(key,value) return int(s)
영단어
와 숫자
를 키-밸류의 구조로 연결했다. 해당 풀이의 댓글에 딕셔너리 대신 리스트를 활용하여 enumerate를 사용하는 방법이 있다고 해서 작성해보았다.
↓
리스트, enumerate( ) 활용
def solution(s): nums = ['zero', 'one', 'two', 'three', 'four', 'five', 'six', 'seven', 'eight', 'nine'] for index, word in enumerate(nums): s = s.replace(word, str(index)) return int(s)
영단어
와 영단어의 인덱스
를 치환해주었다.enumerate 대신 range(len( ))을 사용하는 방법도 있다.
↓
리스트, range(len( )) 활용
def solution(s): nums = ['zero', 'one', 'two', 'three', 'four', 'five', 'six', 'seven', 'eight', 'nine'] for i in range(len(nums)): s = s.replace(nums[i], str(i)) return int(s)
i번째 순서에 있는 영단어
nums[ i ] 를, str(i
) 로 치환해주었다.