본문 바로가기
Algorithm/Programmers

[Programmers] Lv.0 | 외계행성의 나이 | Java

by unknownomad 2025. 10. 24.

문제

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

 

풀이

class Solution {
    public String solution(int age) {
        String ageStr = String.valueOf(age);
        StringBuilder result = new StringBuilder();
        
        for (int i = 0; i < ageStr.length(); i++) {
            int digit = ageStr.charAt(i) - '0';
            result.append((char) ('a' + digit));
        }
        
        return result.toString();
    }
}

코드 설명

  1. String.valueOf(age) → 숫자를 문자열로 변환
    예: 23 → "23"
  2. 각 문자('2', '3')를 순회하면서
    • '0'을 빼서 정수 값으로 변환 ('2' - '0' = 2)
    • 'a'에 해당 숫자만큼 더해 알파벳으로 변환 ('a' + 2 = 'c')
  3. 변환된 문자를 StringBuilder에 차곡차곡 추가
  4. 완성된 문자열을 toString()으로 반환

 

 

 '0' 빼기의 역할

 

문자형 숫자 → 실제 숫자값으로 변환

 

문자 내부 코드값  '0'의 코드값(48) 연산 결과
'0' 48 48 0
'1' 49 48 1
'2' 50 48 2
'9' 57 48 9
'3' - '0' == 3
  • 이 식을 통해 문자 '3'을 정수 3으로 변환

 

'a' 더하기의 역할

 

숫자값 → 알파벳 문자로 변환

 

숫자  'a'의 코드값(97)  'a' + 숫자 결과 문자
0 97 'a' + 0 = 97 'a'
1 97 'a' + 1 = 98 'b'
2 97 'a' + 2 = 99 'c'
9 97 'a' + 9 = 106 'j'
(char)('a' + 2) == 'c'
  • 이렇게 숫자 2를 'c'로 바꿀 수 있음

 

전체 변환 과정 예시 (age = 23)

단계  문자  '0' 빼기  'a' 더하기 결과 문자
1 '2' 2 'a' + 2 → 'c' 'c'
2 '3' 3 'a' + 3 → 'd' 'd'
  • ➡ 최종 결과: "cd"

 

 

정리 문장

  • '0' 빼기 → 문자형 숫자를 실제 숫자로 바꾼다.
  • 'a' 더하기 → 숫자값을 대응하는 알파벳 문자로 바꾼다.

문자(char)아스키(유니코드) 코드 값의 연산

 

문자 'a'의 내부 값

문자 'a'는 단순히 글자처럼 보이지만,
컴퓨터 안에서는 숫자 97로 저장됨
(유니코드/아스키 코드 값이 97)

문자 코드값
'a' 97
'b' 98
'c' 99
'd' 100

 

 

'a' + 3의 실제 계산 과정

'a' + 3
  • 'a' → 97
  • 97 + 3 → 100
  • 100은 문자 'd'에 해당

그래서

(char)('a' + 3) == 'd'

 

 

정리

  • 문자 'a'는 숫자 97로 저장되어 있음
  • 문자에 숫자를 더하면, 그만큼 다음 알파벳으로 이동
  • 즉, 'a' + 0 → 'a'
  • 'a' + 1 → 'b'
  • 'a' + 2 → 'c'
  • 'a' + 3 → 'd'

 

한 줄 요약

'a' + 3 은 'a'의 코드값(97)에 3을 더해 100이 되고,
코드값 100은 'd'이기 때문에 결과는 'd'

댓글