본문 바로가기
Algorithm/C++

[백준 14888] 연산자 끼워넣기

by imagineer_jinny 2022. 10. 20.

14888번: 연산자 끼워넣기 (acmicpc.net)

 

14888번: 연산자 끼워넣기

첫째 줄에 수의 개수 N(2 ≤ N ≤ 11)가 주어진다. 둘째 줄에는 A1, A2, ..., AN이 주어진다. (1 ≤ Ai ≤ 100) 셋째 줄에는 합이 N-1인 4개의 정수가 주어지는데, 차례대로 덧셈(+)의 개수, 뺄셈(-)의 개수, 

www.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

댓글