Notice
Recent Posts
Recent Comments
Link
«   2025/08   »
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
Archives
Today
Total
관리 메뉴

코딩로그

[백준/BOJ/C++] 13420번 사칙연산 본문

YJ/C++

[백준/BOJ/C++] 13420번 사칙연산

Team DAON 2021. 11. 1. 16:34

[문제]

사칙연산은 덧셈, 뺄셈, 곱셈, 나눗셈으로 이루어져 있으며, 컴퓨터 프로그램에서 이를 표현하는 기호는 +, -, *, / 와 같다. 아래는 컴퓨터 프로그램에서 표현한 사칙 연산의 예제이다.

3 * 2 = 6

문제와 답이 주어졌을 때, 이를 계산하여 올바른 수식인지 계산하는 프로그램을 만들려고 한다. 만약 주어진 데이터가 3 * 2 = 6 이라면 정답으로, 3 * 2 = 7 이면 오답으로 채점을 하면 된다. 문제와 답이 주어졌을 때, 이를 채점하는 프로그램을 작성하시오.

[입력]

입력 데이터는 표준 입력을 사용한다. 입력은 T개의 테스트 데이터로 구성된다. 입력의 첫 번째 줄에 테스트 케이스의 개수를 나타내는 자연수 T가 주어진다. 각 테스트 케이스의 첫 번째 줄에는 수식이 주어진다. 수식은 문자와 기호가 공백으로 구분되어 주어지고, 사칙연산 기호는 1개만 사용된다. 나눗셈의 경우 항상 나누어떨어지는 경우로만 주어진다.

[출력]

출력은 표준 출력을 사용한다. 입력받은 데이터에 대해, 각 테스트 케이스의 답을 순서대로 1줄에 1개씩 출력한다. 주어진 수식이 정답일 경우 “correct”를, 오답일 경우 “wrong answer”를 출력한다. 문제의 정답이 32비트 정수가 넘어갈 수 있다. 모든 범위가 부호가 있는 64비트 정수 이내이다.

[Source Code]

#include <stdio.h>
#include <iostream>
#include <string>
#include <algorithm>
#include <vector>
using namespace std;


int main() {
	int test;
	cin >> test;
	int *result = new int[test];

	for(int i = 0; i < test; i++){
		long long x, y, answer;
		char op, eq;
		cin >> x >> op >> y >> eq >> answer;

		if(op == '+'){
			if(x + y == answer)
				result[i] = 1;
			else
				result[i] = 0;
		}
		else if(op == '-'){
			if(x - y == answer)
				result[i] = 1;
			else
				result[i] = 0;
		}
		else if(op == '*'){
			if(x * y == answer)
				result[i] = 1;
			else
				result[i] = 0;
		}
		else if(op == '/'){
			if(x / y == answer)
				result[i] = 1;
			else
				result[i] = 0;
		}
	}

	for(int i = 0; i < test; i++){
		if(result[i] == 1)
			cout << "correct\n";
		else
			cout << "wrong answer\n";
	}
}

[결과 화면]