본문 바로가기
개발 관련 공부/알고리즘

백준 9184

by 슴새 2021. 8. 6.
반응형

 
import java.util.*;
 
public class Main {

	public static void main(String[] args) {
	      Scanner sc=new Scanner(System.in);	       
	      while(true) {
	    	  int a=sc.nextInt();
		      int b=sc.nextInt();
		      int c=sc.nextInt();
	    	  if(a==-1&&b==-1&&c==-1) break;	    	  
	    	  int res;
	    	  try {
	    		  res=w(a,b,c);  
	    	  }catch(Exception e){
	    		  res=1;
	    	  }
	    	  System.out.println("w("+a+", "+b+", "+c+") = "+res);
	      }
	     
		 
 
	}
	static int dp[][][] = new int[51][51][51];	 
	 
	static int w(int a, int b, int c) { 
	 
		// 이미 계산되어 저장되어있는 경우 해당 값을  반환 
		if(dp[a][b][c] != 0) {
			return dp[a][b][c];
		}
			
		else if(a <= 0 || b <= 0 || c <= 0) {
			return 1;
		}	 
	 
		else if(a > 20 || b > 20 || c > 20) {
			return dp[20][20][20] = w(20, 20, 20);
		}
			
		else if(a < b && b < c) {
			dp[a][b][c] = w(a, b, c - 1) + w(a, b - 1, c - 1) - w(a, b - 1, c);
			return dp[a][b][c];
		}
        else{
            dp[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 dp[a][b][c];
        }
		 
		 
	}
}

 

반응형

'개발 관련 공부 > 알고리즘' 카테고리의 다른 글

백준 2606  (0) 2021.08.10
백준 1260  (0) 2021.08.09
백준 18870  (0) 2021.08.05
백준 2108  (0) 2021.08.04
백준 11652  (0) 2021.08.03

댓글