백준[node.js] > 15663번 N과 M (9)

2024. 12. 16. 21:04·🔒Algorithm

문제링크

https://www.acmicpc.net/problem/15663

 

문제풀이

-  dfs로 탐색하면서 동시에 백트래킹으로 효율성을 최대화 했다.  

- Set 객체를 이용하여 중복을 방지하였다.

let fs = require("fs");
let input = fs.readFileSync("/dev/stdin").toString().trim().split("\n");

let [N, M] = input[0].split(" ").map((n) => Number(n));
let arr = input[1].split(" ").map((n) => Number(n));

// 정렬
arr.sort((a, b) => a - b);

let set = new Set([]);

// 숫자 세트를 담을 array
let group = [];
// 숫자 세트의 인덱스 그룹
let indexGroup = [];

let dfs = (count) => {
    if (count === M) {
        set.add(group.join(" "));
        return;
    }

    for (let i = 0; i < arr.length; ++i) {
        if (!indexGroup.includes(i)) {
            group.push(arr[i]);
            indexGroup.push(i);
            dfs(count + 1);
            group.pop();
            indexGroup.pop();
        }
    }
};

dfs(0, 0);

set.forEach((item) => {
    console.log(item);
});

'🔒Algorithm' 카테고리의 다른 글

백준[node.js] > 1927번 최소 힙  (0) 2024.12.19
백준[node.js] > 21736번 헌내기는 친구가 필요해  (0) 2024.12.17
백준[node.js] > 11727번 2xn 타일링 2  (0) 2024.12.15
백준[node.js] > 30804번 과일 탕후루  (1) 2024.12.14
백준[node.js] > 1463번 1로 만들기  (0) 2024.12.13
'🔒Algorithm' 카테고리의 다른 글
  • 백준[node.js] > 1927번 최소 힙
  • 백준[node.js] > 21736번 헌내기는 친구가 필요해
  • 백준[node.js] > 11727번 2xn 타일링 2
  • 백준[node.js] > 30804번 과일 탕후루
devWarrior
devWarrior
  • devWarrior
    devWarrior
    devWarrior
  • 전체
    오늘
    어제
    • 🧩Dev (263)
      • ⭐FE (34)
      • 🔒Algorithm (155)
      • ➕Etc. (11)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
    • 글쓰기
    • 관리
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    Algorithm
    실버4
    node.js
    코테
    js
    골드5
    자바스크립트
    실버3
    프로그래머스
    알고리즘
    dp
    FE
    실버1
    백준
    자스
    BFS
    실버2
    DFS
    javascript
    Lv2
    nodejs
    오블완
    Easy
    react
    프론트엔드
    티스토리챌린지
    leetcode
    그리디
    코딩테스트
    구현
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
devWarrior
백준[node.js] > 15663번 N과 M (9)
상단으로

티스토리툴바