코딩테스트 연습
[2021 카카오 채용연계형 인턴십] 숫자 문자열과 영단어
코딩초보ran
2023. 12. 26. 12:08
11:33 시작, 11:48 끝
문제 설명
s 문자열(영어, 숫자 조합)이 들어오면 영어로 된 부분을 숫자로 바꿔서 return을 해야한다.
제한사항
입출력 예 및 설명
문제 풀이
def solution(s):
answer = 0
dict1={'zero':'0', 'one':'1', 'two':'2', 'three':'3', 'four':'4',
'five':'5', 'six':'6', 'seven':'7','eight':'8', 'nine':'9'}
keys = list(dict1.keys())
idx = 0
for _ in range(len(dict1)):
s = s.replace(keys[idx], dict1[keys[idx]])
idx+=1
answer = int(s)
return answer
코드 설명
s문자열에서 영어로된 부분이 있으면 해당 문자들을 숫자로 replace를 해주고자 한다.
따라서
1. 영어:숫자 로 매칭된 dict를 만든다 ----- dict1
2. 위에서 만든 dict1에서 keys만 저장한다. 이후에 for문 돌면서 s에 keys가 있으면 replace를 하기 위해. ----- list(dict1.keys())
3. s문자열에 keys의 0번째 index(위 코드에서는 'zero')가 있으면 dict1의 keys의 0번째 index에 해당하는 value로 문자를 변환) ----- s = s.replace(keys[idx], dict1[keys[idx]])
4. index를 1 증가한다.
채점 결과
다른 사람 풀이
def solution(s):
words = ['zero', 'one', 'two', 'three', 'four', 'five', 'six', 'seven', 'eight', 'nine']
for i in range(len(words)):
s = s.replace(words[i], str(i))
return int(s)
코드 설명
나는 {영어:숫자} 가 매칭된 dict를 만들었었다. 근데 위 코드는 숫자 부분을 dict에 따로 저장하지 않고, for문을 돌면서 i를 사용한다. words에는 영어만 저장이 되어 있기 때문에 나처럼 dict.keys()만 따로 뽑을 필요도 없고 코드가 더 간단하다.
다른 사람 풀이 채점 결과
다른 사람 풀이2
num_dic = {"zero":"0", "one":"1", "two":"2", "three":"3", "four":"4", "five":"5", "six":"6", "seven":"7", "eight":"8", "nine":"9"}
def solution(s):
answer = s
for key, value in num_dic.items():
answer = answer.replace(key, value)
return int(answer)
dict.items()로 풀면 코드가 훨씬 간결해진다!
문제 출처 : 프로그래머스/Lv1/숫자 문자열과 영단어/파이썬