문제 출처 : https://www.acmicpc.net/problem/13420
언어 : Kotlin
문제 설명 :
사칙연산은 덧셈, 뺄셈, 곱셈, 나눗셈으로 이루어져 있으며, 컴퓨터 프로그램에서 이를 표현하는 기호는 +, -, *, / 와 같다. 아래는 컴퓨터 프로그램에서 표현한 사칙 연산의 예제이다.
3 * 2 = 6
문제와 답이 주어졌을 때, 이를 계산하여 올바른 수식인지 계산하는 프로그램을 만들려고 한다. 만약 주어진 데이터가 3 * 2 = 6 이라면 정답으로, 3 * 2 = 7 이면 오답으로 채점을 하면 된다. 문제와 답이 주어졌을 때, 이를 채점하는 프로그램을 작성하시오.
입력 :
입력 데이터는 표준 입력을 사용한다. 입력은 T개의 테스트 데이터로 구성된다. 입력의 첫 번째 줄에 테스트 케이스의 개수를 나타내는 자연수 T가 주어진다. 각 테스트 케이스의 첫 번째 줄에는 수식이 주어진다. 수식은 문자와 기호가 공백으로 구분되어 주어지고, 사칙연산 기호는 1개만 사용된다. 나눗셈의 경우 항상 나누어떨어지는 경우로만 주어진다.
출력 :
출력은 표준 출력을 사용한다. 입력받은 데이터에 대해, 각 테스트 케이스의 답을 순서대로 1줄에 1개씩 출력한다. 주어진 수식이 정답일 경우 “correct”를, 오답일 경우 “wrong answer”를 출력한다. 문제의 정답이 32비트 정수가 넘어갈 수 있다. 모든 범위가 부호가 있는 64비트 정수 이내이다.
제한 사항 :
- 시간 제한 : 1초
- 메모리 제한 : 128MB
입출력 예 :
입력 | 출력 |
4 3 * 2 = 6 11 + 11 = 11 7 - 9 = -2 3 * 0 = 0 |
correct wrong answer correct correct |
풀이 :
import java.io.BufferedReader
import java.io.BufferedWriter
import java.io.InputStreamReader
import java.io.OutputStreamWriter
fun main() = with(BufferedReader(InputStreamReader(System.`in`))) {
val bw = BufferedWriter(OutputStreamWriter(System.out))
val t = readLine().toInt()
repeat(t) {
val numList = MutableList(3) { 0.toLong() }
var status = ""
readLine().split(" ").forEachIndexed { index, s ->
when (s) {
"+" -> status = "+"
"-" -> status = "-"
"*" -> status = "*"
"/" -> status = "/"
else -> if (index % 2 == 0) numList[index / 2] = s.toLong()
}
}
val result = when (status) {
"+" -> numList[0] + numList[1] == numList[2]
"-" -> numList[0] - numList[1] == numList[2]
"*" -> numList[0] * numList[1] == numList[2]
"/" -> numList[0] / numList[1] == numList[2]
else -> false
}
bw.appendLine(if (result) "correct" else "wrong answer")
bw.flush()
}
bw.close()
}
'백준 > 문제' 카테고리의 다른 글
15927번: 회문은 회문아니야!! (0) | 2024.03.25 |
---|---|
28074번: 모비스 (0) | 2024.03.22 |
12871번: 무한 문자열 (1) | 2024.03.22 |
20540번: 연길이의 이상형 (0) | 2024.03.21 |
10174번: 팰린드롬 (0) | 2024.03.21 |
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!