[TIL] 240402 (외계행성의 나이)

·2024년 4월 2일

TIL

목록 보기
9/268

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

문제

우주여행을 하던 머쓱이는 엔진 고장으로 PROGRAMMERS-962 행성에 불시착하게 됐습니다. 입국심사에서 나이를 말해야 하는데, PROGRAMMERS-962 행성에서는 나이를 알파벳으로 말하고 있습니다. a는 0, b는 1, c는 2, ..., j는 9입니다. 예를 들어 23살은 cd, 51살은 fb로 표현합니다. 나이 age가 매개변수로 주어질 때 PROGRAMMER-962식 나이를 return하도록 solution 함수를 완성해주세요.

나의 답

우선 알파벳을 전부 가져와야한다는 생각에 사로잡혔다. 때문에 a부터 z까지의 문자를 가져오는 방법을 통해 알파벳을 가져왔다.
그 다음 숫자를 배열로 만들어준 후, 배열 내 숫자번째 알파벳을 하나씩 넣어 return 해줌으로써 문제를 해결했다.

function solution(age) {
    var answer = '';
    let alpha = [];
    let arr = Array.from(String(age));
    
    for (let i=97; i<=122; i++){
        alpha.push(String.fromCharCode(i));
    }
    
    for (let j=0; j<arr.length; j++){
        answer += alpha[arr[j]];
    }
    
    return answer;
}

(딱 보기에도 너무 길어보인다.)

다른 답

function solution(age) {
    return age.toString().split("").map((v)=>"abcdefghij"[v]).join("");
}

age를 문자열로 변환하고 split으로 잘라준 뒤, a부터 j까지 중 해당 숫자에 맞는 알파벳만 남기고 join으로 붙여준다.
우선 깨달은 점은, 내가 굳이 a부터 z까지를 가져오지 않아도 됐다는 점이다. 숫자는 0부터 9까지 10개뿐이고, 그렇다면 a부터 j까지만 필요하기 때문에 j 뒤부터는 필요가 없다. 너무 단순하게 생각한 아쉬운 점이었다.

새롭게 알게된 것

문자열 자체도 인덱스 접근이 가능하다.
ex) "abcdefghij"[5] = f

profile
웹 프론트엔드 개발자

0개의 댓글