출처: 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 'a' (0 + 97 = 97)
1 'b' (1 + 97 = 98)
2 'c' (2 + 97 = 99)
3 'd' (3 + 97 = 100)
...
9 '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를 합침