티스토리 뷰

문제


입력 및 출력


풀이

import java.io.*;
import java.util.*;

class Main {
    public static int N;
    public static int[] array;
    public static int[] operator;
    public static int MAX = Integer.MIN_VALUE;
    public static int MIN = Integer.MAX_VALUE;
    public static void main(String args[]) throws Exception {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

        // N
        N = Integer.parseInt(br.readLine());

        // 값을 담을 배열
        array = new int[N];
        String[] temp = br.readLine().split(" ");
        for (int i = 0; i < N; i++) {
            array[i] = Integer.parseInt(temp[i]);
        }

        // 연산자를 담을 배열
        operator = new int[4];
        String[] temp2 = br.readLine().split(" ");
        for (int i = 0; i < 4; i++) {
            operator[i] = Integer.parseInt(temp2[i]);
        }

        // DFS함수 호출
        DFS(array[0], 1);

        // 결과 값 출력
        System.out.println(MAX);
        System.out.println(MIN);
    }

    public static void DFS(int number, int index) {
        // 인덱스가 연산자의 개수와 일치할 경우 최댓값과 최솟값을 설정
        if (index == N) {
            MAX = Math.max(MAX, number);
            MIN = Math.min(MIN, number);
        }

        for (int i = 0; i < 4; i++) {
            // 연산자의 개수가 1이상일 경우
            if (operator[i] > 0) {
                operator[i]--;

                // 값 계산
                switch (i) {
                    case 0:
                        DFS(number + array[index], index + 1);
                        break;
                    case 1:
                        DFS(number - array[index], index + 1);
                        break;
                    case 2:
                        DFS(number * array[index], index + 1);
                        break;
                    case 3:
                        DFS(number / array[index], index + 1);
                        break;
                }

                // 다른 값을 계산하기 위해 다시 증가
                operator[i]++;
            }
        }
    }
}

결과 및 해결방안

[결과]
[해결방안]

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

[1743/Java] 음식물 피하기  (0) 2022.01.05
[1141/Java] 접두사  (0) 2021.12.31
[2504/Java] 괄호의 값  (0) 2021.12.30
[3085/Java] 사탕 게임  (0) 2021.12.30
[1789/Java] 수들의 합  (0) 2021.12.20
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2025/08   »
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
글 보관함