문제 설명
우주여행을 하던 머쓱이는 엔진 고장으로 PROGRAMMERS-962 행성에 불시착하게 됐습니다. 입국심사에서 나이를 말해야 하는데, PROGRAMMERS-962 행성에서는 나이를 알파벳으로 말하고 있습니다. a는 0, b는 1, c는 2, ..., j는 9입니다. 예를 들어 23살은 cd, 51살은 fb로 표현합니다. 나이 age가 매개변수로 주어질 때 PROGRAMMERS-962식 나이를 return 하도록 solution 함수를 완성해주세요.
제한사항
- age는 자연수입니다.
- age ≤ 1,000
- PROGRAMMERS-962 행성은 알파벳 소문자만 사용합니다.
입출력 예
| age | result |
| 23 | "cd" |
| 51 | "fb" |
| 100 | "baa" |
내 풀이
def solution(age):
answer = []
alphabet = 'abcdefghijklmnopqrstuvwxyz'
for j in list(str(age)):
answer.append(list(alphebet)[int(j)])
return "".join(answer)
# 정리 전
def solution(age):
answer = []
alphabet = 'abcdefghijklmnopqrstuvwxyz'
alphabet_list = list(alphabet)
age_list = list(str(age))
for j in age_list:
answer.appned(alphabet_list[int(j)])
return "".join(answer)
회고
- 진짜 비효율적이고 열심히 풀었다! 뿌듯하다.
- 코드 진짜 무식하게 짰지만 누가 봤을 때 이해는 잘 되겠지. 뿌듯
- 처음에 문자열을 리스트로 만드는 법을 몰라서 리스트 컴프리헨션을 통해서 어렵게 만들었었는데, 의햄이 list() 함수를 알려주었다.
- 아스키 코드를 통해 풀 수도 있다: answer += chr(int(a)+97)
- 이걸 return ''.join([chr(int(a)+97) for i in str(age)]) 한 줄로 줄여서 쓰는 사람들 진짜 변태 같고 굉장하다.
- 문자열 'a' = 97 → ord() , chr() 을 통해 서로 변환 가능
- 의햄의 팁: 궁금할 때는 type() 을 써보자!
- map() 함수로도 풀어보고 싶은데 어떻게 푸는 건지 모르겠다. (되긴 되나?)
'Programmers > Python' 카테고리의 다른 글
| [프로그래머스] [Python] 음양 더하기 (0) | 2023.02.11 |
|---|---|
| [프로그래머스] [Python] 가장 큰 수 찾기 (0) | 2022.11.27 |
| [프로그래머스] [Python] 배열 회전시키기 (0) | 2022.11.26 |
| [프로그래머스] [Python] 자릿수 더하기 (0) | 2022.11.14 |
| [프로그래머스] [Python] 점의 위치 구하기 (0) | 2022.11.14 |