알고-122-미명 호숫가의 고민

또 귀속 제목이다. 매번 귀속 제목은 좀 용서가 되지만, 일단 규칙을 발견하면 쓰기가 매우 간단해진다.
문제는 매년 겨울이면 북대 미명호에서 스케이트를 타기 좋은 곳이라고 묘사한다.북대 체육팀은 많은 스케이트화를 준비했지만 사람이 너무 많아서 매일 오후에 일을 끝낸 후에 항상 스케이트화 한 켤레도 남지 않는다.매일 아침, 신발 대여 창구에 장사진을 이루는데, 신발을 돌려주는 m개가 있고, 신발을 빌려야 하는 n개가 있다고 가정하자.문제는 이들이 얼마나 많은 배법을 가지고 있느냐 하는 것이다. 스포츠팀이 스케이트화를 빌릴 수 없는 난감한 장면을 피할 수 있다는 것이다.(같은 수요를 가진 두 사람(예를 들어 모두 신발을 빌리거나 모두 신발을 돌려주는 것)의 교환 위치는 같은 배열이다) 입력 양식 두 정수는 m와 n의 출력 양식 한 정수를 나타내고 팀의 배열 방안을 나타낸다.샘플 입력 32 샘플 출력 5 데이터 규모와 약정 m, n∈[0,18] 문제 분석
네 가지 상황을 추상적으로 보면 m는 신발을 돌려주고 n은 신발을 빌려준다.m보다 작으면 틀림없이 임대가 부족하기 때문에 횟수는 02.m는 n보다 크다. 이때부터 줄을 서기 시작한다. 첫 번째는 m를 신발에 돌려주는 사람이다. 이때 두 번째는 임의로 m를 배열하거나 n을 배열한다. 만약에 두 번째 n이 있다면 세 번째는 m이다. 이렇게 계속 배열하면 코드가 된다.
import java.util.Scanner;

public class Main {
        static int m,n;
        public static void main(String[] args) {

            Scanner input = new Scanner(System.in);
            m = input.nextInt();
            n = input.nextInt();
            if (m<n){
                System.out.println(0);
            }else {
                System.out.println(fun(m,n));
            }
    }
    private static int fun(int x,int y){
        if (x ==0 ||y ==0){
            return 1;
        }// 
         else if (m-x == n-y){
            return fun(x-1,y);
        }// 
        else if (m-x>n-y){
            return fun(x-1,y)+fun(x,y-1);
        }else {
            return 0;
        }
    }
}

좋은 웹페이지 즐겨찾기