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 |
Tags
- 백준 10866 자바
- 28278 스택 2
- 파이썬
- dfs
- BFS
- 10807 자바
- 백준
- 그리디
- 백준 2346 자바
- IAM Identity Center
- 자바 2164
- 자바 10866
- 2748 자바
- 1010 자바
- 자바
- 자바 28278
- 2346 풍선 터뜨리기
- 자바 2346
- 코딩테스트
- IAM 사용자
- 자바 1003
- 티움투어
- 데보션영 3기
- 10810 자바
- 백준 28278 자바
- 백준 1764 자바
- 2164 자바
- 1764 자바
- 10813 자바
- 2798 자바
Archives
- Today
- Total
자두의 데브로그
[자바] 백준 18511번 큰 수 구성하기 본문
https://www.acmicpc.net/problem/18511
DFS로 완전탐색 하는 문제를 너무 못하길래 무려 실버 5인 문제를 풀어봤는데 역시나.. 엣지 케이스에 싹 다 걸려서 계속 틀렸다. 사실 더 이상 무슨 반례가 있는지 모르겠어서 결국 구글링행.... 내일 다시 풀어보자 ^^
dfs 함수를 만들어서 내부에서 먼저 인수로 들어온 값이랑 n의 값을 비교해서 만약 인수 값이 더 크다면 그대로 return하고, 아니라면 answer의 값과 인수 값을 비교해서 answer의 값이 더 작다면 인수 값을 answer에 저장한다. 그리고 반복문을 돌리며, k 즉, 저장된 값의 개수만큼 돌리되, 큰 수부터 계산할 수 있도록 뒤에서부터 arr의 값을 가지고 와서 인수와 10을 곱한 값을 arr의 값과 더하고 이를 dfs에 넣으면 재귀적으로 동작하다가 결국, k보다 작거나 같은 수로 나올 수 있는 값 중 가장 큰 수가 나오게 된다.
import java.util.*;
import java.io.*;
public class Main {
public static int n, k, answer;
public static ArrayList<Integer> arr = new ArrayList<>();
public static void main(String[] args) throws IOException{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine());
n = Integer.parseInt(st.nextToken());
k = Integer.parseInt(st.nextToken());
st = new StringTokenizer(br.readLine());
for(int i = 0; i < k; i++){
arr.add(Integer.parseInt(st.nextToken()));
}
Collections.sort(arr);
dfs(0);
System.out.println(answer);
}
public static void dfs(int total){
if(total > n) return;
if(answer < total) answer = total;
for(int i = k-1; i >= 0; i--){
dfs(arr.get(i) + 10 * total);
}
}
}
'코딩테스트 > Java' 카테고리의 다른 글
[자바] 프로그래머스 타겟 넘버 (0) | 2024.10.17 |
---|---|
[자바] 백준 5568번 카드 놓기 (0) | 2024.10.17 |
[자바] 백준 7562번 나이트의 이동 (0) | 2024.10.15 |
[자바] char to int 변환하는 방법 (0) | 2024.10.12 |
[자바] 백준 11286번 절댓값 힙 (2) | 2024.10.09 |