개발후라이
개발후라이
개발후라이
  • 분류 전체보기 (287)
    • Web Front End (76)
      • Javascript & Typescript (26)
      • React (12)
      • Vue (4)
      • Nodejs (1)
      • HTML (6)
      • CSS (8)
      • HTTP (6)
      • 책 - Review (8)
    • TIL (0)
    • Problem Solved (135)
      • 알고리즘 (4)
      • BOJ (67)
      • Programmers (8)
      • HackerRank (33)
      • LeetCode (23)
    • 회고 (4)
      • 오늘의 회고 (16)
      • 주간 회고 (15)
      • 월간 회고 (7)
      • WakaTime (9)
    • Git (3)
    • 기타 (15)
      • 취업 (5)
      • 자격증 (1)

블로그 메뉴

  • GitHub
  • LinkedIn
  • 홈

인기 글

태그

  • 개발자
  • 노개북
  • 자바스크립트
  • 오늘의회고
  • 릿코드
  • 노마드북클럽
  • TypeScript
  • 회고
  • JavaScript
  • 프론트엔드

최근 댓글

최근 글

전체 방문자
오늘
어제

티스토리

hELLO · Designed By 정상우.
개발후라이

개발후라이

Problem Solved/BOJ

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

2019. 12. 23. 15:33
반응형

문제

백준 15652번 문제: N과 M (4)

N과 M 시리즈 문제 해설 보러가기

  • [BOJ][Java] 15649번 - N과 M (1)
  • [BOJ][Java] 15650번 - N과 M (2)
  • [BOJ][Java] 15651번 - N과 M (3)
  • [BOJ][Java] 15652번 - N과 M (4)

문제 설명

15651번 문제에서 비내림차순 조건이 추가된 문제이다.
비내림차순이므로 <=를 사용하면 된다.
오름차순 문제인 15650번과 비슷하게 재귀함수에 조건을 주면 쉽게 풀 수 있다.
한 문제를 풀면 다른 문제들은 응용하며 풀 수 있어 문제 이해가 무엇보다 중요했던 문제 같다!

성공 코드

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.StringTokenizer;

public class BOJ15652 {

    static int[] arr;
    static BufferedWriter bw = new BufferedWriter(new OutputStreamWriter((System.out)));

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

        int n = Integer.parseInt(st.nextToken());    // 1부터 n까지
        int m = Integer.parseInt(st.nextToken());    // m개를 고르기

        arr = new int[m];
        dfs(n, m, 0);
        br.close();
        bw.close();
    }

    public static void dfs(int n, int m, int d) throws IOException {
        if (d == m) {
            for (int s : arr)
                bw.write(s + " ");
            bw.write("\n");
        } else {
            for (int i = 1; i <= n; i++) {
                arr[d] = i;

                if (d == 0 || arr[d-1] <= i)
                    dfs(n, m, d+1);
            }
        }
    }

}
반응형
저작자표시 (새창열림)
    'Problem Solved/BOJ' 카테고리의 다른 글
    • [BOJ][Java] 2747번 - 피보나치 수
    • [BOJ][Java] 9663번 - N-Queen
    • [BOJ][Java] 15651번 - N과 M (3)
    • [BOJ][Java] 15650번 - N과 M (2)
    개발후라이
    개발후라이
    어제보다 오늘 발전하기 위한 공간 https://github.com/choisohyun

    티스토리툴바