외계행성의 나이

2024. 7. 25. 18:00코딩테스트 입문

https://school.programmers.co.kr/learn/courses/30/lessons/120834

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr


문제 설명
우주여행을 하던 머쓱이는 엔진 고장으로 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합니다.

소문자로 a부터 j까지 0부터 9까지 각각 매핑하는 문제입니다.

매핑을 따로 해도 되기는 하는데, 저는 아스키 코드와 형 변환을 사용했습니다.

def solution(age):
    # age를 문자로 변환해서 하나씩 가져온다.
    # a(문자)를 정수로 변환한 뒤, 아스키 코드로 소문자 a부터 시작한다.
    # 최종 아스키 코드를 다시 문자로 변환한다.
    return ''.join(chr(ord('a') + int(a)) for a in str(age))

str(age)로 문자 하나씩 가져온 다음, 아스키 코드로 a의 몇 번째 뒤인지 확인합니다.

그 다음, chr로 아스키 코드를 다시 문자로 변환한 다음, 변환된 값들을 조인으로 합쳐줍니다.

 

ord -> chr 구조를 사용하거나, 혹은 직접 map을 사용해서 매핑하면 풀 수 있는 문제입니다.

'코딩테스트 입문' 카테고리의 다른 글

순서쌍의 개수  (0) 2024.07.27
진료순서 정하기  (0) 2024.07.26
배열 자르기  (0) 2024.07.24
짝수의 합  (0) 2024.07.23
양꼬치  (1) 2024.07.22