728x90
16503번: 괄호 없는 사칙연산
첫 번째 줄에는 "K1 O1 K2 O2 K3" 형태로 식이 주어진다. 정수 Ki (1 ≤ Ki ≤ 1,000)는 피연산자를, 문자열 Oi는 곱셈(*), 나눗셈(/), 덧셈(+), 뺄셈(-) 중 한 가지 연산자를 의미한다. 나눗셈 연산은 정수 나
www.acmicpc.net

코드
<c++ />
#include <stdio.h>
int calculate(int a, char o, int b) { //연산하는 함수
int res = 0;
switch(o) {
case '+':
res = a + b;
break;
case '-':
res = a - b;
break;
case '*':
res = a * b;
break;
case '/':
res = a / b;
break;
}
return res;
}
main() {
int k1, k2, k3;
char o1, o2;
int result1 = 0, result2 = 0;
scanf("%d %c %d %c %d", &k1, &o1, &k2, &o2, &k3);
result1 = calculate(calculate(k1, o1, k2), o2, k3); //앞의 식 먼저 계산
result2 = calculate(k1, o1, calculate(k2, o2, k3)); //뒤의 식 먼저 계산
if (result1 < result2) //두 결과 중 작은 값을 먼저 출력
printf("%d\n%d\n", result1, result2);
else
printf("%d\n%d\n", result2, result1);
}
설명
k1, o1, k2, o2, k3를 입력받는다.
앞의 식을 먼저 계산하는 경우 그 값을 result1에 저장하고, 뒤의 식을 먼저 계산하는 경우 그 값을 result2에 저장한다.
계산은 calculate 함수로 실행한다.
result1과 result2의 대소 비교를 통해 작은 값부터 먼저 출력한다.
728x90
'C & C++ > BOJ' 카테고리의 다른 글
[백준] 1568번: 새 (0) | 2021.02.25 |
---|---|
[백준] 1371번: 가장 많은 글자 (0) | 2021.02.25 |
[백준] 4673번: 셀프 넘버 (0) | 2021.02.19 |
[백준] 1264번: 모음의 개수 (1) | 2021.02.19 |
[백준] 1259번: 팰린드롬수 (0) | 2021.02.19 |