반응형
1. 문제
https://school.programmers.co.kr/learn/courses/30/lessons/84512?language=javascript
2. 설명
이 문제 또한 모든 조합 가능한 단어를 만들어야하므로 완전탐색이다. fixed된 요소에 덧붙여나가는 유형이므로 당연히 dfs를 쓴다. dfs의 파라미터를 구성하는 방식을 잘 공부해야겠다.
A,E,I,O,U
AA,AE,AI,AO,AU,BB,BA...
AAA,AAE,AAI...
...
AEIOU
알파벳 정렬은 sort(), reverse()를 사용한다.
console.log(words.sort()) // 오름차순 정렬
console.log(words.reverse()) // 내림차순 정렬
3. 코드
function solution(word) {
const result = [];
const str = "";
const dfs = (word, length) => {
const alpha = ['A','E','I','O','U'];
if (length === word.length) {
result.push(word);
// 원하던 길이의 단어를 만들었으면 해당 재귀를 끝내기 위해 return; 필수!
return;
}
alpha.map((w) => {
dfs(word + w, length);
});
};
// 길이 1~5까지의 단어를 만든다
for (let i = 1; i <= 5; i++) dfs(str, i);
// 인덱스가 0부터 시작하기 때문에 +1해주기
// 알파벳 정렬은 그냥 sort()!
return result.sort().indexOf(word) + 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);
}
이 코드는
https://nukw0n-dev.tistory.com/18
이 블로그를 참고하면 이해하기 편하다.
복기)
3/27
4/13
반응형
'프로그래머스 > 완전탐색' 카테고리의 다른 글
[완전탐색] 프로그래머스 '카펫' - js (0) | 2023.03.20 |
---|---|
[완전탐색] 프로그래머스 '소수 찾기' level 2 - js (0) | 2023.03.20 |
[완전탐색] 프로그래머스 '모의고사' - js (0) | 2023.03.18 |
[완전탐색] 프로그래머스 '최소직사각형' - js (0) | 2023.03.18 |
Brute Force(완전 탐색)이란? (0) | 2023.03.18 |