<C/C++> BOJ 14888: ์ฐ์ฐ์ ๋ผ์๋ฃ๊ธฐ
Coding Test
2022. 4. 2. 14:40
https://www.acmicpc.net/problem/14888
14888๋ฒ: ์ฐ์ฐ์ ๋ผ์๋ฃ๊ธฐ
์ฒซ์งธ ์ค์ ์์ ๊ฐ์ N(2 ≤ N ≤ 11)๊ฐ ์ฃผ์ด์ง๋ค. ๋์งธ ์ค์๋ A1, A2, ..., AN์ด ์ฃผ์ด์ง๋ค. (1 ≤ Ai ≤ 100) ์ ์งธ ์ค์๋ ํฉ์ด N-1์ธ 4๊ฐ์ ์ ์๊ฐ ์ฃผ์ด์ง๋๋ฐ, ์ฐจ๋ก๋๋ก ๋ง์ (+)์ ๊ฐ์, ๋บ์ (-)์ ๊ฐ์,
www.acmicpc.net
๋ฌด๋ํ๊ฒ ํ ์ ์๋ DFS ์์ด ๋ฌธ์ ์๋ค. ๋ค๋ง ์์์ผ ๊ฒฝ์ฐ๋ฅผ ์๊ฐํ์ง ์์ ์ฒ์์ max_num์ 0์ผ๋ก ์ก์์ค์ ์๋ฌ๊ฐ ๋ฌ๋ค.
#include <iostream>
#include <cstring>
#include <queue>
using namespace std;
#define MAXN 100
#define INF ((int)1e9)
int N;
int R, C, D;
int A[MAXN+10];
int op[4]; // +, -, *, /
int min_num = INF, max_num = -INF;
void InputData(void) {
cin >> N;
for(int i = 0; i < N; i++) {
cin >> A[i];
}
for(int i = 0; i < 4; i++) {
cin >> op[i];
}
}
int Cal (int res, int idx, int op) { // ๊ฒฐ๊ณผ, ์ธ๋ฑ์ค ๋ฒํธ, ์ฐ์ฐ์
switch(op) {
case 0:
return res + idx;
case 1:
return res - idx;
case 2:
return res * idx;
case 3:
return res / idx;
}
return -1;
}
void Solve(int cnt, int res) { //ํ์
int temp;
//cout << cnt << "," << res << endl;
if(cnt >= N) {
if (res > max_num) max_num = res;
if (res < min_num) min_num = res;
}
for(int i = 0; i < 4; i++) {
if(op[i] == 0) continue;
op[i]--;
temp = res;
res = Cal(res, A[cnt], i);
//cout << temp << ", " << res << ", " << cnt <<endl;
Solve(cnt+1, res);
op[i]++;
res = temp;
}
}
int main(void) {
ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL);
InputData();
Solve(1, A[0]);
cout<<max_num<<endl;
cout<<min_num<<endl;
return 0;
}
'Coding Test' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
<C/C++> BOJ 15685: ๋๋๊ณค ์ปค๋ธ (0) | 2022.04.05 |
---|---|
<C/C++> BOJ 15684: ์ฌ๋ค๋ฆฌ ์กฐ์ (0) | 2022.04.05 |
<C/C++> BOJ 14503 ๋ก๋ด์ฒญ์๊ธฐ (0) | 2022.04.02 |
<C/C++> BOJ 14500: ํ ํธ๋ก๋ฏธ๋ ธ (0) | 2022.03.31 |
<C/C++> BOJ 13458 ์ํ๊ฐ๋ (0) | 2022.03.30 |