2022. 12. 24. 20:12ㆍcode/[프로그래머스] python
문제
우주여행을 하던 머쓱이는 엔진 고장으로 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 행성은 알파벳 소문자만 사용합니다.
입출력 예
입출력 예 설명
입출력 예 #1
- age가 23이므로 "cd"를 return합니다.
입출력 예 #2
- age가 51이므로 "fb"를 return합니다.
입출력 예 #3
- age가 100이므로 "baa"를 return합니다.
✔풀이
def solution(age):
answer = ''
alpha='abcdefghij'
for alphabet in str(age):
answer += alpha[int(alphabet)]
return answer
📝설명
문제에서 a는 0, b는 1, c는 2... 라고 말해줬고, answer을 빈 문자열로 줬다.
age를 문자열로 변환해야겠군! 이라고 생각했다. age는 숫자이기 때문에 type이 int이기 때문이다.
alpha는 0~9까지의 알파벳을 나타내는 'abcdefghij'로 정의했다.
문자열을 for문에 적용할 수 있기에, str를 활용해서 age를 문자열로 변환한 값을 반복범위에 넣었다.
for문을 통해 숫자가 하나씩 나오는데, 이 값을 alpha 문자열의 인덱스넘버로 꺼내면 외계행성에서 나이를 나타내는 알파벳을 도출하게 된다.
👑모범 답안
🔎'구분자'.join(list)은 리스트를 문자열로 만들어서 반환해주는 함수이다.
이를 테면 '*'.join([3, 4, 5])가 있다고 해본다면! 결과물은 "3*4*5"가 된다는 것이다.
이 답안에서는 내가 짰던 코딩처럼 for문을 통해 age의 숫자를 하나씩 꺼낸다.
차이점은 바로 chr(int(i)+97) 이 부분이다.
int(1)+97는 단 번에 이해할 수 있다. age가 23이라면, 2는 여기서 98, 3은 99가 된다.그렇다면 이렇게 나온 숫자를 감싸는 chr()은 뭘까?chr()은 숫자를 알파벳으로 바꿔주는 것이다.여기서 chr(97)은 a를 의미하고, 안의 숫자가 1씩 커질수록 나오는 알파벳 순서도 하나씩 뒤로 물러난다.ex) chr(97)=a, chr(98)=b, chr(99)=c i가 0이라면 97이 되고 a가 된다는 말씀!그렇게 나이에 있는 숫자가 한 땀 한 땀 모여서 리스트를 형성하고, 이를 join을 통해 문자열로 만들면 끝!
👀느낀 점
: 이 문제를 통해서 join도 배우고, chr도 배웠다.
오늘 습득한 내용을 다룰 줄 아는 멋쟁이가 될테다.
'code > [프로그래머스] python' 카테고리의 다른 글
[코딩 테스트 연습 입문] 모스부호 (1) (0) | 2022.12.25 |
---|---|
[코딩 테스트 연습 입문] 진료순서 정하기 (0) | 2022.12.25 |
[코딩 테스트 연습 입문] 옷가게 할인 받기 (0) | 2022.12.23 |
[코딩 테스트 연습 입문] 순서쌍의 개수 (0) | 2022.12.23 |
[코딩 테스트 연습 입문] 문자열 안에 문자열 (0) | 2022.12.23 |