[백준] 2275번: 부녀회장이 될테야_java

응갱·2022년 6월 30일
1

백준

목록 보기
1/56
post-thumbnail

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

문제

평소 반상회에 참석하는 것을 좋아하는 주희는 이번 기회에 부녀회장이 되고 싶어 각 층의 사람들을 불러 모아 반상회를 주최하려고 한다.

이 아파트에 거주를 하려면 조건이 있는데, “a층의 b호에 살려면 자신의 아래(a-1)층의 1호부터 b호까지 사람들의 수의 합만큼 사람들을 데려와 살아야 한다” 는 계약 조항을 꼭 지키고 들어와야 한다.

아파트에 비어있는 집은 없고 모든 거주민들이 이 계약 조건을 지키고 왔다고 가정했을 때, 주어지는 양의 정수 k와 n에 대해 k층에 n호에는 몇 명이 살고 있는지 출력하라. 단, 아파트에는 0층부터 있고 각층에는 1호부터 있으며, 0층의 i호에는 i명이 산다.

입력

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

출력

각각의 Test case에 대해서 해당 집에 거주민 수를 출력하라.

제한

1 ≤ k, n ≤ 14


코드

import java.util.Scanner;

public class pr2775 {

	public static void main(String[] args) {
		int arr[][] = new int[15][15];

		for (int i = 1; i < 15; i++) {	//0층 설정
			arr[0][i] = i;
		}

		for (int i = 1; i < 15; i++) {
			for (int j = 1; j < 15; j++) {
				if (j == 1) {
					arr[i][1] = 1;
				} else
					arr[i][j] = arr[i - 1][j] + arr[i][j - 1];
			}
		}
		Scanner s = new Scanner(System.in);
		int T = s.nextInt();
		int num = 0;
		while (true) {
			num++;
			int k = s.nextInt();
			int n = s.nextInt();
			System.out.println(arr[k][n]);
			if (num == T)
				break;
		}
	}

}

코드 해석

k층의 n호에 몇 명이 사는지 구하는 문제이다. 문제 상 표면에 들어난 규칙은 “a층의 b호에 살려면 자신의 아래(a-1)층의 1호부터 b호까지 사람들의 수의 합만큼 사람들을 데려와 살아야 한다” 이다. 이 규칙 그대로 풀어도 되지만 표를 그려서 보면 코드가 조금 더 간단해진다.
k층의 n호는 k층의 (n-1)호의 사람 수와 (k-1)층의 n호 사람 수를 합한 값과 같다. 이를 for문을 이용해서 풀었다. 0층은 해당 규칙이 사용되기 이전의 초기설정값이라 미리 설정해주었다.

🥔감자의 과정🥔


velog 사진 크기 조정 시켜줘요!! ㅠㅠ
처음엔 시그마 함수 만들어서 풀었는데 코드가 맘에 안 들어서 엎어버리고 다시 풀었다 ,,

profile
🥔 한 덩이

0개의 댓글