[BOJ] 15654: N과 M(5) (JAVA)

2024. 6. 15. 13:20·코테/Algorithm
728x90

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

 

풀이

 

길이가 M인 수열을 출력해주면 되는데, 같은 숫자가 2번이상 들어가면 안된다.

수열은 사전순으로 증가하는 순서로 출력해야한다.

Arrays.sort로 정렬해준 다음 dfs를 사용해서 풀어줬는데, 

그냥 처음 배열에서 순열을 뽑은 다음 PriorityQueue 사용해서 정렬해줘도 될 것 같다 !

전체코드
package 백준renew;

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

public class 실버3_N과M_5 {
	static int N, M;
	static int tmp[];
	static int arr[];
	static boolean visited[];
	static StringBuilder sb = new StringBuilder();
	public static void main(String[] args) throws Exception{
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
		
		StringTokenizer st = new StringTokenizer(br.readLine());
		N = Integer.parseInt(st.nextToken());
		M = Integer.parseInt(st.nextToken());
		
		visited = new boolean[N];
		arr = new int[N];
		st = new StringTokenizer(br.readLine());
		for(int i=0; i<N; i++) {
			arr[i] = Integer.parseInt(st.nextToken());
		}
		
		tmp = new int[M];
		
		Arrays.sort(arr);
		
		Col(0);
		
		bw.write(sb.toString());
		bw.close();
	}
	public static void Col( int cnt) {
		if(cnt == M) {
			for(int i=0; i<tmp.length; i++) {
				sb.append(tmp[i]).append(" ");
			}
			sb.append('\n');
			return;
		}
		for(int i=0; i<N; i++) {
			if(!visited[i]) {
				tmp[cnt] = arr[i];
				visited[i] = true;
				Col(cnt+1);
				visited[i] = false;
			}
		}
	}
}
728x90

'코테 > Algorithm' 카테고리의 다른 글

[Programmers] 더 맵게 (JAVA)  (0) 2024.06.18
[BOJ] 15655: N과 M(6) (JAVA)  (0) 2024.06.17
[Programmers] 두 큐 합 같게 만들기 (Java)  (0) 2024.06.14
[BOJ] 15651: N과 M (3) (JAVA)  (0) 2024.06.09
[Programmers] 점프와 순간 이동 (JAVA)  (0) 2024.06.07
'코테/Algorithm' 카테고리의 다른 글
  • [Programmers] 더 맵게 (JAVA)
  • [BOJ] 15655: N과 M(6) (JAVA)
  • [Programmers] 두 큐 합 같게 만들기 (Java)
  • [BOJ] 15651: N과 M (3) (JAVA)
DROPDEW
DROPDEW
💻 Developer | 기록하지 않으면 존재하지 않는다
  • DROPDEW
    제 2장 1막
    DROPDEW
  • 전체
    오늘
    어제
    • categories (408) N
      • App/Android (1)
      • BE (41) N
        • HTTP 웹 기본 지식 (8)
        • 스프링 입문 - 코드로 배우는 스프링 부트, 웹 .. (12)
        • 스프링부트와 JPA 활용 (8) N
        • 스프링부트 시큐리티 & JWT (0)
        • PHP (6)
      • FE·Client (23)
        • HTML (1)
        • React (19)
        • Unity (1)
      • Data (12)
        • AI (4)
        • Bigdata (6)
        • Database (1)
        • 빅데이터분석기사 (0)
      • Infra (0)
      • CS (7)
        • CS 면접 준비 (3)
      • 취준 (13)
        • 자격증·인턴·교육 (4)
        • 인적성·NCS (6)
        • 코테·필기·면접 후기 (3)
      • 코테 (270) N
        • Algorithm (222) N
        • SQL (35)
        • 정리 (13)
      • 인사이트 (27)
        • 금융경제뉴스 (7)
        • 금융용어·지식 (2)
        • 북마크 (7)
  • 블로그 메뉴

    • 홈
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    매개변수탐색
    최단경로
    그리디알고리즘
    티스토리챌린지
    너비우선탐색
    누적합
    그래프탐색
    자료구조
    수학
    다이나믹프로그래밍
    백준
    구현
    오블완
    브루트포스 알고리즘
    투포인터
    시뮬레이션
    문자열
    정렬
    그래프이론
    이분탐색
  • 최근 댓글

  • 최근 글

  • 250x250
  • hELLO· Designed By정상우.v4.10.3
DROPDEW
[BOJ] 15654: N과 M(5) (JAVA)
상단으로

티스토리툴바