안녕하세요. 오늘은 괄호없는 사칙연산을 할 거예요.

문제

https://www.acmicpc.net/problem/16503

아이디어

숫자를 차례대로 a,b,c, 연산기호를 차례대로 d,e라고 하고 계산을 cal(숫자,기호,숫자)로 한다면 가능한 경우는 cal(cal(a,d,b),e,c)거나 cal(a,d,cal(b,e,c))입니다. 이 중 최대/최소를 구해주면 됩니다.

소스코드

#include <iostream>
#include <algorithm>
#define ll long long
using namespace std;

ll cal(ll a, char c, ll b)
{
    if (c == '+') return a + b;
    if (c == '-') return a - b;
    if (c == '*') return a * b;
    if (c == '/') return a / b;
}

int main(void)
{
    ios_base::sync_with_stdio(false); cin.tie(NULL);
    ll a, b, c;
    char d, e;

    cin >> a >> d >> b >> e >> c;

    ll x = cal(cal(a, d, b), e, c), y = cal(a, d, cal(b, e, c));

    cout << min(x, y) << "\n" << max(x, y);
}


감사합니다.

0개의 댓글