Algorithm/baekjoon

부등호

마닐라 2022. 2. 6. 12:51

📍 문제 설명

 

💡 접근

두번째 숫자부터 부등호 관계를 판단하여 재귀를 뻗어나가면 되는 문제

최댓값, 최솟값을 출력할 때 첫자리가 0인 경우도 출력해야하므로 리스트에 담아 정렬처리

 

 

👩‍💻 코드

import java.util.*;

public class Main {
    static int n, m, sum, answer;
    static int[][] board,clone;
    static String[] s;
    static int[] arr;
    static boolean[] visited;
    static int[] dx = {-1,1,0,0};
    static int[] dy = {0,0,-1,1};
    static StringBuilder sb = new StringBuilder();
    static ArrayList<String> list = new ArrayList<>();
    public static void main(String[] args) {
        Scanner kb = new Scanner(System.in);
        Main T = new Main();
        n = kb.nextInt();
        kb.nextLine();
        s = kb.nextLine().split(" ");
        //숫자 사용여부
        visited = new boolean[10];

        //더해나갈 숫자,
        T.solution("", 0);
        
        Collections.sort(list);
        System.out.println(list.get(list.size()-1));
        System.out.println(list.get(0));
    }

    private void solution(String num, int L) {
        //모든 숫자를 알맞게 넣었으면 리스트에 더하기
        if(L == n+1) list.add(num);
        else {
            for(int i = 0; i <= 9; i++) {
                if(!visited[i] && (L == 0 || check(num.charAt(L-1), i, s[L-1]))) {
                    visited[i] = true;
                    solution(num+i, L+1);
                    visited[i] = false;
                }
            }
        }
    }

    //이전숫자, 현재숫자, 부등호
    private boolean check(char prevNumber, int nowNumber, String s) {
        if(s.charAt(0) == '<') {
            if(prevNumber - '0' > nowNumber) return false;
        }
        else {
            if(prevNumber - '0' < nowNumber) return false;
        }
        return true;
    }
}

'Algorithm > baekjoon' 카테고리의 다른 글

차이를 최대로  (0) 2022.02.06
맞춰봐  (0) 2022.02.06
링크와 스타트  (0) 2022.02.06
퇴사  (0) 2022.02.05
NM과 K (1)  (0) 2022.02.05