2021 KAKAO 채용 연계형 인턴십 숫자 문자열과 영단어 파이썬
이번 문제는 레벨 1입니다.
접근방식
- for문을 이용해서 만약 숫자 그대로라면 answer에 더해주고,
- 문자라면 이후 두번째 for문을 이용해서 dict에 있는 key 중 일치하는 게 있는지 확인해줍니다.
- 존재한다면 해당 문자에 대응하는 숫자를 더해주고 i += 1을 통해서 이후 자리수부터 확인해줍니다.
정답코드
def solution(s):
dict = {'zero':0, 'one': 1, 'two': 2, 'three':3, 'four': 4, 'five': 5, 'six': 6, 'seven': 7, 'eight': 8, 'nine': 9}
answer = ""
for i in range(0, len(s)):
if s[i].isnumeric():
answer += s[i]
i += 1
else:
for j in range(i+1, len(s)+1):
if s[i:j] in dict.keys():
answer += str(dict[s[i:j]])
i += 1
return int(answer)
모범코드
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)
딕셔너리 자료형에서 key와 value 쌍을 얻는 함수로 items()가 있는데
이를 replace와 같이 활용해서 바로 치환해주는 매우 간결한 코드가 있습니다.
for문에서 enumerate와 같이 하나의 인자가 아니라 두 개를 활용하는 것이 상황에 따라
매우 간결하게 알고리즘을 풀 수 있게 도와주는 것 같습니다.
알고리즘도 모든 것과 마찬가지로 꾸준한 연습과 이해를 바탕으로 실력이 향상합니다.
Just do it & Keep steady
댓글남기기