코딩테스트연습/백준

[백준 - JAVA] 2775번 부녀회장이 될테야

:)jun 2021. 12. 18. 21:46

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

 

2775번: 부녀회장이 될테야

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

www.acmicpc.net

// 기본값 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 일때 조건까지 추가해주면 된다.