2021 KAKAO 채용 연계형 인턴십 숫자 문자열과 영단어 파이썬

최대 1 분 소요

2021 KAKAO 채용 연계형 인턴십 숫자 문자열과 영단어 파이썬 풀이

이번 문제는 레벨 1입니다.

접근방식

  1. for문을 이용해서 만약 숫자 그대로라면 answer에 더해주고,
  2. 문자라면 이후 두번째 for문을 이용해서 dict에 있는 key 중 일치하는 게 있는지 확인해줍니다.
  3. 존재한다면 해당 문자에 대응하는 숫자를 더해주고 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

댓글남기기