728x90
1. 문제
2. 풀이
재귀함수를 이용하여 해결
흔한 문제!! 숙지할 것 !!!
3. 코드
#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;
vector<int> v;
vector<int> oper(4, 0); // +, -, x. %
int _max = -999999999;
int _min = 9999999999;
int N;
void dfs(int plus, int minus, int multi, int div, int idx, int total) {
if (idx >= N) {
if (total < _min)
_min = total;
if (total > _max) {
_max = total;
}
return;
}
if (plus > 0) {
dfs(plus-1, minus, multi, div, idx + 1, total + v[idx]);
}
if (minus > 0) {
dfs(plus, minus - 1, multi, div, idx + 1, total - v[idx]);
}
if (multi > 0) {
dfs(plus, minus, multi - 1, div, idx + 1, total*v[idx]);
}
if (div > 0) {
dfs(plus, minus, multi, div - 1, idx + 1, total / v[idx]);
}
}
int main() {
freopen("input.txt", "r", stdin);
scanf("%d", &N);
for (int i = 0; i < N; i++) {
int x;
scanf("%d", &x);
v.push_back(x);
}
for (int i = 0; i < 4; i++) {
int x;
scanf("%d", &x);
oper[i] = x;
}
dfs(oper[0], oper[1], oper[2], oper[3], 1, v[0]);
printf("%d\n", _max);
printf("%d\n", _min);
return 0;
}
728x90
'코딩 테스트' 카테고리의 다른 글
[프로그래머스] 호텔방배정 (C++) (0) | 2021.04.19 |
---|---|
[백준] 퇴사 (C++) (0) | 2021.04.13 |
[프로그래머스] 지형이동 (C++) (0) | 2021.04.12 |
[프로그래머스] 우유와 요거트가 담긴 장바구니 (0) | 2021.04.12 |
[프로그래머스] 멀쩡한 사각형 (Python) (0) | 2021.04.12 |
댓글