백준 2775번 -부녀회장이 될테야
0층은 i호만큼 사람이 있고
1층
1호 : 0층 1호
2호 : 0층 1호 + 2호
3호 : 0층 1호 + 2호 + 3호
2층
1호 : 1층 1호
2호 : 1층 1호 + 2호
3호 : 1층 1호 + 2호 + 3호
이런식이므로... 찾으려는 층 호의 인원수를 구하려면 그 전층과 그 전전층,.... 이렇게 내려와서 0층까지 내려와야한다.
이럴 때 쓰는 재귀함수!!!!!! 알아서 돌라는 뜻이다.....!
package Baek;
import java.util.Scanner;
public class Baek2775 { // I want to be an apt president
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
int T = scan.nextInt();
for(int i = 0; i < T; i++) {
int k = scan.nextInt();
int n = scan.nextInt();
System.out.println(House(k, n));
}
scan.close();
}
public static int House(int k, int n) {
if(k==0)
return n;
else if(n==0)
return 0;
else
return House(k-1, n) + House(k, n-1);
}
}
원래 인원수 + House재귀 이런식으로 하려고 했는데 그러면 인원수가 계속 더해져서....암튼 틀린다. 허허
그래서 예를 들어 House(1,1)일 때 = 1층 1호의 인원수를 구할 때
House(k-1, n) + House(k, n-1)을 사용하여
0층 1호 + 1층 0호
=> 0층 1호는 호수를 리턴
=> 1층 0호는 존재하지 않으므로 0을 리턴
하는 방식으로 넣어주어야 했다.
사실 이거 고민하는데에 시간이 너무 많이들어서 인터넷 참고했다... 기억하고 써먹도록 하자!
'알고리즘 > 백준' 카테고리의 다른 글
[BaekJoon] 백준 1978번 _소수찾기 for Java (0) | 2021.09.25 |
---|---|
[BaekJoon] 백준 1011번 _Fly me to the Alpha Centauri for JAVA (0) | 2021.09.24 |
[BeakJoon] 백준 10757번_ 큰 수 A+B for Java (0) | 2021.09.21 |
[BaekJoon] 백준 2839번_설탕 배달 for Java (0) | 2021.09.19 |
[BaekJoon] 백준 10250번_ACM 호텔 forJava (0) | 2021.09.06 |