코딩테스트
[코딩테스트 입문] 외계행성의 나이 ★
summ.n
2025. 4. 23. 16:33
🔸 문제 설명
외계행성 PROGRAMMERS-962에서는 숫자를 알파벳 소문자로 표현합니다.
숫자 | 문자 |
0 | a |
1 | b |
2 | c |
... | ... |
9 | j |
예를 들어, 나이 23은 "cd"로, 51은 "fb"로 표현됩니다.
정수 age가 주어졌을 때, 외계 행성식 문자열로 바꿔서 반환하세요.
🔸 입출력 예
age | 결과 |
23 | "cd" |
51 | "fb" |
100 | "baa" |
✅ 내가 처음에 헷갈렸던 부분 😅
❓ '숫자 → 문자'를 어떻게 바꾸지?
- "2"는 문자니까 'a' + 2 하면 'c'가 되는데,
- 이걸 숫자마다 하나하나 해줘야 한다는 걸 몰랐어!
❓ charAt()이 왜 안 되지?
- int 타입은 charAt() 못 써서
먼저 문자열로 바꿔야 쓸 수 있어!
🔸 최종 정답 코드
class Solution {
public String solution(int age) {
String answer = "";
String ageStr = String.valueOf(age); // 1. 숫자 → 문자열
for (int i = 0; i < ageStr.length(); i++) {
int digit = ageStr.charAt(i) - '0'; // 2. 문자 '2' → 숫자 2
char alienChar = (char)('a' + digit); // 3. 숫자 2 → 문자 'c'
answer += alienChar;
}
return answer;
}
}
🔍 코드 흐름 설명
- String.valueOf(age)
→ 숫자를 문자열로 바꿔서 "23"처럼 만든다 - charAt(i)
→ 문자열에서 문자 하나씩 꺼냄 ('2', '3') - '2' - '0'
→ 문자 '2'를 숫자 2로 바꾸는 공식! - 'a' + 숫자
→ 외계식 알파벳으로 변환!
✨ 예시 흐름
입력: age = 23
→ ageStr = "23"
→ 문자 '2' → 숫자 2 → 'a' + 2 = 'c'
→ 문자 '3' → 숫자 3 → 'a' + 3 = 'd'
결과: "cd"
💡 포인트 요약
개념 | 설명 |
String.valueOf(age) | 숫자 → 문자열 |
charAt(i) | 문자 하나 꺼내기 |
'문자' - '0' | 문자 → 숫자 변환 |
'a' + 숫자 | 숫자 → 문자 변환 (외계 알파벳!) |