스노우보드 참 좋아하는데 맨날 키보드 앞에만 있네

백준 14888 : 연산자 끼워넣기 본문

개발/Algorithm

백준 14888 : 연산자 끼워넣기

워너-비 2018. 3. 8. 17:01


소스코드


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
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
import java.util.Scanner;
 
public class Main {
    
    static int[] numbers = new int[12];
    static int n, plus_input, minus_input, multiple_input, division_input;
    static int max = Integer.MIN_VALUE;
    static int min = Integer.MAX_VALUE;
    
    public static void main(String[] args) {
        
        Scanner s = new Scanner(System.in);
        
        // Length of array in 'N'
        n = s.nextInt();
        
        // Value of array in 'A'
        for(int i = 0 ; i < n ; i++) {
            numbers[i] = s.nextInt();
        }
        
        // Number of each operators 
        plus_input = s.nextInt();
        minus_input = s.nextInt();
        multiple_input = s.nextInt();
        division_input = s.nextInt();
        
        // Call dfs() function
        dfs(10000, numbers[0]);
        
        // Print max, min values
        System.out.println(max);
        System.out.println(min);
        
        s.close();
    }
    
    static void dfs(int idx, int plus, int minus, int multiple, int division, int total) {
        
        // Max, min returns after all operations have been completed
        if(idx == n) {
            max = Math.max(max, total);
            min = Math.min(min, total);
            return;
        }
        
        // As many operators, run Recursion Function
        if(plus < plus_input) {
            dfs(idx+1, plus+1, minus, multiple, division, total+numbers[idx]);
        }
        if(minus < minus_input) {
            dfs(idx+1, plus, minus+1, multiple, division, total-numbers[idx]);
        }
        if(multiple < multiple_input) {
            dfs(idx+1, plus, minus, multiple+1, division, total*numbers[idx]);
        }
        if(division < division_input) {
            dfs(idx+1, plus, minus, multiple, division+1, total/numbers[idx]);
        }
    }
}



'개발 > Algorithm' 카테고리의 다른 글

백준 1110 : 더하기 사이클  (0) 2018.03.09
백준 5582 : 공통 부분 문자열 풀이  (0) 2018.03.08
백준 1260 : DFS와 BFS  (0) 2018.03.06
그래프의 탐색 알고리즘 : DFS, BFS  (0) 2018.03.06
백준 1019 : 책 페이지  (0) 2018.02.11
Comments