14888번: 연산자 끼워넣기 (acmicpc.net)
정답코드
#include <iostream>
using namespace std;
int N;
int operands[11]; // 수열
int operators[4]; // 연산자의 개수
int mymin = 1000000001;
int mymax = -1000000001;
void getanswer(int result, int idx)
{
if(idx == N)
{
if(result > mymax)
mymax = result;
if(result < mymin)
mymin = result;
return;
}
for(int i = 0; i < 4; i++)
{
if(operators[i] > 0)
{
operators[i]--; // 연산자 하나 사용했으므로 1개 줄여줌
if(i == 0)
getanswer(result + operands[idx], idx+1);
else if(i == 1)
getanswer(result - operands[idx], idx+1);
else if(i == 2)
getanswer(result * operands[idx], idx+1);
else
getanswer(result / operands[idx], idx+1);
operators[i]++; // 다른 연산자를 사용할 것이므로 아까 줄였던 연산자 개수 늘려줌
}
}
return;
}
int main() {
cin >> N;
for(int i = 0; i < N; i++)
cin >> operands[i];
for(int i = 0; i < 4; i++)
cin >> operators[i];
getanswer(operands[0],1);
cout << mymax << '\n';
cout << mymin;
}
[백준 / BOJ] - 14888번 연산자 끼워넣기 C++ 풀이(삼성 코딩테스트 기출) :: Just Give Me The Code (tistory.com)
'Algorithm > C++' 카테고리의 다른 글
[백준 1806] 부분합 (0) | 2022.11.01 |
---|---|
[백준 2230] 수 고르기 (0) | 2022.11.01 |
[백준 1789] 수들의 합 (0) | 2022.10.18 |
[백준 11727] 2 x n 타일링 2 (0) | 2022.10.12 |
[백준 1932] 정수 삼각형 (0) | 2022.10.12 |
댓글