본문 바로가기
Python

본 캠프 Python 알고리즘 코드카타 11일차

by Data 학습자 2024. 7. 6.

오늘 풀어본 문제

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

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

네오와 프로도가 숫자놀이를 하고 있습니다. 네오가 프로도에게 숫자를 건넬 때 일부 자릿수를 영단어로 바꾼 카드를 건네주면 프로도는 원래 숫자를 찾는 게임입니다. 주어진 문자열 s가 숫자의 일부 자릿수를 영단어로 바꾼 것이므로, 이를 원래 숫자로 변환하는 함수 solution을 작성하는 문제입니다.

 

문제 풀이 순서:

 

각각의 숫자을 지칭하는 단어와 숫자를 매핑하는 딕셔너리를 생성합니다.

def solution(s):
    num_dict = {
        'zero'  : '0',
        'one'   : '1',
        'two'   : '2',
        'three' : '3',
        'four'  : '4',
        'five'  : '5',
        'six'   : '6',
        'seven' : '7',
        'eight' : '8',
        'nine'  : '9'
    }

 

딕셔너리에 저장되어 있는 값들을 순회하며 각각 단어와 숫자를 저장하며 반복할 반복문을 작성합니다.

for word, num in num_dict.items():

 

매개변수(변환해야하는 단어)를 딕셔너리에 저장되어 있는 키(Key) 이라면 몫(Value)의 값으로 변환하여 재배치를 합니다.

s = s.replace(word, num)

 

재 배치된 값을 출력하는 명령어를 작성합니다.

return int(s)

 

최종 코드문:

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

상세 설명:

  1. 굳이 s를 quiz로 바꿔 출력한 이유는 좀 더 "문제를 풀었다" 라는 느낌이 들 것 같아서 바꾸어 출력하였다
  2. answer를 굳이 int(quiz)로 바꾼 뒤 answer가 출력되게 한 이유 quiz를 풀었다는 답변으로 answer로 하는게 더 재밌을 것 같아서 그렇게 작성했다.

오늘 배운 점:

  • 딕셔너리에 대해 이론만 공부를 해오다 처음으로 실습하여 풀어보았습니다.
  • replace() 통해 복잡할 수 있는 문자열 변환 작업방법을 알게되었습니다.