우주여행을 하던 머쓱이는 엔진 고장으로 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 행성은 알파벳 소문자만 사용합니다.
2) 예시
Result Table
age
result
23
"cd"
51
"fb"
100
"baa"
입출력 예 #1 age가 23이므로 "cd"를 return합니다.
입출력 예 #2 age가 51이므로 "fb"를 return합니다.
입출력 예 #3 age가 100이므로 "baa"를 return합니다.
3) 풀이
1. 클래스 선언을 해줍니다
● class Solution {
클래스명은 대문자로 시작해야하고, 정답이라는 의미로 Solution이라는 단어를 사용하였습니다.
2. 정수 age를 매개변수로 하는 solution 메소드를 선언합니다.
solution은 문자열을 반환하므로 데이터타입을 String으로 합니다.
● public String solution(int age) {
3. 정수 age에 대한 제한사항을 확인합니다. 만족하지 않는다면 예외 처리합니다.
● if(age <= 0 || age > 1000){ throw new IllegalArgumentException("age는 자연수이고 1000 이하입니다."); }
4. 먼저 문자로 표현된 나이를 문자열 answer로 선언하고, 빈 문자열로 초기화해줍니다.
그리고 나이를 표현하기 위한 알파벳들을 문자열 age962로 선언해줍니다. "a~j"
매개변수 int age를 문자열로 형변환시킨 후, split 메소드를 이용하여 큰따옴표를 추가하여 각 자릿수마다 나누어 ageArr 배열의 원소로 추가합니다.
String 클래스에 속하는 메소드로, 문자열을 분할할 때 사용됩니다. 따라서 정수나 실수에는 직접 split 메소드를 사용할 수 없고, 문자열로 변환한 후 split을 사용해야 합니다.
예시)
int number = 245; String numberStr = String.valueOf(number); // 정수를 문자열로 변환 String[] numberArr = numberStr.split(""); // 문자열을 각 문자로 분할 // numberArr은 ["2", "4", "5"]가 됩니다.
※ 데이터타입.valueOf메소드
String.valueOf(정수나 실수): 정수나 실수를 문자열로 변환합니다.
Integer.valueOf(문자열): 문자열을 정수로 변환합니다.
Double.valueOf(문자열): 문자열을 실수로 변환합니다.
5. for문을 통해 ageArr 배열을 순회하며 각 자릿수의 값을 가져온 후, 정수로 형변환하여, age962 문자열의 charAt을 통해 정수로 형변환된 인덱스에 해당한 값을 가져옵니다.
그 값을 answer에 추가해주게 됩니다.
문자열의 +는 문자열 뒤에 문자가 추가되는 것이기 때문에 원하는 값에 도달하게 됩니다.
● for (int i = 0; i < ageArr.length; i++) { answer += age962.charAt(Integer.valueOf(ageArr[i])); } return answer; } }
※ charAt 메소드란?
문자열에서 특정 위치에 있는 문자를 반환합니다.각 문자는 인덱스로 접근할 수 있고, 인덱스는 0부터 시작합니다.
ex) str.charAt(0)은 문자열str의 첫 번째 문자를 반환
4) 코드
class Solution {
public String solution(int age) {
if(age <= 0 || age > 1000){
throw new IllegalArgumentException("age는 자연수이고 1000 이하입니다.");
}
String answer = "";
String age962 = "abcdefghij";
String[] ageArr = String.valueOf(age).split("");
for (int i = 0; i < ageArr.length; i++) {
answer += age962.charAt(Integer.valueOf(ageArr[i]));
}
return answer;
}
}