알고리즘 연습

[2775번] 부녀회장이 될테야 -Java

밀깜 2021. 11. 8. 21:03

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

 

2775번: 부녀회장이 될테야

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

www.acmicpc.net

 

1. 배운점

- 직접 손으로 표현하기: 표를 직접 그려보면서 규칙성을 찾아보려고 노력한다.

- 규칙성 찾기 : A 층 B호 거주민 = (A-1 층 B호 거주민 + A층 B-1호 거주민)

 

2. 개선할 점

- 머리로 그려지지 않을 때는 직접 손으로 상황을 표현해본다.

 

3. 궁금한 점

 

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class Main {

	public static void main(String[] args) throws IOException {
		
		// import java.io.BufferedReader
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		
		// Test case, 층, 호수 받기
		int testCase = Integer.parseInt(br.readLine());
		
		// Test case만큼 거주민 수 출력하기
		
		for (int i = 0; i < testCase; i++) {
			
			// 층, 호수 받기
			int floorNum = Integer.parseInt(br.readLine());
			int roomNum = Integer.parseInt(br.readLine());
			
			// 거주민 수 출력
			System.out.println(calcResidentNumber(floorNum, roomNum));
		}
		
	}
	
	static int calcResidentNumber(int floorNum, int roomNum) {
		
		// 최대 수만큼 배열 생성
		int [][] residents = new int [15][15];
		
		// 값이 고정인 호수 초기화
		for(int i = 0; i < 15; i++) {
			// 0층 호수 값 초기화
			residents[0][i] = i;
			
			// i층 1호 값 초기화
			residents[i][1] = 1;
			
		}
		
		// 규칙성 발견하여 호수 거주민 값 구하기
		for (int i = 1; i < 15; i++) {
			for(int j = 2; j < 15; j++) {
				residents[i][j] = residents[i-1][j] + residents[i][j-1];
			}
		}
		return residents[floorNum][roomNum];
	}
}