[백준/Silver III] N과 M (4) - 15652

2024. 12. 17. 10:51·코딩 테스트 정복기/백준
반응형

[Silver III] N과 M (4) - 15652

문제 링크

성능 요약

메모리: 15976 KB, 시간: 84 ms

분류

백트래킹

제출 일자

2024년 12월 6일 04:35:21

문제 설명

자연수 N과 M이 주어졌을 때, 아래 조건을 만족하는 길이가 M인 수열을 모두 구하는 프로그램을 작성하시오.

  • 1부터 N까지 자연수 중에서 M개를 고른 수열
  • 같은 수를 여러 번 골라도 된다.
  • 고른 수열은 비내림차순이어야 한다.
    • 길이가 K인 수열 A가 A1 ≤ A2 ≤ ... ≤ AK-1 ≤ AK를 만족하면, 비내림차순이라고 한다.

입력

첫째 줄에 자연수 N과 M이 주어진다. (1 ≤ M ≤ N ≤ 8)

출력

한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다.

수열은 사전 순으로 증가하는 순서로 출력해야 한다.

 

 

 

 

 


풀이 및 코드

수열은 사전 순으로 증가하는 순서로 출력해야 하므로 오름차순으로 dfs 탐색.

숫자 k를 뽑으면 중복을 허용하므로 k, k+1, ... n 중 하나 뽑는 것을 가정하며 dfs 탐색한다.

m개의 숫자를 뽑으면 백트래킹한다.

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

public class Main {
    private static int n, m;
    private static StringBuilder answer = new StringBuilder();

    private static void dfs(int i, String select, int count){
        if(count == m){ // m개의 숫자를 뽑았으면 return
            answer.append(select);
            answer.append("\n");
            return;
        }
        
        // 같은 수를 여러번 골라도 되므로 다음 탐색 숫자에 i를 포함한다.
        for(int j = i; j <= n; j++){
            dfs(j, select+j+" ", count+1);
        }
    }


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

        dfs(1, "", 0);

        System.out.println(answer);
    }
}
728x90
반응형

'코딩 테스트 정복기 > 백준' 카테고리의 다른 글

[백준/Silver II] A → B - 16953  (0) 2024.12.19
[백준/Silver II] N과 M (12) - 15666  (1) 2024.12.18
[백준/Gold V] 내려가기 - 2096  (0) 2024.12.16
[백준/Gold III] 벽 부수고 이동하기 - 2206  (3) 2024.12.14
[백준/Gold IV] 플로이드 - 11404  (0) 2024.12.13
'코딩 테스트 정복기/백준' 카테고리의 다른 글
  • [백준/Silver II] A → B - 16953
  • [백준/Silver II] N과 M (12) - 15666
  • [백준/Gold V] 내려가기 - 2096
  • [백준/Gold III] 벽 부수고 이동하기 - 2206
settong
settong
    250x250
  • settong
    개 발 자 국
    settong
  • 전체
    오늘
    어제
    • 전체보기 (202)
      • Computer Science (50)
        • Network (7)
        • Operating System (18)
        • Data Structure (9)
        • Database (11)
        • Algorithm (5)
      • Language (17)
        • Java (17)
        • Javascript (0)
        • Python (0)
      • Devops (20)
        • AWS (0)
        • Naver Cloud (16)
        • CICD (3)
        • 웹 서버 관리 (1)
      • Front (0)
        • React (0)
      • Backend (5)
        • Spring (5)
      • 코딩 테스트 정복기 (110)
        • 백준 (51)
        • 프로그래머스 (53)
        • 기타 (6)
      • etc (0)
      • 경제 상식 (0)
  • 블로그 메뉴

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

  • 공지사항

  • 인기 글

  • 태그

    다익스트라
    DFS
    해시
    프로그래머스
    github actions
    완전탐색
    백트래킹
    분할정복
    Network
    벨만포드
    ncp202
    BFS
    CI/CD
    다이나믹프로그래밍
    ncp200
    집합
    ncp
    lcs
    Spring Boot
    백준
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.2
settong
[백준/Silver III] N과 M (4) - 15652
상단으로

티스토리툴바