DINGA DINGA
728x90

www.acmicpc.net/problem/16503

 

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