새소식

Programmers Coding Test/Java

[프로그래머스 120834] Java - 코딩테스트 입문 / 외계행성의 나이

  • -

 

 

외계행성의 나이

 

 

 

https://school.programmers.co.kr/learn/courses/30/lessons/120834

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

 

 

 

1)  문제

우주여행을 하던 머쓱이는 엔진 고장으로 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 answer = "";
        String age962 = "abcdefghij";
        String[] ageArr = String.valueOf(age).split("");

 

 

 

※ split 메소드   

String 클래스에 속하는 메소드로, 문자열을 분할할 때 사용됩니다.
 따라서 정수나 실수에는 직접 split 메소드를 사용할 수 없고, 문자열로 변환한 후 split을 사용해야 합니다.

예시)

int number = 245;
String numberStr = String.valueOf(number);  // 정수를 문자열로 변환
String[] numberArr = numberStr.split("");  // 문자열을 각 문자로 분할
// numberArr은 ["2", "4", "5"]가 됩니다.

 

※ 데이터타입.valueOf메소드   

  1. String.valueOf(정수나 실수): 정수나 실수를 문자열로 변환합니다.
  2. Integer.valueOf(문자열): 문자열을 정수로 변환합니다.
  3. 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;
    }
}

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.