Park DJ
dj0998
Park DJ
전체 방문자
오늘
어제
  • 분류 전체보기 (363)
    • 백준 (363)

공지사항

인기 글

태그

  • 백준 7662
  • 백준 8892
  • 백준 15312
  • 백준 10709
  • 백준 6550
  • 백준 7567
  • 백준 12871
  • 백준 3135
  • 백준 2591
  • 백준 1011
  • 백준 16194
  • 자바
  • 백준 4659
  • 백준 2467
  • 백준 2343
  • 백준 14582
  • 백준 2225
  • 백준 12605
  • 백준 15655
  • 백준 15961
  • Java
  • 백준 1495
  • 백준 1747
  • 백준
  • 백준 1914
  • 백준 3049
  • 백준 1064
  • 백준 16926
  • 백준 24039
  • 백준 1531
hELLO · Designed By 정상우.
Park DJ

dj0998

백준 15649 N과 M(Java)
백준

백준 15649 N과 M(Java)

2023. 1. 31. 10:45

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

 

15649번: N과 M (1)

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

www.acmicpc.net


 

해석 및 팁

 


 

먼저 ArrayList를 생성한 후에 만약 list에의 크기가 m이 되면 list안의 값을 StringBuilder에 저장한 후에 출력해 주고 list에서 지워주면 됩니다. m보다 작을 경우에는 반복문을 통해 list안의 값의 존재여부를 판단 후에 중복이 아니라면 list에 값을 저장합니다.

 


 

Java 코드

 


import java.util.Scanner;
import java.util.ArrayList;

public class Main {

  static int n;
  static int m;
  static ArrayList<Integer> list;
  static StringBuilder sb;
  
  public static void main(String[] args) {
    Scanner sc = new Scanner(System.in);
    sb = new StringBuilder();
    list = new ArrayList<>();

    n = sc.nextInt();
    m = sc.nextInt();

    dfs();

    System.out.println(sb);
  }

  public static void dfs() {
    
    if(list.size() == m) {
      for(int i = 0; i < m; i++) sb.append(list.get(i)+" ");
      sb.append("\n");
      return;
    }

    for(int i = 1; i <= n; i++) {
      if(!list.contains(i)) {
        list.add(i);
        dfs();
        list.remove(Integer.valueOf(i));
      }
    }
    
  }

}

'백준' 카테고리의 다른 글

백준 1874 스택 수열(Java)  (0) 2023.01.31
백준 1002 터렛(Java)  (0) 2023.01.31
백준 2579 계단 오르기(Java)  (0) 2023.01.31
백준 11726 2xn 타일링(Java)  (0) 2023.01.30
백준 2606 바이러스(Java)  (0) 2023.01.30
    '백준' 카테고리의 다른 글
    • 백준 1874 스택 수열(Java)
    • 백준 1002 터렛(Java)
    • 백준 2579 계단 오르기(Java)
    • 백준 11726 2xn 타일링(Java)
    Park DJ
    Park DJ

    티스토리툴바