관리 메뉴

오늘도 배운다

숫자 문자열과 영단어 / 프로그래머스, 파이 코딩테스트 연습2021 카카오 채용연계형 인턴십 본문

코딩테스트연습(파이썬)

숫자 문자열과 영단어 / 프로그래머스, 파이 코딩테스트 연습2021 카카오 채용연계형 인턴십

LearnerToRunner 2022. 11. 30. 11:12

문제

네오와 프로도가 숫자놀이를 하고 있습니다. 네오가 프로도에게 숫자를 건넬 때 일부 자릿수를 영단어로 바꾼 카드를 건네주면 프로도는 원래 숫자를 찾는 게임입니다.다음은 숫자의 일부 자릿수를 영단어로 바꾸는 예시입니다.
1478 → "one4seveneight"
234567 → "23four5six7"
10203 → "1zerotwozero3"

이렇게 숫자의 일부 자릿수가 영단어로 바뀌어졌거나, 혹은 바뀌지 않고 그대로인 문자열 s가 매개변수로 주어집니다. s가 의미하는 원래 숫자를 return 하도록 solution 함수를 완성해주세요.

 

 

제출답안

def solution(s):
    text_to_num = {'zero': 0, 'one': 1, 'two': 2, 'three': 3, 'four': 4, 'five': 5, 'six': 6, 'seven': 7, 'eight': 8, 'nine': 9}
    
    for num in text_to_num.keys():
        if num in s:
            s = s.replace(num, str(text_to_num[num]))
    answer = int(s)
    return answer

 

 

제출 후 개선답안

1. 딕셔너리 내 각 키의 Value를 처음부터 str 타입으로 주어서 각 loop 에서 str 과정을 생략
2. items 를 활용하여 for loop 내 내용을 간략화
3. 텍스트로 적힌 숫자가 주어진 스트링에 있는지 확인하는 과정 생략

def solution(s):
    text_to_num = {'zero': '0', 'one': '1', 'two': '2', 'three': '3', 'four': '4', 'five': '5', 'six': '6', 'seven': '7', 'eight': '8', 'nine': '9'}
    
    for text, num in text_to_num.items():
        s = s.replace(text, num)
    answer = int(s)
    return answer

첫 답변 결과 / 개선 후 결과

 

 

문제 바로가기

 

728x90
Comments