본문 바로가기
algorithm/Programmers

[JAVA] 외계행성의 나이

by 이쟝 2023. 1. 14.

 

1. 내가 푼 코드

class Solution {
    public String solution(int age) {
        String answer = "";
        String ageSize = String.valueOf(age); // age를 String형으로 변환
        String alphabet = "";
        
        // 알파벳 배열 만들기
        for(char i='a'; i<='j'; i++) {
            alphabet += i;
        }
        // age 크기 만큼 돌면서 각 문자를 인덱스로 변화해 일치 알파벳 찾기
        for(char i: ageSize.toCharArray()) {
            answer += alphabet.charAt((i)-'0');
        }	
        return answer;
    }
}

2. alphabet 배열 생성 후 while문으로 

class Solution {
    public String solution(int age) {
        String answer = "";
        String[] alphabet = new String[]{"a","b","c","d","e","f","g","h","i","j"};

        while(age>0) {
            answer = alphabet[age%10] + answer;
            age /= 10;
        }
        return answer;
    }
}

3. Stringbuilder 생성후 while문으로 insert해서 집어넣기

class Solution {
    public String solution(int age) {
        StringBuilder sb = new StringBuilder();

        while(age > 0) {
            sb.insert(0, (char) ((age % 10) + (int)'a')); // (int)'a' == 97
            age /= 10;
        }

        return sb.toString();
    }
}

확실히 for문을 두 번 돌리니까 더 오래 걸린다.. 

Stringbuilder에 insert( ) 메서드가 아주 유용한 것 같다. age를 나눈 나머지 + 97을 하면 숫자에 맞는 문자가 나오는게 신기..(분명히 옛날에 해본 것 같기도 한데..)

age /= 10 이 떠오르긴 했지만 어떻게 풀어야 할 지 감이 안왔는데  while문으로해서 하면 되겠다..!

 

'algorithm > Programmers' 카테고리의 다른 글

[JAVA] 진료 순서 정하기  (0) 2023.01.14
[JAVA] 순서쌍의 개수(약수의 개수 구하는 알고리즘)  (0) 2023.01.14
[JAVA] 배열 자르기  (0) 2023.01.13
[JAVA] 특정 문자 제거하기  (0) 2023.01.13
[JAVA] 짝수의 합  (0) 2023.01.13