알고리즘, SQL/알고리즘
백준 2775번 : 부녀회장이 될테야
킹갓홍
2023. 12. 23. 23:54
https://www.acmicpc.net/problem/2775
문제를 보면서 공식을 찾아보려고 메모장 켜서 일부를 그려보니까 공식따위는 존재하지 않는듯 했다.
층/호 | 1호 | 2호 | 3호 | 4호 | 5호 | 6호 |
5층 | 1 | 7 | 28 | 84 | 210 | 462 |
4층 | 1 | 6 | 21 | 56 | 126 | 252 |
3층 | 1 | 5 | 15 | 35 | 70 | 126 |
2층 | 1 | 4 | 10 | 20 | 35 | 56 |
1층 | 1 | 3 | 6 | 10 | 15 | 21 |
0층 | 1 | 2 | 3 | 4 | 5 | 6 |
그래서 머리 좀 굴리다가..사람들 풀이를 살짝 참고해보니,
제한란에 k와n에 해당하는 값이 1이상 14이하로 값이 그렇게 많지 않을 것을 활용했었다.
그것을 참고해서 크키가 14,14인 배열을 만들어서 값을 다 넣어 놓은 후에 k와n에 해당하는 값을 출력해주는 식으로 풀었다.
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()); //TestCase 반복 횟수
int[][] arr = new int[15][15]; // 14*14의 값을 넣어줄 배열생성
//배열에 기본 정보 넣어주기
for(int i=0; i<15; i++) {
arr[i][1] = 1; //각 층 1호에 입력될 인원 1
arr[0][i] = i; //0층은 각 호에 인원이 1씩 증가
}
//배열에 값 넣어주기
//i층 j호의 인원 = i-1층 j호의 인원 + i층 j-1호의 인원
for(int i=1; i<15; i++) {
for(int j=2; j<15; j++) {
arr[i][j] = arr[i-1][j] + arr[i][j-1];
}
}
//입력된 N층 K호의 값 테스트케이스 수 만큼 출력해주기
for(int i=0; i<T; i++) {
int N = Integer.parseInt(br.readLine());
int K = Integer.parseInt(br.readLine());
sb.append(arr[N][K]+"\n");
}
System.out.println(sb);
}
}