https://www.acmicpc.net/problem/14501
const fs = require("fs") ;
const input = fs.readFileSync("/dev/stdin").toString().split("\n") ;
const n = Number(input.shift()) ;
const arr = [[]] ;
for (let i = 0 ; i < n ; i++) arr.push(input[i].split(" ").map(Number)) ;
function solution(n, arr) {
let answer = 0 ;
function f(day, money) { // day:남은날 , money:번돈
if (day === n && arr[day][0] === 1) {
// 마지막 날인데 상담기간이 하루일 때
answer = Math.max(money+arr[day][1], answer);
}
else if (day >= n) {
// day가 넘어버리면 그냥
answer = Math.max(money, answer) ;
} else {
f(day+1, money) ; // day일 은 패스하는 경우
// day 패스 안할 경우
if (day+arr[day][0]-1 <= n) f(day+arr[day][0] , money+arr[day][1]) ; // 상담기간이 넘지 않을경우
else answer = Math.max(money, answer) ;
}
}
f(1,0) ;
return answer ;
}
console.log(solution(n,arr))
계속 조건문 같은게 헷갈려서 생각보다 오래걸렸다 ㅠㅜ