CodingTest

프로그래머스 - 외계행성의 나이 (JAVA)

쩡선영 2023. 3. 28. 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 행성은 알파벳 소문자만 사용합니다.

 

 

▼입출력의 예

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

 

 

 

✏️ 직접 구현한 코드


class Solution {
    public String solution(int age) {
        String answer = "";
        String temp = Integer.toString(age); //age를 String 타입으로 변환
        int arr[] = new int [temp.length()]; //temp의 길이만큼의 배열 생성
        
        for(int i=0; i<arr.length; i++){
            arr[i] = temp.charAt(i) - '0'; //arr[i]방에 temp의 i인덱스 값을 int 타입으로 변환하여 값을 넣어줌
            answer += (char) (arr[i]+97); //arr[i]에 + 97을 더한 다음 아스키코드를 이용하여 answer에 추가
        }
        return answer;
    }
}

▲ 코드 설명은 주석 참고

 

 

 

⭐ 정리하고 갈 내용


정수에서 각 자리 숫자가 무엇인지 구하는 방법

 

<나눗셈을 이용해서 구하는 방법>

int num = 12345;
int temp;
while(num > 0) {
	temp = temp % 10;  //temp에 일의자리 숫자부터 차례대로 저장됨
    System.out.print(temp);
	num /= 10;
}

//출력값 : 54321

 

<문자열로 변환해서 구하는 방법>

int num = 12345;
String strNum = Integer.toString(num);
int[] arrNum = new int[strNum.length()];
for (int i = 0; i < strNum.length(); i++) {
	arrNum[i] = strNum.charAt(i) - '0';
}

for(int i=0; i < strNum.length(); i++){
	System.out.print(i);
}

//출력값 : 12345