[백준] 15652번 N과 M (4) - Java

yseo14·2025년 1월 20일

코딩테스트 대비

목록 보기
44/88


문제링크

풀이

이전 N과 M 문제 시리즈를 풀었다면 간단하게 해결할 수 있는 문제이다.
비내림차순이라는 것은, 오름차순이면서 같은 숫자 사용을 허용한다는 뜻이다. 즉 중복허용이 된다는 것.

백트래킹 메서드(사실상 백트래킹은 아니고 완전탐색)에서 재귀 호출시 현재 사용할 수인 반복문의 i를 첫번째 인자로 넘겨주면 된다.

코드

package BOJ;

import java.io.*;
import java.util.*;

public class sol15652 {

    static int n, m;
    static int[] arr;

    public static void main(String[] args) throws Exception {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringTokenizer st = new StringTokenizer(br.readLine());

        n = Integer.parseInt(st.nextToken());
        m = Integer.parseInt(st.nextToken());

        arr = new int[m];

        backTracking(1, 0);
    }

    static void backTracking(int start, int count) {
        if (count == m) {
            for (int i = 0; i < m; i++) {
                System.out.print(arr[i] + " ");
            }
            System.out.println();
            return;
        }
        for (int i = start; i <= n; i++) {
            arr[count] = i;
            backTracking(i, count + 1);
        }
    }
}
profile
like the water flowing

1개의 댓글

comment-user-thumbnail
2025년 1월 20일

쌈뽕하네요

답글 달기