function solution(age) {
const alphabet = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j'];
const AGE = [...String(age)].map(Number);
if (alphabet[AGE[0]] && alphabet[AGE[1]] && alphabet[AGE[2]] && alphabet[AGE[3]]) {
return alphabet[AGE[0]] + alphabet[AGE[1]] + alphabet[AGE[2]] + alphabet[AGE[3]];
} else if (alphabet[AGE[0]] && alphabet[AGE[1]] && alphabet[AGE[2]]) {
return alphabet[AGE[0]] + alphabet[AGE[1]] + alphabet[AGE[2]];
} else if (alphabet[AGE[0]] && alphabet[AGE[1]]) {
return alphabet[AGE[0]] + alphabet[AGE[1]];
} else {
return alphabet[AGE[0]];
}
}
일단 1차원적으로 접근을 했다.
먼저 a는 0, b는 1, c는 2, ..., j는 9입니다. 라고 문제에 언급 되어있다.
그래서 alphabet 변수를 만들어 a ~ j 까지 배열을 만들었고,
AGE라는 변수를 선언해 age를 문자열로 만들어서 전개연산자를 이용해서 배열로 만들고, map메서드를 이용해서 새로운 배열을 만들고 각 index의 값을 숫자로 만들었다.
alphabet[AGE[i]] 는 alphabet의 인덱스가 AGE[i]의 인덱스 값이 된다.
age는 문제의 예시에서 최대 1000살까지고,
if 조건 문을 이용해서 age가 1자리, 2자리, 3자리, 4자리 수까지 고려해서 작성하여 반환을 했다.
이렇게 if조건 문을 썼으면 for문으로도 변경이 가능하다.
function solution(age) {
const alphabet = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j'];
const AGE = [...String(age)].map(Number);
let result = ''
for (let i = 0; i < AGE.length; i++) {
if (alphabet[AGE[i]]) {
result += alphabet[AGE[i]]
}
}
return result
}
변수 선언까지는 위와 유사하다.
다른 점은 result 변수가 추가되었고 변수는 ''비어있는 값이다.
for문을 통해서 초기문에 index = 0; 조건문에 index는 AGE변수의 길이보다 작고; index는 for문이 반복될 때마다 1씩 증가한다.
그리고 if문을 통해서 alphabet[AGE[i]]가 for문을 통해 조건을 만족 할 때까지 반복 된다.
그리고 마지막은 while문으로 바꿔보기
function solution(age) {
const alphabet = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j'];
const AGE = [...String(age)].map(Number);
let result = ''
let i = 0
while (i < AGE.length) {
if (alphabet[AGE[i]]) {
result += alphabet[AGE[i]]
}
i++
}
return result
}
깨달은 바!
[...String(age)].map(Number)이렇게 문자열 배열을 map을 이용해서 숫자열로 바꿔줬는데,
alphabet[AGE[i]]의 Age[i] 인덱스값을 숫자로 들어가야하는 줄 알았다!
하지만 뜻 밖에도 숫자열이 아닌 문자열로 들어가도 된다는 사실을 알았으니!!
const AGE = [...String(age)]
위와 같이 작성하여도 문제가 없는 것 이다!
AGE['2'] = AGE [2]
댓글