코딩테스트/프로그래머스 입문

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

Adose 2025. 6. 15. 01:01

📚 문제 설명

여행을 하던 머쓱이는 엔진 고장으로 PROGRAMMERS-962 행성에 불시착하게 됐습니다. 입국심사에서 나이를 말해야 하는데, PROGRAMMERS-962 행성에서는 나이를 알파벳으로 말하고 있습니다. a는 0, b는 1, c는 2, ..., j는 9입니다.

 

예를 들어 23살은 cd, 51살은 fb로 표현합니다. 나이 age가 매개변수로 주어질 때 PROGRAMMER-962식 나이를 return하도록 solution 함수를 완성해주세요.

✅ 제한사항

  • age는 자연수입니다.
  • age ≤ 1,000
  • PROGRAMMERS-962 행성은 알파벳 소문자만 사용합니다.

💻 구현 코드

    //정답 코드 1
    public String solution(int age) {

        String [] ageData = new String[26];

        //알파벳
        for(int i=0 ; i<26;i++){
            ageData[i] = String.valueOf((char)('a'+i));
        }

        String tAge = String.valueOf(age);
        StringBuilder result = new StringBuilder();

        for(char c : tAge.toCharArray()){
            int num = c-'0';
            result.append(ageData[num]);
        }

        return result.toString();
    }
    
    
    //정답 코드 2
    public String solutio2(int age) {
        String sAge = String.valueOf(age);
        //String sAge = Integer.toString(age);
        char [] ageList = new char[26];

        for(int i=0;i<26;i++){
            ageList[i] = (char)('a'+i);
        }

        StringBuilder result = new StringBuilder();

        for(int i=0;i<sAge.length();i++){
            int num = sAge.charAt(i)-'0';
            result.append(String.valueOf(ageList[num]));
        }

        return result.toString();
    }

    
    //정답 코드 3
    public String solution3(int age) {
        String sAge = Integer.toString(age);

        StringBuilder result = new StringBuilder();

        for(int i=0;i<sAge.length();i++){
            //char data = (char) ((sAge.charAt(i) -'0')+97);
            //char data =(char)(sAge.charAt(i) +49);
            char data = (char)('a'+(sAge.charAt(i) -'0'));
            result.append(data);
        }

        return result.toString();


    }

📌 구현코드 해설

  • 첫번째 코드, 두번째 코드

첫번째 코드, 두번째 코드는 알파벳을 배열로 저장한 후, 입력으로 들어온 int를 String 으로 변환한 후 값을 하나하나 비교해주었다. 

또한 -'0'을 사용하여 숫자로 변환해주었다. 

 

  • 세번째 코드 

첫번째, 두번째 코드에서 사용했던 방식 처럼 알파벳을 넣어주는게 아닌, -'0'을 통하여 숫자로 변환 한후  'a'에 더해주어서 해당 숫자에 해당하는 알파벳을 return할 수 있게 했다. 

🍏 회고 / 새롭게 알게 된 점

  • '0'을 활용하면 문자형 숫자(예: '3')를 정수형 숫자(예: 3)로 쉽게 변환할 수 있다는 사실을 알게 되었다.
    예: '3' - '0' → 3
  • 'a'를 더하면 숫자를 알파벳 문자로 변환할 수 있다는 것도 새롭게 배웠다.
    예: 0 + 'a' → 'a', 1 + 'a' → 'b'
  • int ↔ String, 그리고 String → char[] 또는 int[]로 변환하는 방법도 익혔다.
    • String.valueOf(int) 또는 Integer.toString(int) → int → String
    • Integer.valueOf(String) → String → int
    • toCharArray() → String → char 배열