코딩테스트

[코딩테스트 입문] 외계행성의 나이 ★

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;
    }
}

 

🔍 코드 흐름 설명

  1. String.valueOf(age)
    → 숫자를 문자열로 바꿔서 "23"처럼 만든다
  2. charAt(i)
    → 문자열에서 문자 하나씩 꺼냄 ('2', '3')
  3. '2' - '0'
    → 문자 '2'를 숫자 2로 바꾸는 공식!
  4. 'a' + 숫자
    → 외계식 알파벳으로 변환!

 

✨ 예시 흐름

입력: age = 23

→ ageStr = "23"
→ 문자 '2' → 숫자 2 → 'a' + 2 = 'c'
→ 문자 '3' → 숫자 3 → 'a' + 3 = 'd'

결과: "cd"

 

💡 포인트 요약

개념 설명
String.valueOf(age) 숫자 → 문자열
charAt(i) 문자 하나 꺼내기
'문자' - '0' 문자 → 숫자 변환
'a' + 숫자 숫자 → 문자 변환 (외계 알파벳!)