티스토리 뷰

알고리즘/백준

[백준] 2529번 부등호

머어하지 2018. 8. 19. 17:06

1) 생각

주어진 부등호 조건을 만족하는 제일 작은 수와 제일 큰 수를 구해야한다. 특징으로 0도 포함된다. 모든 수를 한 번씩만 쓸 수 있으므로 방문 조건을 추가해서 각 수마다 0~9까지 비교해서 판단하였다. 0부터 쭉 비교해서 나아가면 자연스럽게 List에 추가되어있는 수중 Index 0에 저장된 수가 작은 수 마지막에 저장된 수가 가장 큰 수가 된다. 조건 문을 통해 < 와 > 를 판단하고 if문을 통해 이전 숫자와 현 숫자를 비교하였는데 자꾸 오류가나서 살펴보니 한 줄이라 조건문에 { } 를 사용하지 않고 작성하였더니 이클립스가 맨 위의 if문과 짝지어져어할 else if문을 문단에 상관없이 계속 바로 위의 if문과 짝지어줘서 그런것이였다.


2) 방안

조건문에 { }를 추가하여 구분하여줬다. 0~9 까지 들어가는 문제이므로 N-Queen 문제랑 비슷하게 이번 숫자가 조건에 만족안되면 사용하지 않는 식으로 문제를 해결하였다.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
 
public class Main{
    static int k;
    static String[] arr;
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        k = sc.nextInt();
        sc.nextLine();
        // < or >
        arr = sc.nextLine().split(" ");
        visited = new boolean[10];
        result = new ArrayList<>();
        for(int i=0;i<10;i++) {
            visited[i] = true;
            solve(0,i,String.valueOf(i));
        }
        System.out.println(result.get(result.size()-1));
        System.out.println(result.get(0));
    }
    
    static boolean[] visited;
    static List<String> result;
    private static void solve(int cnt,int left, String t) {
        if(cnt==k) {
            result.add(t);
            visited[left] = false;
            return;
        }
        for(int i=0;i<10;i++) {
            // 방문 판단
            if(visited[i]) continue;
            if(left==i) continue;
            // 이전 수랑 부호 판단
            if(arr[cnt].equals(">")) {if(left<i) continue;}
            else if(left>i) continue;
            visited[i] = true;
            solve(cnt+1,i,t+i);
        }
        visited[left] = false;
    }
}
cs


'알고리즘 > 백준' 카테고리의 다른 글

[백준] 2193번 이친수  (0) 2018.08.20
[백준] 1339번 단어 수학  (0) 2018.08.19
[백준] 1748번 수 이어 쓰기 1  (0) 2018.08.18
[백준] 6064번 카잉달력  (0) 2018.08.18
[백준] 14500번 테트로미노  (0) 2018.08.17
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday