[백준] 14888번 연산자 끼워넣기 (C++)

2025. 9. 2. 23:45·Algorithm
728x90

https://www.acmicpc.net/problem/14888

 

 

이 문제는 N개의 수열이 주어지고 4개의 연산자에 대해 각각의 개수가 주어졌때 연산을 하되 연산순서를 무시하고 앞에서부터

차례대로 계산을 하여 최댓값을 출력하는 문제이다.

 

문제 조건에서 수열의 개수 N이 최대 11이며 연산자의 개수의 합은 최대 N-1 인것을 보고

수가 굉장히 작기 때문에 모든 경우의 수를 구하면 되겠다고 생각을 하였다.

 

또한 연산자의 순서에 따라서 값이 달라지기 때문에 재귀 형식의 백트래킹으로 구현하는 것이

더 간단하게 구현될 수 있다고 생각했다.

 

 

정답코드

#include <bits/stdc++.h>
using namespace std;
typedef pair<int, int> pii;
typedef long long ll;
#define endl "\n"
#define MAX 1e9

struct coordinate {
    int x;
    int y;
    int r;
};

int dx[] = {0 ,0, -1, 0, 1, 1, -1, -1, 1};
int dy[] = {0, -1, 0, 1, 0, -1, 1, -1, 1};
int N, pluses, minuses, mult, divi;
vector<int> v;
int arr[4];
int maxval = -MAX;
int minval = MAX;

void dfs(int cnt, int val) {
    if(cnt == N-1) {
        maxval = max(val, maxval);
        minval = min(val, minval);
        return;
    }

    if(pluses > 0) {
        pluses--;
        dfs(cnt+1, val + v[cnt+1]);
        pluses++;
    }

    if(minuses > 0) {
        minuses--;
        dfs(cnt+1, val - v[cnt+1]);
        minuses++;
    }

    if(mult > 0) {
        mult--;
        dfs(cnt+1, val * v[cnt+1]);
        mult++;
    }

    if(divi > 0) {
        divi--;
        dfs(cnt+1, val / v[cnt+1]);
        divi++;
    }
}

void solve() {
    dfs(0, v[0]);

    cout << maxval << endl << minval;
}

void input() {
    cin >> N;

    for(int i = 0; i < N; i++) {
        int a;
        cin >> a;
        v.push_back(a);
    }

    cin >> pluses >> minuses >> mult >> divi;
}

int main() {
    ios::sync_with_stdio(0);
    cin.tie(0), cout.tie(0);

    input();
    solve();
}

 

 

728x90
저작자표시 (새창열림)

'Algorithm' 카테고리의 다른 글

[백준] 3078번 좋은 친구 (C++)  (0) 2025.09.04
[백준] 10653번 마라톤 2 (C++)  (0) 2025.09.03
[백준] 11502번 세 개의 소수 문제 (C++)  (0) 2025.09.01
[백준] 23326번 홍익 투어리스트 (C++)  (0) 2025.08.31
[백준] 14395번 4연산 (C++)  (0) 2025.08.30
'Algorithm' 카테고리의 다른 글
  • [백준] 3078번 좋은 친구 (C++)
  • [백준] 10653번 마라톤 2 (C++)
  • [백준] 11502번 세 개의 소수 문제 (C++)
  • [백준] 23326번 홍익 투어리스트 (C++)
쿨쿨.
쿨쿨.
  • 쿨쿨.
    All of the life
    쿨쿨.
  • 전체
    오늘
    어제
    • 분류 전체보기 (285) N
      • Programming (52) N
        • C, C++ (18)
        • Python (6)
        • Java (1)
        • HTML,CSS,JS (3)
        • SQL(DB) (13)
        • SpringBoot (8) N
        • Android (2)
        • CI,CD (1)
      • Algorithm (173)
        • Review (4)
      • Security (14)
        • WebHacking (3)
        • Websecurity (11)
      • OS (19)
        • Linux (12)
        • Mac os (2)
      • 머신러닝 (1)
      • CS(Computer Science) (12)
        • 컴퓨터 네트워크 (3)
        • 컴퓨터 구조 (1)
        • 인공지능 (8)
      • Docker (2) N
      • Dev Book Review (3)
        • Clean Code (1)
        • Effective Java (0)
        • Real MySQL (2)
      • SWM (1)
      • Review (6)
      • AWS (2)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    다이나믹 프로그래밍
    백트래킹
    구현
    코딩
    우선순위큐
    WebSecurity
    이분탐색
    Leviathan
    다익스트라
    그리디
    깊이우선탐색
    정렬
    c언어
    그래프 이론
    DP
    비트마스킹
    백준
    linux
    wargame
    시뮬레이션
    Bandit
    DFS
    누적합
    에라토스테네스의 체
    재귀
    BFS
    우선순위 큐
    투포인터
    브루트포스
    트리
  • 최근 댓글

  • 최근 글

  • 250x250
  • hELLO· Designed By정상우.v4.10.6
쿨쿨.
[백준] 14888번 연산자 끼워넣기 (C++)
상단으로

티스토리툴바