본문 바로가기
ps

[백준 2916] 도영이가 만든 맛있는 음식 [JS]

by FAPER 2024. 1. 11.

백트래킹 기법으로 해결하였다.

 

신맛과 쓴맛의 조합을 최대 N 까지 고르고 거기서 가장 차이가 작은 경우의 수를 출력하면 된다.

const input = require('fs').readFileSync('/dev/stdin').toString().trim().split('\n')
const n = Number(input[0])
const arr = input.slice(1).map(e=>e.split(" ").map(Number))
let ans = 9999999999

const recur = (idx, sin, ssun,now)=>{
    if(idx==n){
        if(now==0)
            return
        // console.log(sin,ssun)
        let result = Math.abs(sin - ssun)
        ans = Math.min(result,ans)
        return
    }
    recur(idx+1,sin*arr[idx][0],ssun+arr[idx][1],now+1) //신맛과 쓴맛을 고르거나
    recur(idx+1,sin, ssun, now) // 고르지 않거나 
}
recur(0,1,0,0)
console.log(ans)

'ps' 카테고리의 다른 글

[백준] 1774 - 수 묶기  (0) 2024.02.20
백준 큰 수 만들기  (0) 2024.01.14
[백준] 15656 N과 M (7) Node js 풀이  (0) 2024.01.07
[백준] 3085 사탕 게임  (0) 2024.01.03
[백준] - 1064 평행사변형  (0) 2024.01.02