알고리즘 연습
[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];
}
}