작성일 :

문제 링크

16503번 - 괄호없는 사칙연산

설명

간단한 사칙연산에 대한 구현 문제입니다.

입력에 대하여 파싱을 진행한 후,
문제의 조건에 따른 첫 번째 연산 결과, 두 번째 연산 결과를 대/소 비교하여
숫자가 작은 결과를 첫 번째로, 숫자가 큰 결과를 두 번째로 출력합니다.


Code

[ C# ]

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
namespace Solution {
  class Program {

    delegate int Calculator(int lhs, int rhs, string opt);

    static void Main(string[] args) {

      Calculator cal = (int lhs, int rhs, string opt) => {
        int ret = 0;
        if (opt == "*") ret = lhs * rhs;
        else if (opt == "/") ret = lhs / rhs;
        else if (opt == "+") ret = lhs + rhs;
        else if (opt == "-") ret = lhs - rhs;

        return ret;
      };

      string[]? input = Console.ReadLine()?.Split();
      int.TryParse(input![0], out int num1);
      int.TryParse(input![2], out int num2);
      int.TryParse(input![4], out int num3);

      int ans1 = cal(cal(num1, num2, input![1]), num3, input![3]),
          ans2 = cal(num1, cal(num2, num3, input![3]), input![1]);

      Console.WriteLine(Math.Min(ans1, ans2));
      Console.WriteLine(Math.Max(ans1, ans2));

    }
  }
}



[ C++ ]

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
#include <bits/stdc++.h>

using namespace std;

int calculate(const int& lhs, const int& rhs, char& opt) {
  int ret = 0;
  if (opt == '*') ret = lhs * rhs;
  else if (opt == '/') ret = lhs / rhs;
  else if (opt == '+') ret = lhs + rhs;
  else if (opt == '-') ret = lhs - rhs;

  return ret;
}

int main() {
  ios::sync_with_stdio(false);
  cin.tie(nullptr);

  int num1, num2, num3;
  char opt1, opt2;
  cin >> num1 >> opt1 >> num2 >> opt2 >> num3;

  int ans1 = calculate(calculate(num1, num2, opt1), num3, opt2),
      ans2 = calculate(num1, calculate(num2, num3, opt2), opt1);

  cout << min(ans1, ans2) << "\n" << max(ans1, ans2) << "\n";

  return 0;
}