📍 문제 설명
💡 접근
두번째 숫자부터 부등호 관계를 판단하여 재귀를 뻗어나가면 되는 문제
최댓값, 최솟값을 출력할 때 첫자리가 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;
}
}