1+ package backjoon ;
2+ // https://www.acmicpc.net/problem/9184
3+ import java .io .BufferedReader ;
4+ import java .io .IOException ;
5+ import java .io .InputStreamReader ;
6+ import java .util .StringTokenizer ;
7+
8+ public class _9184 {
9+ // 함수 w는 0이하는 1을 호출하고 20이상은 20을 호출하기때문에 길이는 21로 설정
10+ static int [][][] dp = new int [21 ][21 ][21 ];
11+
12+ public static void main (String [] args ) throws IOException {
13+ BufferedReader br = new BufferedReader (new InputStreamReader (System .in ));
14+ StringBuilder sb = new StringBuilder ();
15+ // memory 24808 runtime 228
16+ while (true ) {
17+ StringTokenizer st = new StringTokenizer (br .readLine (), " " );
18+
19+ int a = Integer .parseInt (st .nextToken ());
20+ int b = Integer .parseInt (st .nextToken ());
21+ int c = Integer .parseInt (st .nextToken ());
22+
23+ // -1 -1 -1 이 나오면 종료
24+ if (a == -1 && b == -1 && c == -1 ) {
25+ break ;
26+ }
27+ sb .append ("w(" + a + ", " + b + ", " + c + ") = " ).append (w (a ,b ,c )).append ('\n' );
28+ }
29+ System .out .println (sb );
30+ }
31+
32+ static int w (int a , int b , int c ) {
33+
34+ // 이미 저장되어있는 값은 그대로 호출
35+ if (inRange (a , b , c ) && dp [a ][b ][c ] != 0 ) {
36+ return dp [a ][b ][c ];
37+ }
38+
39+ if (a <= 0 || b <= 0 || c <= 0 ) {
40+ return 1 ;
41+ }
42+
43+ if (a > 20 || b > 20 || c > 20 ) {
44+ return dp [20 ][20 ][20 ] = w (20 , 20 , 20 );
45+ }
46+
47+ if (a < b && b < c ) {
48+ return dp [a ][b ][c ] = w (a , b , c - 1 ) + w (a , b - 1 , c - 1 ) - w (a , b - 1 , c );
49+ }
50+
51+ return 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 );
52+ }
53+
54+ // a,b,c의 범위가 0 ~ 20 사이인지 체크
55+ static boolean inRange (int a , int b , int c ) {
56+ return 0 <= a && a <= 20 && 0 <= b && b <= 20 && 0 <= c && c <= 20 ;
57+ }
58+ }
59+ /*
60+ input
61+ 1 1 1
62+ 2 2 2
63+ 10 4 6
64+ 50 50 50
65+ -1 7 18
66+ -1 -1 -1
67+
68+ output
69+ w(1, 1, 1) = 2
70+ w(2, 2, 2) = 4
71+ w(10, 4, 6) = 523
72+ w(50, 50, 50) = 1048576
73+ w(-1, 7, 18) = 1
74+ */
0 commit comments