[백준 16503] 괄호없는 사칙연산 (C#, C++) - soo:bak
작성일 :
문제 링크
설명
간단한 사칙연산에 대한 구현 문제입니다.
입력에 대하여 파싱을 진행한 후,
문제의 조건에 따른 첫 번째 연산 결과, 두 번째 연산 결과를 대/소 비교하여
숫자가 작은 결과를 첫 번째로, 숫자가 큰 결과를 두 번째로 출력합니다.
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;
}