250x250
Notice
Recent Posts
Recent Comments
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 | 29 |
30 | 31 |
Tags
- 막내의막무가내
- 부스트코스에이스
- 주택가 잠실새내
- 막내의막무가내 프로그래밍
- flutter network call
- 막무가내
- 막내의막무가내 일상
- 막내의막무가내 rxjava
- Fragment
- 막내의막무가내 안드로이드
- 프로그래머스 알고리즘
- 막내의 막무가내 알고리즘
- 막내의막무가내 플러터 flutter
- 부스트코스
- 막내의막무가내 코틀린 안드로이드
- 2022년 6월 일상
- 안드로이드 Sunflower 스터디
- 안드로이드 sunflower
- 막내의막무가내 안드로이드 코틀린
- 막내의막무가내 안드로이드 에러 해결
- 막내의막무가내 목표 및 회고
- 막내의막무가내 알고리즘
- 프래그먼트
- 막내의막무가내 플러터
- 막내의 막무가내
- 막내의막무가내 코틀린
- 주엽역 생활맥주
- 막내의막무가내 SQL
- 막내의막무가내 코볼 COBOL
- 안드로이드
Archives
- Today
- Total
막내의 막무가내 프로그래밍 & 일상
[알고리즘] 백준 15656 N과 M (7) -백트래킹- 자바 본문
728x90
https://www.acmicpc.net/problem/15656
15656번: N과 M (7)
N개의 자연수와 자연수 M이 주어졌을 때, 아래 조건을 만족하는 길이가 M인 수열을 모두 구하는 프로그램을 작성하시오. N개의 자연수는 모두 다른 수이다. N개의 자연수 중에서 M개를 고른 수열
www.acmicpc.net

오랜만에 알고리즘을 풀고 백트래킹의 기본이라 할 수 있는 N과 M 시리즈를 풀어봤습니다.
확실히 오랜만에 자바를 사용하고 알고리즘을 풀었더니 없던 실력도 많이 줄은 것 같네요.. ㅠ
주어진 숫자를 여러번 사용할 수 있지만 오름차순으로 중복되지 않은 순열을 출력해야 했습니다.
그러므로 isVisited[] 같은 중복을 체크하는 Boolean 형 타입은 필요하지 않고 StringBuilder와 순열을 저장할 배열만을 사용했습니다. 추가로 오름차순으로 출력해야하므로 정렬을 하는 전처리도 진행하였습니다.
풀이는 다음과 같습니다.
[Java]
import java.util.Arrays;
import java.util.Scanner;
public class Main {
private static int N;
private static int M;
private static int[] nums;
private static StringBuilder sb = new StringBuilder();
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
N = sc.nextInt();
M = sc.nextInt();
nums = new int[N];
for (int i = 0; i < N; i++) {
nums[i] = sc.nextInt();
}
Arrays.sort(nums);
dfs(0, new int[M]);
System.out.println(sb.toString());
}
private static void dfs(int depth, int[] answers) {
if (depth == M) {
for (int i = 0; i < M; i++) {
sb.append(answers[i]).append(" ");
}
sb.append("\n");
return;
}
for (int i = 0; i < N; i++) {
answers[depth] = nums[i];
dfs(depth + 1, answers);
}
}
}
https://github.com/mtjin/algorithm_practice/commit/8e764158039d010159aef2bb64e6ed1499e4d802
백준 15656 풀이 · mtjin/algorithm_practice@8e76415
github.com

댓글과 공감은 큰 힘이 됩니다. 감사합니다. !!
728x90
'알고리즘 > DFS, BFS, 시뮬, 백트래킹' 카테고리의 다른 글
[알고리즘] 백준 15658 연산자 끼워넣기 (2) -백트래킹- 자바, 코틀린 (1) | 2022.03.09 |
---|---|
[알고리즘] 백준 10974 모든 순열 -백트래킹- 자바, 코틀린 (2) | 2022.01.04 |
[알고리즘] 프로그래머스 가장 큰 정사각형 찾기 -BFS, DP- 자바 (0) | 2021.08.10 |
[알고리즘] 백준 1405 미친 로봇 -DFS, 완전탐색- 자바 코틀린 (0) | 2021.08.09 |
[알고리즘] 프로그래머스 거리두기 확인하기 (2021 카카오 채용연계형 인턴십) -BFS- 자바, 코틀린 (0) | 2021.07.25 |
Comments