https://www.acmicpc.net/problem/2775
// 기본값 0층 i호에 있을때 i명이 있다고 먼저 초깃값 지정해준 뒤에.
// 재귀함수로 계속 역으로 불러오면 되겠다.
//프로덕션코드
mport java.util.Scanner;
public class Quiz2775 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int numberOfTestCase = scanner.nextInt();
int[] numberOfPeople = new int[numberOfTestCase];
for (int i = 0; i < numberOfTestCase; i++) {
int k = scanner.nextInt();
int n = scanner.nextInt();
numberOfPeople[i] = getNumberOfPeople(k, n);
}
for (int i = 0; i < numberOfPeople.length; i++) {
System.out.println(numberOfPeople[i]);
}
}
static int getNumberOfPeople(int k, int n) {
if (k == 0) {
return n;
}
int sum = 0;
for (int i = 0; i <= n; i++) {
sum += getNumberOfPeople(k - 1, i);
}
return sum;
}
}
// 굿! 리팩토링 프린트부분만 묶고 끝내자
import java.util.Scanner;
public class Quiz2775 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int numberOfTestCase = scanner.nextInt();
int[] numberOfPeople = new int[numberOfTestCase];
for (int i = 0; i < numberOfTestCase; i++) {
int k = scanner.nextInt();
int n = scanner.nextInt();
numberOfPeople[i] = getNumberOfPeople(k, n);
}
print(numberOfPeople);
}
private static void print(int[] numberOfPeople) {
for (int i = 0; i < numberOfPeople.length; i++) {
System.out.println(numberOfPeople[i]);
}
}
static int getNumberOfPeople(int k, int n) {
if (k == 0) {
return n;
}
int sum = 0;
for (int i = 0; i <= n; i++) {
sum += getNumberOfPeople(k - 1, i);
}
return sum;
}
}
// 성공!
//(추가) 사실 다 안 더해줘도 되는구나? (k,n) = (k,n-1)+(k-1,n) 이 식이 계산도 적게하고 깔끔하네!
import java.util.Scanner;
public class Quiz2775 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int numberOfTestCase = scanner.nextInt();
int[] numberOfPeople = new int[numberOfTestCase];
for (int i = 0; i < numberOfTestCase; i++) {
int k = scanner.nextInt();
int n = scanner.nextInt();
numberOfPeople[i] = getNumberOfPeople(k, n);
}
print(numberOfPeople);
}
private static void print(int[] numberOfPeople) {
for (int i = 0; i < numberOfPeople.length; i++) {
System.out.println(numberOfPeople[i]);
}
}
static int getNumberOfPeople(int k, int n) {
if (k == 0) {
return n;
}
if (n == 0) {
return 0;
}
return getNumberOfPeople(k, n - 1) + getNumberOfPeople(k - 1, n);
}
}
//성공! 대신 n==0 일때 조건까지 추가해주면 된다.
'코딩테스트연습 > 백준' 카테고리의 다른 글
[백준 - JAVA] 18115번 : 카드 놓기 (0) | 2023.02.06 |
---|---|
[백준 - JAVA] 1920번 : 수 찾기 (1) | 2021.12.27 |
[백준 - JAVA] 2292번 벌집 (0) | 2021.12.18 |
[백준 - JAVA] 10814번 나이순 정렬 (0) | 2021.12.15 |
[백준 - JAVA] 1181번 단어 정렬 (0) | 2021.12.15 |