Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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
- 완전탐색
- domain model
- lcap
- 트리
- 자바
- Bruteforce
- Recursion
- microflow
- 스택
- 프로그래머스
- 멘딕스
- Sort
- 자료구조
- algorithm
- git
- Mendix
- 백트래킹
- 그래프
- 재귀
- 가중치없는그래프
- 해시맵
- 이분탐색
- 알고리즘
- MySQL
- 반효경교수님
- 집합
- 정렬
- SQL
- 매개변수 탐색
- dfs
Archives
- Today
- Total
mondegreen
[240408] 알고리즘 리부트 45일차 - 백준 5568 자바 본문
반응형
동일한 숫자는 카운트하지 않기 때문에 set을 활용해야겠다고 판단했다. 숫자를 고르는 방법은 특정 인덱스를 기준으로 뒤의 숫자만 고르게 하려고 했었다. 그런데 이렇게 처리하게되면 뽑은 숫자마다 순서를 직접 달리 배치해봐야 하는 번거로움이 발생한다. 따라서 방문 배열을 생성하고 해당 숫자를 뽑았는지를 체크하며 고르고 모든 인덱스를 순회하도록 처리했다. 이렇게 처리하면 모든 숫자를 순회하는 대신 뽑은 숫자 간의 숫자를 바꿔서 배치할 필요가 없다. k개의 카드만 뽑아야 하므로 cnt 변수로 뽑은 숫자를 관리했다.
package BaekJoon.backtracking;
import java.util.Arrays;
import java.util.HashSet;
import java.util.Scanner;
public class BJ5568 {
private static int n,k;
private static int pool[];
private static boolean visited[];
private static HashSet<String> answer;
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
n = sc.nextInt();
k = sc.nextInt();
pool = new int [n];
visited = new boolean[n];
for(int i =0; i<n; i++){
pool[i] = sc.nextInt();
}
//System.out.println(Arrays.toString(pool));
answer = new HashSet<>();
makeNum("", 0);
System.out.println(answer.size());
}
private static void makeNum(String num, int cnt){
StringBuilder sb;
//System.out.println("cnt는: "+cnt);
if(cnt == k){
//System.out.println(num+" 답에 추가");
answer.add(num);
return;
}
if(cnt<k) { //앞뒤로만 붙여서는 안된다.. -> 본인 숫자 제외하고 조합하기
for (int i = 0; i < n; i++) {
if(visited[i]) continue;
sb = new StringBuilder();
String tmp1 = sb.append(num).append(pool[i]).toString();
visited[i] = true;
//System.out.println("tmp1: "+tmp1);
makeNum(tmp1, cnt + 1);
visited[i] = false;
}
}
}
}
반응형
'알고리즘 풀이 및 리뷰 > 백준' 카테고리의 다른 글
[240528] 알고리즘 리부트 61일차 - 백준 2630 자바 (0) | 2024.05.29 |
---|---|
[240502] 알고리즘 리부트 58일차 - 백준 N과 M 시리즈 자바 (1) | 2024.05.02 |
[240319] 알고리즘 리부트 33일차 - 백준 2792 자바 (1) | 2024.03.19 |
[240310] 알고리즘 리부트 28일차 - 백준 2143 자바 (0) | 2024.03.11 |
[240303] 알고리즘 리부트 23일차 - 백준 10836 자바 (0) | 2024.03.04 |