문제
풀이
입력으로 여러 테스트 케이스가 주어지고,
각 테스트 케이스마다 로또 번호를 선택한다.
로또 번호는 각 테스트 케이스마다 집합 S에서 6개를 뽑은 숫자의 집합이며 모든 경우의 수를 출력해주면 된다.
즉, 각 테스트 케이스마다 N개 중 6개를 뽑는 조합을 모두 모두 나열하면 된다.
입력이 아래와 같이 주어지므로,
첫 번째 수를 변수 N으로 선언하고, 배열 S에 뽑을 수 있는 로또 번호들을 담아 진행한다.
크게 어렵지 않으므로 바로 코드를 보자.
코드
const sol = (input) => {
let idx = 0;
let answer = "";
while (input[idx].length !== 1) {
const [N, ...S] = input[idx++].split(" ").map(Number);
function dfs(V, pick) {
if (pick.length === 6) {
answer += `${pick.join(" ")}\n`;
return;
}
for (let i = V; i < N; i++) {
dfs(i + 1, [...pick, S[i]]);
// spread operator를 사용해서 기존의 pick배열에 선택한 원소를 추가해 다음 재귀로 전달
}
}
dfs(0, []);
answer += "\n";
}
return answer;
};
// 백준에서 입력을 받는 코드
const input = [];
require("readline")
.createInterface(process.stdin, process.stdout)
.on("line", (line) => {
input.push(line);
})
.on("close", () => {
console.log(sol(input));
process.exit();
});
'DS & Algorithm > baekjoon' 카테고리의 다른 글
[백준] 14225번 부분수열의 합 - JavaScript(NodeJS) (0) | 2021.06.05 |
---|---|
[백준] 1182번 부분수열의 합 - JavaScript(NodeJS) (0) | 2021.06.05 |
[백준] 14889 스타트와 링크 - JavaScript(NodeJS) (0) | 2021.06.04 |
[백준] 14888번 연산자 끼워넣기 - JavaScript(NodeJS) (0) | 2021.06.04 |
[백준] 1339번 단어 수학 - JavaScript(NodeJS) (0) | 2021.06.04 |