본문 바로가기
알고리즘 문제풀이/Programmers

Programmers [level 0] 외계행성의 나이 - 120834

by 코도꼬마 2023. 8. 10.

[level 0] 외계행성의 나이 - 120834

문제 링크

성능 요약

메모리: 83 MB, 시간: 3.49 ms

구분

코딩테스트 연습 > 코딩테스트 입문

문제 설명

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

 

Comments

문자열 작업 시 자주 사용하는 StringBuilder와 StringBuffer 비교

 

class Solution {
    public String solution(int age) {
        StringBuilder sb = new StringBuilder();

        while(age > 0) {
            sb.insert(0, (char) ((age % 10) + (int)'a'));
            age /= 10;
        }

        return sb.toString();
    }
}

 

공통점

  • String 보다 저장공간 덜 차지 → GC(가비지 컬렉션) 작업 줄어듬
  • 두 클래스 모두 주요 메서드는 같음

 

차이점

StringBuffer StringBuilder
단일 스레드에서 안전하지 않음 단일 스레드에서 안전
멀티 스레드에서 안전(여러 스레드 접근 불가) 멀티 스레드에서 안전하지 않음
성능 및 속도 ↓ 성능 및 속도 ↑

 

출처: 프로그래머스 코딩 테스트 연습, https://programmers.co.kr/learn/challenges