FireDrago

Lv0 - 외계행성의 나이 (자바) 본문

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

Lv0 - 외계행성의 나이 (자바)

화이용 2023. 6. 6. 18:54

문제설명

우주여행을 하던 머쓱이는 엔진 고장으로 PROGRAMMERS-962 행성에 불시착하게 됐습니다. 입국심사에서 나이를 말해야 하는데, PROGRAMMERS-962 행성에서는 나이를 알파벳으로 말하고 있습니다. a는 0, b는 1, c는 2, ..., j는 9입니다. 예를 들어 23살은 cd, 51살은 fb로 표현합니다. 나이 age가 매개변수로 주어질 때 PROGRAMMER-962식 나이를 return하도록 solution 함수를 완성해주세요.

입출력 예

age result
23 "cd"
51 "fb"
100 "baa"

생각정리

1.  알파벳 a 가 0 인것, 알파벳 순서대로 번호 매겨지는 점을보면 바로 배열 선언이 떠오른다. 배열의 인덱스 구해야겠군

 

2.  문제는 주어진 age가 십진수 이고, 자릿수를 정확히 모른다는 점이다.

 

3.  몇자리 수인지 모르는 십진수를 자릿수를 분해해서 담아야 하는데 어떤 알고리즘을 써야할까?

     - age를 String으로 변환해서 해보려 했는데 형변환 과정이 너무 복잡해진다.

    - if문으로 age 의 범위를 지정해서 해보려 했는데 역시 너무 장황해진다.

 

4. while 문 (정확한 횟수를 모를때 )  + 일의자리부터 떼면서 반복하면 자릿수를 모른다는 점을 해결할 수 있다.

StringBuilder answer = new StringBuilder();
String [] alphabet = {"a","b","c","d","e","f","g","h","i","j"};

while (age > 0) {
    answer.insert(0,alphabet[age%10]);
    age /= 10;
}
return answer.toString();

- insert 문을 통해서 0 위치에 string 값을 넣어주면 된다. 

- StringBuilder 는 toString( ) 으로 String 출력