땅지원
땅지원's Personal blog
땅지원
전체 방문자
오늘
어제
  • 전체 (353)
    • Frontend (2)
      • React (2)
    • Backend (90)
      • Java (16)
      • Python (19)
      • Spring (23)
      • Database (21)
      • Troubleshooting (8)
    • DevOps (27)
      • ELK (13)
    • CS (40)
    • OS (2)
      • Linux (2)
    • Algorithm (95)
      • concept (18)
      • Algorithm Problem (77)
    • 인공지능 (25)
      • 인공지능 (12)
      • 연구노트 (13)
    • 수업정리 (35)
      • 임베디드 시스템 (10)
      • 데이터통신 (17)
      • Linux (8)
    • 한국정보통신학회 (5)
      • 학술대회 (4)
      • 논문지 (1)
    • 수상기록 (8)
      • 수상기록 (6)
      • 특허 (2)
    • 삼성 청년 SW 아카데미 (6)
    • 42seoul (12)
    • Toy project (3)
    • 땅's 낙서장 (2)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

  • 20.11.6 BB21플러스 온라인 학술대회
  • 20.10.30 한국정보통신학회 온라인 학술대회

인기 글

태그

  • E
  • I
  • D
  • 이것이 리눅스다 with Rocky Linux9
  • ㅗ

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
땅지원

땅지원's Personal blog

Algorithm/Algorithm Problem

SWEA 4008 숫자만들기(DFS)

2022. 10. 12. 17:21
 

SW Expert Academy

SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!

swexpertacademy.com

어떻게 배치하는게 최대인지 최소인지 모르니까 완탐 돌리는거 밖에 답이없음

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;

public class Solution_4008 {
    static int N,max_value,min_value;
    static int[] data, oper;


    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringTokenizer st = new StringTokenizer(br.readLine());

        int T = Integer.parseInt(st.nextToken());

        for (int tc = 1; tc < T+1; tc++) {
            st = new StringTokenizer(br.readLine());

            N = Integer.parseInt(st.nextToken());

            oper = new int[4];
            data = new int[N];

            // {+ - * /}
            st = new StringTokenizer(br.readLine());
            for (int i = 0; i < 4; i++) {
                oper[i] = Integer.parseInt(st.nextToken());
            }

            st = new StringTokenizer(br.readLine());
            for (int i = 0; i < N; i++) {
                data[i] = Integer.parseInt(st.nextToken());
            }

            max_value = Integer.MIN_VALUE;
            min_value = Integer.MAX_VALUE;

            dfs(1,data[0]);

            System.out.println("#"+tc+" "+(max_value-min_value));



        }


    }


    public static void dfs(int depth, int sum){
        if (depth == N){
            max_value = Math.max(max_value, sum);
            min_value = Math.min(min_value, sum);

            return;
        }

        for (int i = 0; i < 4; i++) {
            if (oper[i] == 0)
                continue;

            oper[i]--;
            switch (i){
                case 0:
                    dfs(depth+1,sum+data[depth]);
                    break;
                case 1:
                    dfs(depth+1,sum-data[depth]);
                    break;
                case 2:
                    dfs(depth+1,sum*data[depth]);
                    break;
                case 3:
                    dfs(depth+1,sum/data[depth]);
                    break;
            }
            oper[i]++;


        }



    }

}

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

땅지원의 A형 대비 기출 분석  (0) 2022.10.13
SWEA 2117 홈 방문 서비스(BFS)  (0) 2022.10.12
백준 2056 작업(위상정렬, DP) ★★  (0) 2022.10.07
SWEA 7793 오! 나의 여신님 (BFS)  (1) 2022.10.06
백준 17143 낚시왕 (구현, 시뮬레이션)  (1) 2022.10.05
    'Algorithm/Algorithm Problem' 카테고리의 다른 글
    • 땅지원의 A형 대비 기출 분석
    • SWEA 2117 홈 방문 서비스(BFS)
    • 백준 2056 작업(위상정렬, DP) ★★
    • SWEA 7793 오! 나의 여신님 (BFS)
    땅지원
    땅지원
    신입 개발자의 우당탕탕 기술 블로그

    티스토리툴바