14501 - 퇴사

LEE'S·2024년 11월 1일
0

백준

목록 보기
27/27

문제

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))

계속 조건문 같은게 헷갈려서 생각보다 오래걸렸다 ㅠㅜ

profile
기록 블로그

0개의 댓글