본문 바로가기
하루하루/프로그래머스 문제풀이

[Lv.0 - Java] 120834. 외계행성의 나이

by 키튼햄 2023. 12. 13.

문제

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

 

 

 

풀이

StringBuilder를 사용해 문자열을 효율적으로 처리하고자 했다.

숫자타입인 age를 하나하나 나누려고 Integer.toString()을 사용해서 String 타입으로 변환했다.

 

for문을 이용하여 ageStr을 문자별로 분리하여 변수 num에 넣어서 반복한다.

이때 num에서 '0' ( ASCⅡ 코드 48 )을 빼준 값을 digit으로 선언하였는데, 이유는 0부터 9까지의 경우 ASCⅡ 코드가 연속적이기 때문에 num의 ASCⅡ 코드에서 '0' ( ASCⅡ 코드는 48 )을 빼면 해당 값이 실제 숫자값으로 정규화할 수 있기 때문이다.

이렇게 구한 숫자타입의 digit 변수를 a에 더하면 해당 알파벳 숫자로 이동할 수 있다.

a는 ASCⅡ에서 97이다. 따라서 만약 digit이 1이라면 98이 되어 b가 반환될 것이다. 그리고 이 숫자형은 문자형으로 형변환을 시켜서 converChar 변수에 넣어주었다. 

그리고 해당 문자를 sb에 append()메소드를 이용해 차례로 넣어준다.

그리고 해당 sb를 String문자열로 반환하였다.

 

 

코드

class Solution {
    public String solution(int age) {
        StringBuilder sb = new StringBuilder();
        
        String ageStr = Integer.toString(age);
        
        for(char num : ageStr.toCharArray()){
            int digit = num - '0';
            char convertChar = (char)('a'+digit);
            
            sb.append(convertChar);
        }
        return sb.toString();
    }
}