개발후라이
개발후라이
개발후라이
  • 분류 전체보기 (286) N
    • Web Front End (75) N
      • Javascript & Typescript (26)
      • React (12) N
      • Vue (4)
      • Nodejs (1)
      • HTML (6)
      • CSS (7)
      • 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] 15651번 - N과 M (3)

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

문제

백준 15651번 문제: N과 M (3)

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)

문제 설명

1부터 n까지 중복 관계 없이 m개를 고르는 문제
15649번 문제에서 중복을 체크할 필요가 없어졌다.
그래서 앞의 문제들과는 다르게 방문 여부를 체크하는 visited 배열을 쓰지 않아도 됐다.
그리고 Scanner를 사용하면 시간 초과로 실패가 나와서 BufferedReader, BufferedWriter를 사용했다.

성공 코드

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

public class Main {
    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;
                dfs(n, m, d+1);
            }
        }
    }
}
반응형
저작자표시 (새창열림)
    'Problem Solved/BOJ' 카테고리의 다른 글
    • [BOJ][Java] 9663번 - N-Queen
    • [BOJ][Java] 15652번 - N과 M (4)
    • [BOJ][Java] 15650번 - N과 M (2)
    • [BOJ][Java] 2441번 - 별 찍기 - 4
    개발후라이
    개발후라이
    어제보다 오늘 발전하기 위한 공간 https://github.com/choisohyun

    티스토리툴바