알고리즘

[백준/Java]Q2775

  • -
반응형

백준 알고리즘 8단계 기본 수학1 2775번 문제입니다.


Q. 아래 조건과 같은 아파트가 있을 때, k층 n호에는 몇 명이 살고 있는지 출력하는 프로그램을 작성하시오.

[입력]
- 첫 번째 줄에 테스트 케이스 T가 주어진다.
- 각각의 케이스마다 첫 번째 줄에 정수 K, 두 번째 줄에 정수 N이 주어진다.

 

[조건]
- 1 ≤ K, N ≤ 14
- K층 N호에 살려면 자신의 아래(K-1)층의 1호부터 N호까지 사람들의 수의 합만큼 사람들이 살아야한다.
- 아파트는 0층부터 있고 각층은 1호부터 있으며 0층의 i호에는 i명이 산다.

풀이

문제를 풀기 위해 조건에 따라 아파트를 그려봤다.

아파트는 0층부터 있으며, 0층은 숫자가 1부터 +1씩 증가한다.

조건에 따라 K층 N호에 거주하는 사람 수는 K-1층의 0에서 N까지의 합이다.(x축의 초기값을 0으로 잡았기 때문에)

규칙이 어렵지 않아 2차원 배열과 반복문을 이용해 문제를 풀 수 있었다.

  • [1][2] = [0][0] + [0][1] + [0][2]
  • [2][3] = [1][0] + [1][1] + [1][2] + [1][3]
  • [3][4] = [2][0] + [2][1] + [2][2] + [2][3] + [2][4]

 

소스
package com.baek.algo;

import java.util.Scanner;

public class Q2775 {

	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);

		int t = sc.nextInt();

		for(int i = 0; i < t; i++) {
			int k = sc.nextInt();
			int n = sc.nextInt();

			if(n >= 14) n = 14;

			int[][] arr = new int[k + 1][n];

			for(int x = 0; x <= k; x++) {
				for(int y = 0; y < n; y++) {
					int sum = 0;

					if(x == 0) {
						arr[x][y] = y + 1;
					} else {
						for(int j = 0; j <= y; j++) {
							sum = sum + arr[x-1][j];
						}
						arr[x][y] = sum;
					}
				}
			}

			System.out.println(arr[k][n-1]);
		}

		sc.close();
	}
}

 

 

반응형

'알고리즘' 카테고리의 다른 글

[백준/Java]Q1978  (0) 2021.07.21
[백준/Java]Q10757  (0) 2021.07.17
[백준/Java]Q2839  (0) 2021.07.16
[백준/Java]Q10250  (0) 2021.07.14
[백준/Java]Q2869  (0) 2021.07.14
Contents

포스팅 주소를 복사했습니다.

이 글이 도움이 되었다면 공감 부탁드립니다.