[오늘의 문제] 외계행성의 나이

shlim55·2025년 10월 24일

코딩테스트

목록 보기
159/223

출처: https://school.programmers.co.kr/learn/courses/30/lessons/120834?language=python3

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

제한사항
age는 자연수입니다.
age ≤ 1,000
PROGRAMMERS-962 행성은 알파벳 소문자만 사용합니다.
입출력 예
age result
23 "cd"
51 "fb"
100 "baa"
입출력 예 설명
입출력 예 #1

age가 23이므로 "cd"를 return합니다.
입출력 예 #2

age가 51이므로 "fb"를 return합니다.
입출력 예 #3

age가 100이므로 "baa"를 return합니다.

내가 작성한 코드문

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

역시나 자바 스위치문 생각하면서 이렇게 알고리즘 구현함

다른 사람의 풀이

def solution(age):
    age = str(age)
    age = age.replace("0", "a")
    age = age.replace("1", "b")
    age = age.replace("2", "c")
    age = age.replace("3", "d")
    age = age.replace("4", "e")
    age = age.replace("5", "f")
    age = age.replace("6", "g")
    age = age.replace("7", "h")
    age = age.replace("8", "i")
    age = age.replace("9", "j")
    return age

1차원적인 풀이

def solution(age):

    return ''.join([chr(int(i)+97) for i in str(age)])

유니코드를 활용한 풀이

chr(...): 계산된 정수 값을 해당하는 ASCII/유니코드 문자로 변환한다.
0 \rightarrow 'a' (0 + 97 = 97)
1 \rightarrow 'b' (1 + 97 = 98)
2 \rightarrow 'c' (2 + 97 = 99)
3 \rightarrow 'd' (3 + 97 = 100)
...
9 \rightarrow 'j' (9 + 97 = 106)

마지막에 생성된 알파벳들을 join으로 순차적으로 합쳐서 반환한다.

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

딕셔너리를 활용한 풀이

딕셔너리 conv에서 현재 숫자 문자(i)에 해당하는 알파벳 문자(값)를 찾아 가져온다.

그 다음에 join으로 순차적으로 문자열로 합친후 반환한다.
2면 밸류값c를 3이면 밸류값 d를 합침

profile
A Normal Programmer

0개의 댓글