-
백준 2775번 : 부녀회장이 될테야알고리즘, SQL/알고리즘 2023. 12. 23. 23:54
https://www.acmicpc.net/problem/2775
2775번: 부녀회장이 될테야
첫 번째 줄에 Test case의 수 T가 주어진다. 그리고 각각의 케이스마다 입력으로 첫 번째 줄에 정수 k, 두 번째 줄에 정수 n이 주어진다
www.acmicpc.net
문제를 보면서 공식을 찾아보려고 메모장 켜서 일부를 그려보니까 공식따위는 존재하지 않는듯 했다.
층/호 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); } }
'알고리즘, SQL > 알고리즘' 카테고리의 다른 글
그래프(Graph) 자료구조란 무엇인가? (1) 2023.12.28 그리디(Greedy) 알고리즘이란? (+ 백준 5585번 : 거스름돈) (0) 2023.12.26 백준 2292번 : 벌집 (0) 2023.12.22 이분 탐색/이진 탐색(Binary Search)이란? (+백준 1920번) (0) 2023.12.15 백준 2751번 : 수 정렬하기2 (+System.out.println 반복사용의 단점) (0) 2023.12.13