카테고리 없음

[백준/JAVA]2775번: 부녀회장이 될테야

imname1am 2023. 5. 10. 22:09
반응형

🔺 문제

 

2775번: 부녀회장이 될테야

첫 번째 줄에 Test case의 수 T가 주어진다. 그리고 각각의 케이스마다 입력으로 첫 번째 줄에 정수 k, 두 번째 줄에 정수 n이 주어진다

www.acmicpc.net

 

🔺 코드

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
32
33
34
35
36
37
38
import java.util.*;
import java.io.*;
 
public class Main {
    static int T, K, N;
    static int[][] D;
    
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        
        T = Integer.parseInt(br.readLine());
        
        // DP 배열 초기화
        D = new int[15][15];
        for(int i = 0 ; i < 15 ; i++) {
            D[i][1= 1;    // 1호실 값은 항상 1로 초기화
            D[0][i] = i;    // 0층 i호의 수는 i로 초기화
        }
        
        // DP 배열 채우기
        for(int i = 1 ; i < 15 ; i++) {
            for(int j = 2 ; j < 15 ; j++) {
                D[i][j] = D[i][j - 1+ D[i - 1][j];
            }
        }
        
        StringBuilder sb = new StringBuilder();
        for(int i = 0 ; i < T ; i++) {
             int K = Integer.parseInt(br.readLine());
             int N = Integer.parseInt(br.readLine());
             
             sb.append(D[K][N] + "\n");
        }
        
        System.out.println(sb.toString());
        br.close();
    }
}
cs
✅ 해결 아이디어
✔ DP → 점화식! (23번째 줄)

 

💥 유의사항

• D[ i ][ j ] = D[ i - 1 ] [ 0 ] +  … + D[ i - 1 ] [ j - 1 ] + D[ i - 1 ][ j ] 가 원래 식인데

여기서 D[ i - 1 ] [ 0 ] +  … +D[ i - 1 ] [ j - 1 ] D[ i ] [ j - 1] 므로

⇨ 최종 점화식 : D[ i ][ j ] = D[ i ][ j - 1 ] + D[ i - 1 ][ j ]

 

 


🔺 다른 풀이들

과정 설명이 굿..

 

[백준] 2775번 : 부녀회장이 될테야 - JAVA [자바]

https://www.acmicpc.net/problem/2775 2775번: 부녀회장이 될테야 첫 번째 줄에 Test case의 수 T가 주어진다. 그리고 각각의 케이스마다 입력으로 첫 번째 줄에 정수 k, 두 번째 줄에 정수 n이 주어진다. (1

st-lab.tistory.com

 


💬 느낀 점

점화식을 잘 세우는 사람이 되고 싶다!

 

 

1회독 2회독 3회독 4회독 5회독
V 7/3      

 

 

(+7/3 2회독)

점화식 쉽게 세웠다.... !!ㅠㅠ

한 번 풀어본 문제라고 안 쫄아서 그런가...ㅠㅠ

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
32
33
34
35
36
import java.util.*;
import java.io.*;
 
public class Main { 
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringBuilder sb = new StringBuilder();
        
        int T = Integer.parseInt(br.readLine());
        
        int[][] dp  = new int[15][15];
        
        // dp 배열 초기화
        for(int i = 0 ; i < 15 ; i++) {
            dp[0][i] = i;
            dp[i][1= 1;
        }
        
        // dp 값 채우기
        for(int i = 1 ; i < 15 ; i++) {
            for(int j = 2 ; j < 15 ; j++) {
                dp[i][j] = dp[i-1][j] + dp[i][j-1];
            }
        }        
 
        while(T --> 0) {
            int k = Integer.parseInt(br.readLine());
            int n = Integer.parseInt(br.readLine());
            
            sb.append(dp[k][n]).append("\n");
        }
        
        System.out.println(sb);
    }
}
 
cs

반응형