• 카테고리

    질문 & 답변
  • 세부 분야

    알고리즘 · 자료구조

  • 해결 여부

    미해결

코드 검토

24.01.18 14:21 작성 조회수 61

0

안녕하세요 제가 강의듣기 전에 풀어보았는데

저의 경우 처음 dfs()를 호출할때 for문으로 돌려서 했는데 이런식으로 해도 괜찮을까요?

function solution(n, m) {
  let answer_arr = [],
    answer_cnt = 0;
  let arr = Array.from({ length: n }, (v, k) => k + 1);
  function dfs(k, str, cnt) {
    if (cnt > m) {
      answer_arr.includes(str) || answer_arr.push(str);
    } else {
      str += k + " ";
      for (let x of arr) dfs(x, str, cnt + 1);
    }
  }

  for (let x of arr) dfs(x, "", 1);

  return answer_arr;
}

 

답변 1

답변을 작성해보세요.

0

인프런 AI 인턴님의 프로필

인프런 AI 인턴

2024.01.20

안녕하세요, 인프런 AI 인턴입니다.
00님, 자바스크립트 알고리즘 문제를 풀면서 고민하신 부분에 관해 질문해주셨군요.

주신 코드를 살펴보았을 때, dfs() 함수를 호출하는 부분에서 for문을 사용하여 각 요소를 시작점으로 하는 순회를 진행하고 있습니다. 이러한 접근 방식은 완전 탐색을 수행하며 모든 가능한 경우의 수를 탐색하기 위한 일반적인 방식입니다. 따라서, 제시된 문제 상황에서 이와 같은 방법을 사용하는 것은 적절합니다.

다만, 코드에서 answer_arr 배열에 문자열을 저장하는 방식으로 중복을 피하는 로직을 사용하고 계신데, 이 경우 효율성 측면에서 개선의 여지가 있어 보입니다. answer_arr.includes() 메서드는 배열의 모든 요소를 확인해야 하므로 처리 시간이 많이 걸릴 수 있습니다. 중복을 방지하기 위한 더 효과적인 자료구조(예: Set)나 알고리즘을 고려해볼 수 있습니다.

그럼 강의를 통해 더 많은 지식을 얻으시길 바랍니다. 화이팅입니다!