개인 공부/TIL
[ TIL - PGS ] 99클럽 코테 스터디 37일차 TIL + 오늘의 학습 가이드
킴도비
2024. 8. 27. 14:41
💡 오늘의 학습 키워드
- 완전 탐색
✅ 오늘 공부한 내용
- 오늘의 백준 문제! 2529번 부등호
👀 오늘의 회고
🔥 어떤 시도를 했는가?
- 오늘의 코드 풀이
import java.util.*;
public class Main {
static int k;
static String[] signs;
static boolean[] used = new boolean[10];
static ArrayList<String> results = new ArrayList<>();
// 부등호 관계를 만족하는지 확인하는 함수
static boolean check(char a, char b, char sign) {
if (sign == '<') return a < b;
if (sign == '>') return a > b;
return false;
}
// 백트래킹으로 가능한 모든 경우의 수 찾기
static void dfs(int depth, String num) {
if (depth == k + 1) {
results.add(num);
return;
}
for (int i = 0; i <= 9; i++) {
if (!used[i]) {
if (depth == 0 || check(num.charAt(depth - 1), (char)(i + '0'), signs[depth - 1].charAt(0))) {
used[i] = true;
dfs(depth + 1, num + i);
used[i] = false;
}
}
}
}
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
// 입력 받기
k = sc.nextInt();
signs = new String[k];
for (int i = 0; i < k; i++) {
signs[i] = sc.next();
}
// DFS를 이용한 백트래킹 수행
dfs(0, "");
// 가능한 정수 중 가장 큰 값과 작은 값 찾기
Collections.sort(results);
System.out.println(results.get(results.size() - 1)); // 최댓값
System.out.println(results.get(0)); // 최솟값
}
}
👩💻 내일은 무엇을 학습할 것인가?
- 항해 99 문제 풀기
- 원티드 팀플 진행하기
- 책 읽고 정리하기