728x90
문제
https://www.acmicpc.net/problem/16987
문제 해석
이 문제는 백트래킹 문제이며, 마지막 계란까지 계산해야 문제를 풀 수 있다.
때문에 flag를 설정하며 마지막 로직을 확인하는 과정이 필수이다.
풀이
const filePath = process.platform === "linux" ? "dev/stdin" : "../test.txt";
const input = require("fs").readFileSync(filePath).toString().trim().split("\n");
function solution(input) {
const N = input[0].split(" ").map(Number)[0];
const eggs = [];
let answer = 0;
for (let i = 1; i <= N; i++) {
eggs.push(input[i].split(" ").map(Number));
}
function dfs(now) {
if (now == N) {
let broken = 0;
for (let i = 0; i < N; i++) {
if (eggs[i][0] <= 0) broken++;
}
answer = Math.max(broken, answer);
return;
}
let flag = true;
for (let next = 0; next < N; next++) {
if (next == now) continue;
if (eggs[now][0] <= 0 || eggs[next][0] <= 0) continue;
flag = false;
eggs[now][0] = eggs[now][0] - eggs[next][1];
eggs[next][0] = eggs[next][0] - eggs[now][1];
dfs(now + 1);
eggs[now][0] = eggs[now][0] + eggs[next][1];
eggs[next][0] = eggs[next][0] + eggs[now][1];
}
if (flag) dfs(now + 1);
}
dfs(0);
return answer;
}
console.log(solution(input));
끝
728x90
'WEB > 백준 문제 풀이' 카테고리의 다른 글
백준 15723 n단 논법 (node.js) (0) | 2024.06.28 |
---|---|
백준 11403 경로 찾기 (node.js) (0) | 2024.06.27 |
백준 15686 연산자 끼워 넣기 (node.js) (0) | 2024.06.22 |
백준 15686 치킨 배달 (node.js) (0) | 2024.06.20 |
백준 9663 N-Queen (node.js) (0) | 2024.06.19 |