https://www.acmicpc.net/problem/2775
2775번: 부녀회장이 될테야
첫 번째 줄에 Test case의 수 T가 주어진다. 그리고 각각의 케이스마다 입력으로 첫 번째 줄에 정수 k, 두 번째 줄에 정수 n이 주어진다
www.acmicpc.net
풀이
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Main {
static int getValue(int k, int n){
if(k==0) return n;
else if(n==1) return 1;
else return (getValue(k,n-1) + getValue(k-1,n));
}
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int t = Integer.parseInt(br.readLine());
for(int i=0;i<t;i++){
int k = Integer.parseInt(br.readLine());
int n = Integer.parseInt(br.readLine());
System.out.println(getValue(k,n));
}
}
}
설명
k층의 n호에 사는 사람의 수를 구하는 문제이다.
k층의 n호에 사는 사람의 수는 k-1층의 1호부터 k-1층의 n호까지 사는 사람들의 수를 모두 더한 값이다.
- k층의 n호에 사는 사람의 수를 구하기 위해서는 k-1층에 사는 사람들을 알아야 하고, k-1층에 사는 사람을 알려면 k-2층에 사는 사람을 알아야 한다.
이처럼 특정 값을 알기 위해서는 결국 0층에 사는 사람의 값을 구해서 k층까지 재귀적으로 값을 구해야한다.
또한 0층의 n호에 사는 사람은 n명이다.
- 이를 통해 0층에 사는 n호 사람의 수를 구할수 있다. ( 층(k)이 0이면, 호(n)에 사는 사람의 수는 n이다)
728x90
'코딩 테스트 > 백준' 카테고리의 다른 글
[백준2798/JAVA] 블랙잭 (0) | 2021.12.29 |
---|---|
[백준2292/JAVA] 벌집 (0) | 2021.12.23 |
[백준10250/JAVA] ACM 호텔 (0) | 2021.12.22 |
[백준1085/JAVA] 직사각형에서 탈출 (0) | 2021.10.25 |
[백준2167/JAVA] 2차원 배열의 합 (0) | 2021.07.21 |