Study/Java

[Java 자바] 프로그래머스 Lv 0 - 외계행성의 나이

1.jun 2024. 10. 20. 19:57
728x90
반응형

 

 

코딩테스트 연습 | 프로그래머스 스쿨

개발자 취업의 필수 관문 코딩테스트를 철저하게 연습하고 대비할 수 있는 문제를 총망라! 프로그래머스에서 선발한 문제로 유형을 파악하고 실력을 업그레이드해 보세요!

school.programmers.co.kr

 

목차
  1. 문제 설명
  2. 입출력 예시
  3. 문제 풀이

 

 


1. 문제 설명

 

 

728x90

 

문제 설명

우주여행을 하던 머쓱이는 엔진 고장으로 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. 입출력 예시

 

 

 

 

입출력 예시

#1 

age가 23이므로 "cd"를 return합니다.

 

#2

age가 51이므로 "fb"를 return합니다.


#3

age가 100이므로 "baa"를 return합니다.

 

 

 

 

 

 


3. 문제 풀이

반응형

 

문제 풀이

1. age의 자릿수를 계산하여 배열의 길이를 만들기위해 Math.log10(age) + 1을 length에 넣는다. (결과값이 double로 반환되기 때문에 (int)를 붙여준다.)

 

2. 배열 array의 길이를 length로 정한다.

 

3. 배열 alpha에 a부터 j까지 넣는다.

 

4. for 문을 사용하여, length의 길이까지 반복한다.

 

5. alpha의 마지막 자릿수의 값을 array의 마지막 인덱스부터 넣는다.

 

6. 넣은 후 age는 10으로 나누고 반복한다.

 

7. answer에 array에 있는 알파벳들을 공백없이 하나의 문자열로 결합한다.

 

8. answer를 반환한다.

 

 

 

class Solution {
    public String solution(int age) {
        String answer = "";
        int length = (int)Math.log10(age) + 1;
        String[] array = new String[length];
        String[] alpha = {"a","b","c","d","e","f","g","h","i","j"};
        
        for(int i=0; i<length; i++){
            array[length-i-1] = alpha[age%10];
            age /= 10;
        }
        
        answer = String.join("",array);
        
        return answer;
    }
}

 

 

 

 

메모

Math.log10(값) : 값의 10을 밑으로하는 로그 값을 반환한다.

 

String.join(구분문자, 배열이나 Iterable 객체) : 여러 문자열을 결합할 수 있음. 구분문자를 사용하여 요소들 사이에 넣을 수 있음.

 

 

 

 

 

728x90
반응형