Skip to content

Commit

Permalink
#19 23.08.24 > 5 > 암호 만들기
Browse files Browse the repository at this point in the history
  • Loading branch information
beurmuz committed Aug 24, 2023
1 parent 74e2179 commit 4b165d8
Show file tree
Hide file tree
Showing 2 changed files with 41 additions and 0 deletions.
40 changes: 40 additions & 0 deletions src/bj/gold/5/1759.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
/**
* [백트래킹 문제]
* - dfs 내 조건 설정을 잘못하여 시간이 좀 걸렸다.
* - 중요한 것은 단순히 모음의 개수가 2개 이상일 때 answer에 추가하는 것이 아닌
* - 모음의 개수가 0보다 크면서 암호 길이에서 모음의 개수를 뺐을 때 그 값이 1보다 커야 answer가 될 수 있다는 것이다.
*/

const [inputs, ...alphabet] = require("fs")
.readFileSync("/dev/stdin")
.toString()
.trim()
.split("\n");

const solution = (inputs, alphabet) => {
const [L, C] = inputs.split(" ").map((v) => +v);
const arr = alphabet[0].split(" ").sort();
const aeiou = new Set(["a", "e", "i", "o", "u"]);
let answer = [];

const dfs = (startIdx, pw) => {
if (pw.length === L) {
let count = 0;
for (let k = 0; k < L; k++) {
if (aeiou.has(pw[k])) count++;
}
if (count > 0 && L - count > 1) answer.push(pw.join(""));
return;
} else {
for (let i = startIdx; i < C; i++) {
pw.push(arr[i]);
dfs(i + 1, pw);
pw.pop(arr[i]);
}
}
};
dfs(0, []);
return answer.join("\n");
};

console.log(solution(inputs, alphabet));
1 change: 1 addition & 0 deletions src/bj/gold/5/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -28,3 +28,4 @@
| 24 | 6198 | [옥상 정원 꾸미기](./6198.js) | 23.06.29 | [23.07.11](./replay/6198.js) |
| 25 | 1240 | [노드 사이의 거리](./1240.js) | 23.08.10 | X |
| 26 | 2467 | [용액](./2467.js) | 23.08.11 ||
| 27 | 1759 | [암호 만들기](./1759.js) | 23.08.24 | O |

0 comments on commit 4b165d8

Please sign in to comment.