티스토리 뷰

https://www.acmicpc.net/problem/9184

 

9184번: 신나는 함수 실행

입력은 세 정수 a, b, c로 이루어져 있으며, 한 줄에 하나씩 주어진다. 입력의 마지막은 -1 -1 -1로 나타내며, 세 정수가 모두 -1인 경우는 입력의 마지막을 제외하면 없다.

www.acmicpc.net

const fs = require('fs');
const input = fs.readFileSync("/dev/stdin").toString().trim().split("\n");
input.pop();
const factors = input.map(v=>v.split(' ').map(v=>+v));
let memo = [];

for(let i =0; i<=101; i++){
    memo[i]=[];
    for(let j =0; j<=101; j++){
        memo[i][j]=[];
        for(let k=0; k<=101; k++){
            memo[i][j][k]=0;
        }
    }
}
memo[50][50][50] = 1;

factors.forEach(v=>{
    const answer = w(v[0]+50,v[1]+50,v[2]+50)
    console.log(`w(${v[0]}, ${v[1]}, ${v[2]}) = ${answer}`)
})


function w(a,b,c){
    if(memo[a][b][c]!=0){
        return memo[a][b][c];
    }else{
        if (a <= 50 || b <= 50 || c <= 50){
            return 1;
        }
        
        else if(a > 70 || b > 70 || c > 70) 
        return w(70, 70, 70)
        
        else if (a < b && b < c ){
            memo[a][b][c]=w(a, b, c-1) + w(a, b-1, c-1) - w(a, b-1, c);
        }
        
        else {
            memo[a][b][c]=w(a-1, b, c) + w(a-1, b-1, c) + w(a-1, b, c-1) - w(a-1, b-1, c-1);
        }
    }
    return memo[a][b][c];
}
728x90
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/10   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
글 보관함