카테고리 없음

[백준] 2529 - 부등호 [JAVA]

odong2 2024. 5. 8. 16:59

 

코드

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.StringTokenizer;

public class Main {
    static int K;
    static int[] numbers = new int[10]; // 0 ~ 9
    static char[] arr; // 부등호
    static boolean[] visited = new boolean[10];
    static List<String> answer = new ArrayList<>();

    static void dfs(String num, int idx) {

        if (idx == K) {
            answer.add(num);
            return;
        }

        for (int i = 0; i <= 9; i++) {
            if (visited[i]) continue;
            if (idx == 0 || check(num.charAt(idx - 1) - '0', i, arr[idx - 1])) {
                visited[i] = true;
                dfs(num + i, idx + 1);
                visited[i] = false;
            }
        }
    }

    static boolean check(int a, int b, char c) {
        if (c == '>') {
            if (a < b) return false;
        } else if (c == '<') {
            if (a > b) return false;
        }
        return true;
    }

    public static void main(String[] args) throws IOException {

        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        K = Integer.parseInt(br.readLine()) + 1;
        arr = new char[K - 1];

        StringTokenizer st = new StringTokenizer(br.readLine());

        // 부등호 초기화
        for (int i = 0; i < K - 1; i++) {
            arr[i] = st.nextToken().charAt(0);
        }

        // 숫자 배열 초기화 0 ~ 9
        for (int i = 0; i < 10; i++) {
            numbers[i] = i;
        }

        dfs("", 0);

        System.out.println(answer.get(answer.size() - 1));
        System.out.println(answer.get(0));

    }
}