우주여행을 하던 머쓱이는 엔진 고장으로 PROGRAMMERS-962 행성에 불시착하게 됐습니다. 입국심사에서 나이를 말해야 하는데, PROGRAMMERS-962 행성에서는 나이를 알파벳으로 말하고 있습니다. a는 0, b는 1, c는 2, ..., j는 9입니다. 예를 들어 23살은 cd, 51살은 fb로 표현합니다. 나이 age가 매개변수로 주어질 때 PROGRAMMER-962식 나이를 return하도록 solution 함수를 완성해주세요.
function solution(age) {
let str = String(age)
let change = str.split("")
let choice = {
"0":"a",
"1":"b",
"2":"c",
"3":"d",
"4":"e",
"5":"f",
"6":"g",
"7":"h",
"8":"i",
"9":"j"
}
let convert = [choice.change[0], choice.change[1]]
return convert
}
※ 참고로 틀린 답이다. 어디가 틀렸을까?
객체에서 속성에 접근할 때는 . 또는 [ ]를 사용한다. .은 속성 이름이 유효한 식별자(identifier)인 경우에만 사용할 수 있고, [ ]는 모든 식별자와 문자열, 숫자, 심볼 등을 속성 이름으로 사용할 수 있다.
따라서 choice.change[0]은 choice 객체에서 change 속성을 찾고, 이 속성의 값에 대해 [0] 연산자를 적용하는 코드가 되어버린다.
반면에 choice[change[0]]은 change 배열의 첫 번째 요소를 choice 객체의 속성 이름으로 사용하여 해당 속성의 값을 가져오는 것이다.
function solution(age) {
let str = String(age)
let change = str.split("")
let choice = {
"0":"a",
"1":"b",
"2":"c",
"3":"d",
"4":"e",
"5":"f",
"6":"g",
"7":"h",
"8":"i",
"9":"j"
}
let arr = [];
for (i=0; i<change.length; i++) {
arr.push(choice[change[i]])
}
return arr.join("")
}
function solution(age) {
return age
.toString()
.split("")
.map((v) => "abcdefghij"[v])
.join("");
}
오랜만에 객체에 대한 개념을 정리할 수 있었다.