코딩테스트

[파이썬] 숫자 문자열과 영단어 - 2021 카카오 채용연계형 인턴십 [CODING TEST #4]

ALTERww 2022. 7. 19. 20:16
320x100

https://school.programmers.co.kr/learn/courses/30/lessons/81301

 

 

 

 

 

 

 

영단어 - 숫자로 구성된 딕셔너리를 만들고, 입력 s를 구분할 때에 처음에는 알파벳 별로 if-else를 만들려고 했는데, 코드가 쓸데없이 길어져서 이건 아니라고 생각했다. 리스트 내 String을 다른 String으로 바꾸는 replace()함수를 이용했다.

dict.items()는 key - value를 튜플로 묶어, 그 쌍들을 dict_items라는 객체에 저장하여 반환한다.

 

튜플로 묶인 쌍들을 return한다.
[ ]가 있지만 리스트 자료형은 아니고, 'dict_items' 객체에 저장된다.

 

mydict 내 튜플을 모두 돌면서, 영단어(data[0])에 해당하는 문자열들을 숫자(data[1])로 replace한다.

단, replace는 객체의 copy를 반환하므로 answer = answer.replace(...)로 구현해야 함.

 

def solution(s):
    answer = s
    # mydict : key - 영단어, value - 숫자
    mydict = {'zero' : '0', 'one' : '1', 'two' : '2', 'three' : '3', 'four' : '4', 
              'five' : '5', 'six' : '6', 'seven' : '7', 'eight' : '8', 'nine' : '9'}
        
    # s 안의 영단어(key = data[0])를 숫자(value = data[1])로 replace
    # replace()는 string에만 적용되므로, data[1]을 str로 cast
    for data in mydict.items():
        answer = answer.replace(data[0], data[1])                    
    
    # answer는 string이므로 int로 cast
    return int(answer)