본문 바로가기

Algorithm/CodeUp

[CodeUp_Java] Q1857 : 서로 다른 n개 중에서 r개 순서없이 고르기

반응형

안녕하세요! Plitche(플리체)입니다.
이번 포스팅의 주제는 Q1857 : [기초-재귀함수] 서로 다른 n개 중에서 r개 순서없이 고르기 (자바, JAVA)입니다.

Intro

Question

문제 설명

입력

int 형 정수 n 과 r 이 공백을 두고 입력된다.
(1 <= n,r <= 25)

출력

서로 다른 n개 중에서 순서 없이 r 개를 고를 수 있는 방법의 가짓수를 출력한다.

예시

  • 입력 : 3 2
  • 출력 : 3

Solution (풀이)

  • 풀이 : 메모리 11196, 시간 : 68
public class Answer1 {

    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringTokenizer st = new StringTokenizer(br.readLine(), " ");
        int total = Integer.parseInt(st.nextToken());
        int many = Integer.parseInt(st.nextToken());

        System.out.println(loop(total, many)); // 총 개수와 고를 개수를 입력받아 재귀함수에 넘긴다.
    }

    public static int loop(int total, int many) {

        if (total<many) { // 총 개수보다 고를 개수가 더 적은경우는 0가지이다.
            return 0;
        } else if (total==many) { // 같은 경우는 1가지
            return 1;
        } else if (many==1) { // 고를 개수가 1개면 총 개수만큼
            return total;
        } else {
            return loop(total-1, many-1) + loop(total-1, many); 
        }

    }

}

Ranking(순위)

반응형