https://programmers.co.kr/learn/courses/30/lessons/84512
코딩테스트 연습 - 모음사전
사전에 알파벳 모음 'A', 'E', 'I', 'O', 'U'만을 사용하여 만들 수 있는, 길이 5 이하의 모든 단어가 수록되어 있습니다. 사전에서 첫 번째 단어는 "A"이고, 그다음은 "AA"이며, 마지막 단어는 "UUUUU"입니
programmers.co.kr
function solution(word) {
var answer = word.length;
let bar= 4;
let arr =word.split('');
let cal = [1,6,31,156,781];
let cvt = ['A','E','I','O','U'];
for(let i =0; i < arr.length; i++){
let index = bar- i;
let val = cvt.indexOf(arr[i]) * cal[index];
answer+=val;
}
return answer;
}
생각하는게 오래 걸렸고 구현 자체는 간단한 문제였다.
cal의 배열은 1, 1+5, 1+5+5^2, 1+5+5^2+5^3 등을 미리 구해놓은 값이다.
생각은 단순하다.
EIO를 예시로 들자면 문자열을 돌면서
첫 자리인 E인 경우에는 A로 가능한 문자열 전체를 지나쳐온 것이므로 781(1+5+5^2+5^3+5^4)를 더해주고,
두번째 자리인 I 같은 경우에는 A,E가 가능한 문자열 전체를 지나쳐왔으니 2*(1+5^2+5^3) 더해주고 반복...
또한 진행이 A, AA, AAA, AAAA 이런 식으로 되므로 문자열의 길이만큼을 또 더해줘야한다.
'Algorithm > PGMS' 카테고리의 다른 글
| PGMS - 여행경로 (0) | 2022.01.20 |
|---|---|
| PGMS - k진수에서 소수 개수 구하기 (0) | 2022.01.20 |
| PGMS - 아이템줍기 (0) | 2022.01.17 |
| PGMS - 피로도 (0) | 2022.01.14 |
| PGMS - 소수찾기 (0) | 2022.01.13 |
