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


문제 설명

우주여행을 하던 머쓱이는 엔진 고장으로 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 행성은 알파벳 소문자만 사용합니다.

입출력 예

ageresult
23“cd”
51“fb”
100“baa”

입출력 예 설명

입출력 예 #1

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

입출력 예 #2

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

입출력 예 #3

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

나의 풀이

function solution(age) {
  let programmers = {
    0: "a",
    1: "b",
    2: "c",
    3: "d",
    4: "e",
    5: "f",
    6: "g",
    7: "h",
    8: "i",
    9: "j",
  };

  var answer = age.toString().split("");
  var result = answer.map((item) => programmers[item]).join("");
  return result;
}

나의 두번째 풀이(Code Refactoring)

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

// 다시 풀어보니 굳이 key,value로 안만들어도 "abcdefghij"의 인덱스값을 추출하면 해당값이 추출되서 불필요한 객체를 만들어줄 필요가 없다.

참고 할 만한 다른 사람의 코드

function solution(age) {
  let char = "abcdefghij";
  return Array.from(age.toString())
    .map((t) => char[+t])
    .join("");
}

//Array.from으로 푸는 방법