nueijeel

[프로그래머스][python] Lv.0 - 외계행성의 나이 본문

코딩테스트/프로그래머스

[프로그래머스][python] Lv.0 - 외계행성의 나이

nueijeel 2023. 2. 14. 11:50

문제 설명

우주여행을 하던 머쓱이는 엔진 고장으로 PROGRAMMERS-962 행성에 불시착하게 됐습니다. 입국심사에서 나이를 말해야 하는데, PROGRAMMERS-962 행성에서는 나이를 알파벳으로 말하고 있습니다. a는 0, b는 1, c는 2, ..., j는 9입니다. 예를 들어 23살은 cd, 51살은 fb로 표현합니다. 나이 age가 매개변수로 주어질 때 PROGRAMMER-962식 나이를 return하도록 solution 함수를 완성해주세요.

 

 

해결 단계

 

"a는 0, b는 1, c는 2, ..., j는" 을 보자마자 dictionary형 변수를 사용해야겠다고 생각했다.

다만 값을 비교해야하는 age가 int형 변수이기 때문에 문자열로 바꾸는 과정을 거친 후, 비교해야 한다.

 

 

작성한 코드

def solution(age):
    answer = ''
    d = {0:'a',1:'b',2:'c',3:'d',4:'e',5:'f',6:'g',7:'h',8:'i',9:'j'}
    age = str(age)
    for char in age:
        for key in d:
            if char==str(key):
                answer+= d.get(key)
    return answer

딕셔너리형 변수의 키 값과 age 값을 자릿수별로 비교하여 일치할 경우 dict.value를 answer에 합치는 방식으로 진행하였다.

def solution(age):
    d = {'0':'a','1':'b','2':'c','3':'d','4':'e'
            ,'5':'f','6':'g','7':'h','8':'i','9':'j'}
    return ''.join(d[i] for i in str(age))

문제 푼 뒤 다른 분들의 풀이를 살펴보니 이런 방식도 가능했다.

딕셔너리형 변수를 선언한 뒤, age변수 자릿값별로 딕셔너리형 변수의 key와 비교하여 해당하는 value를 join 함수의 인자로 주어 바로 결과로 return하는 구조다.

내장함수와 자료형을 올바르게 사용해서 반복문 덕지덕지한 코드가 아니라 훨씬 간결한 코드를 짤 수 있는게 파이썬만의 매력인 것 같다.

나는 언제쯤 이렇게 짜보나.. 공부를 할수록 할게 더 많아지는 느낌ㅜㅡㅜ 오늘도 화이팅~!

728x90