자료구조, 알고리즘/문제풀이

[문제] 부등호 2529번

민쓰 2018. 9. 5. 23:20

문제



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



소스코드

import java.util.Scanner;

public class Inequel2 {
	private static int n;
	private static String[] op;
	private static int[] a = new int[10];
	private static boolean[] check = new boolean[10];
	
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		n = sc.nextInt();
		op = sc.nextLine().split(" ");
		
		descCompare(0, 9);
		print();
		check = new boolean[10];
		ascCompare(0, 0);
		print();
	}
	private static void descCompare(int idx, int x) {
		if(idx >= n+1) return;
		for(int i=9; i>=9-n; i--){
			if(check[i] == false){
				if(idx != 0){
					if(op[idx-1].equals("<") && a[idx-1]>i){
						check[x] = false;
						return;
					}
				}
				a[idx] = i;
				check[i] = true;
				descCompare(idx+1, i);
			}
		}	
	}
	private static void ascCompare(int idx, int x) {
		if(idx >= n+1) return;
		for(int i=0; i<=n; i++){
			if(check[i] == false){
				if(idx != 0){
					if(op[idx-1].equals(">") && a[idx-1]<i){
						check[x] = false;
						return;
					}
				}
				a[idx] = i;
				check[i] = true;
				ascCompare(idx+1, i);
			}
		}	
	}
	private static void print() {
		for(int i=0; i<=n; i++){
			System.out.print(a[i]);
		}	
		System.out.println();
	}
}

풀이


-