[백준/Java] 15650 - N과 M (2)

2025. 9. 9. 14:21·코딩테스트/백준

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

문제


풀이

N과 M (1)과 비슷하지만 조합을 사용해야 하는 문제이다

중복이 없게 해야하기 때문에 따로 변수를 두어 항상 현재 인덱스의 다음 인덱스부터 탐색하도록 한다

코드

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.math.BigInteger;
import java.util.ArrayList;
import java.util.Collections;
import java.util.StringTokenizer;

public class Main {

    static int N, M;
    static int[] arr;   // 출력할 배열
    static int[] input;
    static StringBuilder sb = new StringBuilder();

    public static void main(String[] args) throws IOException {

        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringTokenizer st;

        st = new StringTokenizer(br.readLine());
        N = Integer.parseInt(st.nextToken());
        M = Integer.parseInt(st.nextToken());
        arr = new int[N];
        input = new int[N];

        // 1~N까지의 수를 저장해둔다
        for (int i = 0; i < N; i++) {
            input[i] = i + 1;
        }
        // 0 위치부터 시작
        combi(0, 0);

        System.out.println(sb);

        br.close();
    }

    static void combi(int idx, int start) {
        // idx가 M과 같아지면
        if (idx == M) {
            // 배열을 출력한다
            for (int i = 0; i < M; i++) {
                sb.append(arr[i]).append(" ");
            }
            sb.append("\n");
        }

        // 중복이 없게 해야하기 때문에 start 변수를 두어 
        // 항상 현재 인덱스의 다음 인덱스부터 탐색하도록 한다
        for (int i = start; i < N; i++) {
            arr[idx] = input[i];
            combi(idx + 1, i + 1);
        }
    }
}

결과

'코딩테스트/백준' 카테고리의 다른 글
  • [백준/Java] 1389 - 케빈 베이컨의 6단계 법칙
  • [백준/Java] 15686 - 치킨 배달
  • [백준/Java] 30804 - 과일 탕후루
  • [백준/Java] 10974 - 모든 수열
KDH.dev
KDH.dev
  • KDH.dev
    CodingHard
    KDH.dev
  • 전체
    오늘
    어제
    • 전체글 (82)
      • 코딩테스트 (74)
        • 프로그래머스 (13)
        • 백준 (61)
      • CS (4)
        • 네트워크 (4)
      • Spring (1)
      • Java (3)
        • 자료구조 (3)
        • 알고리즘 (0)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    코딩테스트
    21736
    13913
    자바
    [LG유플러스] 유레카 백엔드 개발자
    멀티캠퍼스it부트캠프
    네트워크
    11660
    18111
    CS
    14940
    30804
    17626
    부트캠프후기
    자료구조
    백준
    16935
    프로그래머스
    5525
    프로그래머스 Lv.0
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.5
KDH.dev
[백준/Java] 15650 - N과 M (2)
상단으로

티스토리툴바