문제
주어진 사칙연산 수식 a op b = c가 올바른지 판별하여 correct 또는 wrong answer를 출력하라.
입력
테스트 케이스 수 T, 각 케이스마다 a op b = c 형식의 수식이 주어진다.
출력
수식이 맞으면 "correct", 틀리면 "wrong answer"를 출력한다.
예제
| 입력 | 출력 |
|---|---|
2 1 + 2 = 3 4 * 3 = 11 | correct wrong answer |
풀이
연산자에 따라 실제 계산 결과와 주어진 결과를 비교한다.
- 두 수, 연산자, 등호, 결과값을 입력받는다
- 연산자에 따라
+,-,*,/연산을 수행한다 - 계산 결과와 주어진 결과가 같으면 "correct", 다르면 "wrong answer"를 출력한다
핵심 아이디어: long long 타입으로 오버플로우를 방지하며 단순 분기 처리한다.
코드
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main()
{
long long int T;
scanf("%lld", &T);
for (int i = 0; i < T; i++)
{
long long int num1, num2, result;
char cacul, equal;
scanf("%lld %c %lld %c %lld", &num1, &cacul, &num2, &equal, &result);
if (cacul == '+')
{
if (num1 + num2 == result)
printf("correct\n");
else
printf("wrong answer\n");
}
else if (cacul == '-')
{
if (num1 - num2 == result)
printf("correct\n");
else
printf("wrong answer\n");
}
else if (cacul == '*')
{
if (num1 * num2 == result)
printf("correct\n");
else
printf("wrong answer\n");
}
else if (cacul == '/')
{
if (num1 / num2 == result)
printf("correct\n");
else
printf("wrong answer\n");
}
}
}복잡도
- 시간: O(T)
- 공간: O(1)