100/100
1시간 30분 소요
function getIdx(word) {
let answer = [];
// 일단 겁나 웬만큼 만들어 0 1 2 3 4 5 6 으로만 된 숫자로
for (let i = 0; i < 10000; i++) {
answer.push(i.toString(6));
}
answer = answer
// 0이 있는 것이랑 5자리 넘는것은 빼고
.filter((val) => {
return val.indexOf(0) < 0 && val.length < 6 ? true : false;
})
// 숫자를 문자로 변경
.map((val) => {
return val
.replace(/1/g, "A")
.replace(/2/g, "E")
.replace(/3/g, "I")
.replace(/4/g, "U")
.replace(/5/g, "O");
})
//문자 정렬
.sort();
return answer.indexOf(word) + 1;
}
function solution(word) {
return getIdx(word);
}
일단 AEIOU를 12345로 대체한다 생각하고 이를 적용하기 위해 5진수를 처음에는 썼으나 01234로 00 000 0000을 각각 뽑아내질 못하여
6진수로 012345를 쓰고
filter 함수를 통해 0을 제거
그외의 추가 5자리 초과를 제거 한 나머지를 replace를 이용해 정렬한
위치의 IDX +1을 결과로 반환한다.
function solution(words) {
return words.split('').reduce((r, c, i) => r + [781, 156, 31, 6, 1][i] * ['A', 'E', 'I', 'O', 'U'].indexOf(c) + 1, 0);
}
.... 현타온다
[1,2,3,4,5][1]
이런코드도 가능하다