본문 바로가기

프로그래머스/완전탐색

[완전탐색] 프로그래머스 '모음사전' - js

반응형

1. 문제

https://school.programmers.co.kr/learn/courses/30/lessons/84512?language=javascript 

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

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

 

[프로그래머스] 모음사전 Javascript

https://programmers.co.kr/learn/courses/30/lessons/84512 코딩테스트 연습 - 5주차_모음사전 사전에 알파벳 모음 'A', 'E', 'I', 'O', 'U'만을 사용하여 만들 수 있는, 길이 5 이하의 모든 단어가 수록되어 있..

nukw0n-dev.tistory.com

이 블로그를 참고하면 이해하기 편하다.

 

복기)

3/27
4/13
반응형