본문 바로가기
알고리즘/백트래킹

백준 15666번 : N과 M (12) java

by LDY3838 2022. 6. 12.
반응형

이 문제는 입력된 값들을 저장하여 중복되는 수열이 출력되지 않게 비내림차순으로 출력하는 문제입니다.

이 문제를 풀 때 입력값이 중복된 값이 올 수 있다는 것을 유의해야 합니다.

따라서 저는 HashSet을 이용하여 중복된 값들을 저장하지 않고 중복되지 않은 값들로만 배열을 만들었습니다.

그 배열로 조건과 같이 출력하게 하여 문제를 해결하였습니다.

코드를 바로 보여드리도록하겠습니다.


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

public class Main {
    static int M;
    static Integer[] intArr;
    static int[] answer;

    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());
        M = Integer.parseInt(st.nextToken());

        Set<Integer> s = new HashSet<>();
        answer = new int[M];

        st = new StringTokenizer(br.readLine());
        for(int i = 0; i<N; i++)
            s.add(Integer.parseInt(st.nextToken()));

        intArr = s.toArray(new Integer[0]);
        Arrays.sort(intArr);

        backTracking(0, 0);
    }

    static void backTracking(int idx, int count){
        if(count == M){
            for(int i = 0; i<M; i++)
                System.out.print(answer[i]+" ");
            System.out.println();

            return;
        }

        for(int i = idx; i<intArr.length; i++){
            answer[count] = intArr[i];
            backTracking(i, count+1);
        }
    }
}
반응형

'알고리즘 > 백트래킹' 카테고리의 다른 글

백준 2580번 : 스도쿠 java  (0) 2022.06.23
백준 15655번 : N과 M (6) java  (0) 2022.06.22
백준 1759번 : 암호 만들기 java  (0) 2022.06.11
백준 15657번 : N과 M (8) java  (0) 2022.06.10
백준 15663번 : N과 M (9) java  (0) 2022.06.03

댓글