[백준/15665] N과 M (11) - JAVA

이지환·2023년 12월 19일

알고리즘(백준) 💻

목록 보기
11/80
post-thumbnail

📌 문제

알고리즘 분류 : 백트레킹
난이도 : 실버2
출처 : 백준 - N과 M (11)

🦧 문제 풀이 접근

Set을 이용한 중복 제거를 후 ArrayList에 담아서 정렬한다.
정렬된 데이터를 제귀를 통해 오름차순으로 StringBuilder에 담아서 한번에 출력한다.

💻 code

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.*;

public class Main {
    static int[] arr;
    static StringBuilder sb;
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        sb = new StringBuilder();
        StringTokenizer st = new StringTokenizer(br.readLine()," ");
        int N = Integer.parseInt(st.nextToken());
        int M = Integer.parseInt(st.nextToken());
        arr = new int[M];
        Set<Integer> set = new HashSet<>();
        st = new StringTokenizer(br.readLine()," ");
        for(int i=0;i<N;i++) {
            set.add(Integer.parseInt(st.nextToken()));
        }
        ArrayList<Integer> arrayList = new ArrayList<>(set);
        Collections.sort(arrayList);
        req(0, M, arrayList);
        System.out.print(sb);
    }

    private static void req(int depth, int m, ArrayList<Integer> arrayList) {
        if(depth==m) {
            for(int i=0;i<m;i++) {
                sb.append(arr[i]).append(" ");
            }
            sb.append("\n");
            return;
        }
        for(int i=0;i<arrayList.size();i++) {
            arr[depth] = arrayList.get(i);
            req(depth+1,m,arrayList);
        }
    }
}

🥇 결과

🎓 느낀점

Set, Arraylist등 적절히 자료구조를 사용해야겠다.

profile
takeitEasy

0개의 댓글