728x90
반응형
목차
https://www.acmicpc.net/problem/1759
문제
문제 구현 방향
조합을 구현할 줄 알아야 풀 수 있는 문제이다.
아래 글을 참고하자
https://be-senior-developer.tistory.com/49
[알고리즘] 순열과 조합 c++ 구현
목차 c++로 순열과 조합을 어떻게 구현하는지에 대해 알아보자 stl로 구현한 순열 #include #include #include using namespace std; int main() { vector v; v.push_back(1); v.push_back(2); v.push_back(3); sort(v.begin(), v.end()); //
be-senior-developer.tistory.com
문제 풀이
조합 함수 재귀 종료 조건에서 조합 함수를 한번더 돌려 조건에 만족하면 배열에 넣는 식으로 구현했다.
최적화를 하지 않아 코드가 난잡하다..
코드 구현
const input = require("fs")
.readFileSync("./dev/stdin", "utf-8")
.trim()
.split("\n");
let [L, C] = input[0].trim().split(" ").map(Number);
let dic = input[1].trim().split(" ");
let mo = [];
let ja = [];
dic.forEach((item) => {
if (
item === "a" ||
item === "e" ||
item === "i" ||
item === "o" ||
item === "u"
) {
mo.push(item);
} else {
ja.push(item);
}
});
let ans = [];
let ANS = [];
function combi2(arr, cnt, target, tArr) {
if (arr.length === target) {
let merge = [...ans];
merge.push(...arr);
let sorting = merge.sort((a, b) => {
if (a < b) {
return -1;
} else return 1;
});
let str = sorting.map((item) => item).join("");
if (str.length === L) ANS.push(str);
return;
}
for (let i = cnt; i < tArr.length; i++) {
arr.push(tArr[i]);
combi2(arr, i + 1, target, tArr);
arr.pop();
}
}
function combi(arr, cnt, target, tArr) {
if (arr.length === target) {
ans.push(...arr);
for (let j = 2; j <= ja.length; j++) {
let n = [];
combi2(n, 0, j, ja);
}
ans = [];
return;
}
for (let i = cnt; i < tArr.length; i++) {
arr.push(tArr[i]);
combi(arr, i + 1, target, tArr);
arr.pop();
}
}
let a = [];
for (let i = 1; i <= mo.length; i++) {
combi(a, 0, i, mo);
}
ANS.sort((a,b)=>{
if(a<b)return -1;
else return 1;
}).forEach((item)=>console.log(item));
반응형
'백준 문제풀이 > Nodejs' 카테고리의 다른 글
[백준][스택] 1406 에디터 NodeJs 구현 (0) | 2025.01.04 |
---|---|
[백준][스택] 2493 탑 NodeJs 구현 (0) | 2024.12.31 |
[백준][슬라이딩 윈도우] 1593 문자해독 NodeJs 구현 (0) | 2024.12.26 |
[백준][브루트포스] 1107 리모컨 NodeJs 구현 (0) | 2024.12.25 |
[백준][UnionFind] 1043 거짓말 NodeJs 구현 (0) | 2024.12.25 |