프로그래머스 - 숫자 문자열과 영단어 (lv 1 / python)

jplendor·2022년 3월 14일
0

문제 설명

▶ 입력 : 숫자의 일부 자릿수가 영단어로 바뀌어졌거나, 혹은 바뀌지 않고 그대로인 문자열 s
▶ 처리

  • 영단어가 의미하는 숫자로 변환

▶ 반환 : s가 원래 의미하는 숫자

입출력 예시

▶ 입력 : "one4seveneight"
▶ 처리

one => 1
seven => 7
eight => 8
▶ 반환 : 1478

나의 풀이

문자열에 해당하는 숫자는 1:1로 매칭되므로, dictionary 자료형을 사용해야겠다는 생각이 들었다.

dictionary를 돌면서 문자열을 찾고(find), 있는 경우(find()의 리턴 값이 -1이 아닌 경우)에 replace해주었다.

def solution(s):

    match_dic = {'zero': 0, 'one': 1, 'two': 2, 'three': 3, 'four': 4, 'five': 5, 'six': 6, 'seven': 7, 'eight': 8, 'nine': 9}

    for str_num in match_dic:
        if s.find(str_num) != -1:
            s = s.replace(str_num, str(match_dic[str_num]))

    return int(s)

발전된 풀이

  • key, value 쌍을 얻는 dic.items()을 이용하여 문자열 바꾸기(replace)에 더 간결하고 가독성 좋은 코드로 작성할 수 있다.
  • replace("변경하고 싶은 문자열", "변경 후 문자열") 사용 시, "변경하고 싶은 문자열"이 없는 경우 아무일도 일어나지 않고 넘어가기 때문에 굳이 if문을 통해 있는지 없는지 확인할 필요가 없었다.
def solution(s):
    
    match_dic = {'zero': '0', 'one': '1', 'two': '2', 'three': '3', 'four': '4', 'five': '5', 'six': '6', 'seven': '7', 'eight': '8', 'nine': '9'}
    
    for key, value in match_dic.items():
            s = s.replace(key, value)
    
    return int(s)
profile
만들기는 재밌어!

0개의 댓글