백준

백준 2529 부등호(Java)

Park DJ 2023. 2. 19. 14:33

https://www.acmicpc.net/problem/2529

 

2529번: 부등호

두 종류의 부등호 기호 ‘<’와 ‘>’가 k개 나열된 순서열 A가 있다. 우리는 이 부등호 기호 앞뒤에 서로 다른 한 자릿수 숫자를 넣어서 모든 부등호 관계를 만족시키려고 한다. 예를 들어, 제시

www.acmicpc.net


 

Java 코드

 


import java.util.Scanner;
import java.util.ArrayList;
import java.util.Collections;

public class Main {

  static int n;
  static char[] arr;
  static boolean[] visit = new boolean[10];
  static ArrayList<String> list = new ArrayList<>();

  public static void main(String[] args) {
    Scanner sc = new Scanner(System.in);

    n = sc.nextInt();
    arr = new char[n];
    
    for(int i = 0; i < arr.length; i++) arr[i] = sc.next().charAt(0);

    dfs(0, "");
    Collections.sort(list);

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

  public static void dfs(int index, String str) {
    if(index == n + 1) {
      list.add(str);
      return;
    }

    for(int i = 0; i < 10; i++) {
      if(visit[i] == false) {
        if(index == 0 || check(arr[index - 1], str.charAt(index - 1) - '0', i)) {
          visit[i] = true;
          dfs(index + 1, str + i);
          visit[i] = false;
        }
      }
    }
  }

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

}