KoreanFoodie's Study
SW 역량테스트 - [백준] 연산자 끼워넣기 문제 풀이/해답/코드 (C++ / JAVA) 본문
Data Structures, Algorithm/SW 역량테스트
SW 역량테스트 - [백준] 연산자 끼워넣기 문제 풀이/해답/코드 (C++ / JAVA)
GoldGiver 2020. 10. 15. 23:39
SW 역량 테스트 준비를 위한 핵심 문제들을 다룹니다!
해답을 보기 전에 문제를 풀어보시거나, 설계를 하고 오시는 것을 추천드립니다.
코드에 대한 설명은 주석을 참고해 주세요 :)
문제 링크 : www.acmicpc.net/problem/14888
해답 코드 :
#include <iostream>
#include <algorithm>
using namespace std;
int N;
int numbers[15];
int op[15];
int ans_min;
int ans_max;
int operate(int o1, int o2, int oper) {
if (oper == 0) {
return (o1 + o2);
}
else if (oper == 1) {
return (o1 - o2);
}
else if (oper == 2) {
return (o1 * o2);
}
else {
return (o1 / o2);
}
}
// cnt = # of computations
void calculate(int res, int cnt) {
if (cnt > N - 1) {
ans_max = max(ans_max, res);
ans_min = min(ans_min, res);
return;
}
//bool dup[4] = { false,false,false,false };
int t_op, t_res;
for (int i = 0; i < N - 1; i++) {
t_op = op[i];
// mark used operator
op[i] = -1;
if (t_op == -1) continue;
t_res = operate(res, numbers[cnt], t_op);
calculate(t_res, cnt + 1);
// restore operator array
op[i] = t_op;
}
}
int main() {
int t_op, i_op = 0;
ans_min = INT32_MAX;
ans_max = INT32_MIN;
cin >> N;
for (int i = 0; i < N; i++) {
cin >> numbers[i];
}
// 0 : '+', 1 : '-', 2 : 'x', 3: '/'
for (int i = 0; i < 4; i++) {
cin >> t_op;
for (int j = 0; j < t_op; j++, i_op++) {
op[i_op] = i;
}
}
calculate(numbers[0], 1);
cout << ans_max << endl;
cout << ans_min << endl;
return 0;
}
SW 역량테스트 준비 - [모의 SW 역량테스트] 풀이 / 코드 / 답안 (C++ / JAVA)
SW 역량테스트 준비 - C++ 코드, Java 코드
SW 역량테스트 준비 - 백준 알고리즘 문제
'Data Structures, Algorithm > SW 역량테스트' 카테고리의 다른 글
SW 역량테스트 - [백준] 감시 문제 풀이/해답/코드 (C++ / JAVA) (0) | 2020.10.15 |
---|---|
SW 역량테스트 - [백준] 스타트와 링크 문제 풀이/해답/코드 (C++ / JAVA) (0) | 2020.10.15 |
SW 역량테스트 - [백준] 퇴사 문제 풀이/해답/코드 (C++ / JAVA) (0) | 2020.10.15 |
SW 역량테스트 - [백준] 주사위 굴리기 문제 풀이/해답/코드 (C++ / JAVA) (0) | 2020.10.15 |
SW 역량테스트 - [백준] 시험감독 문제 풀이/해답/코드 (C++ / JAVA) (0) | 2020.10.15 |
Comments