[백준15666_자바스크립트(javascript)] - N과 M(12)

경이·2024년 10월 24일

𝑩𝑶𝑱 (𝒋𝒔)

목록 보기
231/325

🔴 문제

N과 M(12)


🟡 Sol

const fs = require('fs');
const path = process.platform === 'linux' ? '/dev/stdin' : 'Wiki\\input.txt';
const inputs = fs
  .readFileSync(path, 'utf-8')
  .trim()
  .split('\n')
  .map((it) => it.split(' ').map(Number));

const [n, m] = inputs[0];
const numbers = inputs[1].sort((a, b) => a - b);

let ans = '';

const bt = (selected, start) => {
  if (selected.length === m) {
    ans += selected.join(' ') + '\n';
    return;
  }

  let preNumber = -1;

  for (let i = start; i < n; i++) {
    if (preNumber !== numbers[i]) {
      bt([...selected, numbers[i]], i);

      preNumber = numbers[i];
    }
  }
};

bt([], 0);
console.log(ans);

🟢 풀이

⏰ 소요한 시간 : -

오랜만에 풀어보는 nm시리즈

  • 같은 수를 여러 번 골라도 되지만 고른 수가 중복이면 안된다.
    -> preNumber이라는 변수가 현재 내가 고르고 있는 수랑 같은지, 다른지 확인한다.
  • 고른 수열은 비내림차순이여여 한다.
    -> 비 내림차순을 체크해주기 위해서 백트래킹 함수의 두 번째 인자로 start를 전달하여 반복문의 시작 인덱스를 정해준다.

🔵 Ref

profile
록타르오가르

0개의 댓글