반응형
츄르사려고 코딩하는 코집사입니다.
1. [백준 알고리즘] 백준 15649번 N과 M(1) 자바(Java)
1) 문제번호 : 15649번
2) 문제 출처
2. 문제
자연수 N과 M이 주어졌을 때, 아래 조건을 만족하는 길이가 M인 수열을 모두 구하는 프로그램을 작성하시오.
- 1부터 N까지 자연수 중에서 중복 없이 M개를 고른 수열
3. 제약사항
-
4. 입력
첫째 줄에 자연수 N과 M이 주어진다. (1 ≤ M ≤ N ≤ 8)
5. 출력
한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다.
수열은 사전 순으로 증가하는 순서로 출력해야 한다.
6. 풀이
- 기본 순열 문제.
- 개수를 나타내고 저장되는 M크기의 arr와 N+1크기의 방문을 기록하는 check 배열 선언
- check에서 false라면 true로 바꾸고, arr 배열에 i 값 넣어서 재귀를 반복하면 된다.
7. 소스 코드
import java.util.*;
public class Main {
static int[] arr;
static boolean[] check;
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int N = sc.nextInt();
int M = sc.nextInt();
arr = new int[M];
check = new boolean[N+1];
perm(N,M,0);
}
public static void perm(int N, int M, int cnt) {
if(cnt == M) {
for(int c : arr) System.out.print(c + " ");
System.out.println();
return;
}
for(int i=1;i<=N;i++) {
if(!check[i]) {
check[i] = true;
arr[cnt] = i;
perm(N,M,cnt+1);
check[i] = false;
}
}
}
}
반응형
'알고리즘 > 백준 알고리즘' 카테고리의 다른 글
[백준 알고리즘] 백준 2468번 안전 영역 자바(Java) (2) | 2021.02.17 |
---|---|
[백준 알고리즘] 백준 2667번 단지번호붙이기 자바(Java) (0) | 2021.02.17 |
[백준 알고리즘] 백준 4963번 섬의 개수 자바(Java) (0) | 2021.02.17 |
[백준 알고리즘] 백준 1931번 회의실 배정 자바(Java) (0) | 2021.02.16 |
[백준 알고리즘] 백준 1157번 단어 공부 자바(Java) (2) | 2021.02.15 |
[백준 알고리즘] 백준 2675번 문자열 반복 자바(Java) (0) | 2021.02.15 |
[백준 알고리즘] 백준 5339번 콜센터 자바(Java) (0) | 2021.02.15 |
[백준 알고리즘] 백준 5338번 마이크로소프트 로고 자바(Java) (0) | 2021.02.15 |
최근댓글