[프로그래머스/java] 외계행성의 나이

2025. 8. 26. 10:56·코테/프로그래머스 JAVA Lv.0

 

 

🔗 외게행성의 나이


 

문제 설명

우주여행을 하던 머쓱이는 엔진 고장으로 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"

 


입출력 예 설명

입출력 예 #1

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

입출력 예 #2

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

입출력 예 #3

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

 

 

 

문제풀이

👉🏻 내 코드

class Solution {
    public String solution(int age) {
        String answer = "";
        String str = String.valueOf(age); //숫자를 문자열로

        for (int i = 0; i < str.length(); i++) { //str 순회
            int num = str.charAt(i) - '0'; //문자를 정수로 변환 예) 문자 '0'~'9' -> 정수 0~9
            char ch = (char) ('a' + num); //숫자를 알파벳으로 변환 예) 정수 0~9 -> 문자 'a'~j'
            answer += ch; //문자 이어붙이기
        }
        return answer;
    }
}

 

✔️ 정수 age -> 문자열 변환 -> 각 자리수를 알파벳으로 치환 -> 합쳐서 반환

 

for문 돌기 전에 숫자를 문자열로  변환했기 때문에 str.charAt(i) 그대로 문자를 쓰면 '3' 이라는 문자의 코드값(아스키코드)를 다루게 된다. '3'의 유니코드 -> 51

내가 써야할 건 문자 '3'이 아닌 숫자 3이라는 값. 그래야 아스키코드 사용 가능.

그렇기 때문에 -'0' 을 이용해 숫자로 바꿔야 뒤에서 알파벳으로 매핑할 수 있다.

-'0' 하는 이유는 문자를 정수로 변한하기 위함인데 자세한 설명은 여기

 

char ch = (char) ('a' + num);

숫자를 문자로 변환한다.

'a'는 아스키 코드값 97. 'a'+num을 하면 97 + num이라는 정수 덧셈이 된다. 예로 num이 2라면 97+2 = 99

그런데 이 결과는 정수이기 때문에 문자로 캐스팅이 필요하기 때문에 앞에 (char)를 써서 형변환 해준다. 99 아스키코드는 'c'

 

 

👉🏻 다른 사람 코드

class Solution {
    public String solution(int age) {
        String answer = "";
        String[] alpha = new String[]{"a","b","c","d","e","f","g","h","i","j"};

        while(age>0){
            answer = alpha[age % 10] + answer;
            age /= 10;
        }

        return answer;
    }
}

 

class Solution {
    public String solution(int age) {
        String answer = "";
        
        // age가 0이 될 때까지 한 자리씩 꺼내기
        while (age > 0) {
            int digit = age % 10;          // 마지막 자리 숫자
            char ch = (char) ('a' + digit); // 알파벳 변환
            answer = ch + answer;          // 앞에 붙여서 순서 맞추기
            age /= 10;                     // 마지막 자리 제거
        }
        
        return answer;
    }
}

 

class Solution {
    public String solution(int age) {
        // 숫자를 문자열로 바꾼 다음, split으로 한 글자씩 나눔
        String[] digits = String.valueOf(age).split(""); 
        
        // 결과 담을 변수
        String answer = "";
        
        // 각 숫자를 알파벳으로 변환
        for (String d : digits) {
            int digit = Integer.parseInt(d);       // 문자열 -> 정수
            char ch = (char) ('a' + digit);        // 숫자 -> 알파벳
            answer += ch;                          // 결과 문자열에 이어붙이기
        }
        
       /* for (int i = 0; i < digits.length; i++) {
            String d = digits[i];               // i번째 요소 꺼내오기
            int digit = Integer.parseInt(d);    // 문자열 -> 정수
            char ch = (char) ('a' + digit);     // 숫자 -> 알파벳
            answer += ch;                       // 결과에 이어붙이기
    	} */
        return answer;
    }
}

 

 

 

 

 

저작자표시 비영리 변경금지 (새창열림)

'코테 > 프로그래머스 JAVA Lv.0' 카테고리의 다른 글

[프로그래머스/java] 배열 회전시키기  (0) 2025.08.27
[프로그래머스/java] 합성수 찾기  (0) 2025.08.25
[프로그래머스/java] 콜라츠 수열 만들기  (0) 2025.07.17
[프로그래머스/java/Lv.0] 접미사 배열  (0) 2025.06.01
[프로그래머스/java/Lv.0] 369게임  (0) 2025.05.27
'코테/프로그래머스 JAVA Lv.0' 카테고리의 다른 글
  • [프로그래머스/java] 배열 회전시키기
  • [프로그래머스/java] 합성수 찾기
  • [프로그래머스/java] 콜라츠 수열 만들기
  • [프로그래머스/java/Lv.0] 접미사 배열
amying
amying
공부해보겠슨
  • amying
    꽁꽁 얼어붙은 자바 위를 자박자박
    amying
  • 글쓰기 관리
  • 전체
    오늘
    어제
    • 분류 전체보기 (332)
      • 공부 (55)
        • JAVA (17)
        • Spring (17)
        • Java Script (1)
        • React (0)
        • SQL (3)
        • DB (1)
        • CS (13)
        • 기술면접 (3)
      • Git (2)
      • 강의 (36)
        • 부스트코스: Connect On: 테크와 나를 잇.. (16)
        • 부스트코스: CS50 (20)
      • 네이버 부스트캠프 베이직 (25. 06) (0)
      • 에러 (10)
      • 코테 (205)
        • 백준 (29)
        • 프로그래머스 JAVA Lv.0 (116)
        • 프로그래머스 JAVA Lv.1 (7)
        • 프로그래머스 SQL (53)
      • 개인 프로젝트 (16)
        • 책첵 CHAEKCHECK (2)
        • 일정 관리 서비스 만들기 (0)
        • 게시판 만들기 (eclipse-JSP) (14)
      • 이것저것 (4)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    업무자동화
    부스트코스강의
    코테
    부스트코스
    ORACLE에러
    책첵개발일지
    데이터연동
    알고리즘
    코딩테스트_입문
    CS50
    springbot
    lombok
    Java
    에러
    git명령어
    오라클에러
    프로그래머스
  • 최근 댓글

  • hELLO· Designed By정상우.v4.10.4
amying
[프로그래머스/java] 외계행성의 나이
상단으로

티스토리툴바