1871번: 좋은 자동차 번호판백준/문제2024. 2. 20. 14:08
Table of Contents
문제 출처 : https://www.acmicpc.net/problem/1871
언어 : Kotlin
문제 설명 :
앨버타의 자동차 번호판은 ABC-0123 (세 글자, 네 숫자)와 같이 두 부분으로 나누어져 있다.
좋은 번호판은 첫 번째 부분의 가치와 두 번째 부분의 가치의 차이가 100을 넘지 않는 번호판이다.
글자로 이루어진 첫 번째 부분의 가치는 글자를 26진법 수처럼 계산한다. (각 자리가 [A..Z]) 예를 들어, "ABC"의 가치는 28 (0×262 + 1×261 + 2×260)이 된다. "ABC-0123"은 |28 - 123| ≤ 100 이기 때문에, 좋은 번호판이다.
자동차 번호판이 주어졌을 때, 좋은 번호판인지 아닌지를 구하는 프로그램을 작성하시오.
입력 :
첫째 줄에 번호판의 수 N (1 ≤ N ≤ 100)이 주어진다. 다음 N개 줄에는 자동차 번호판이 LLL-DDDD 형식으로 주어진다.
출력 :
각각의 자동차 번호판에 대해서, 좋은 번호판이면 "nice"를, 아니면 "not nice"를 출력한다.
제한 사항 :
- 시간 제한 : 1초
- 메모리 제한 : 128MB
입출력 예 :
입력 | 출력 |
2 ABC-0123 AAA-9999 |
nice not nice |
풀이 :
import java.io.BufferedReader
import java.io.BufferedWriter
import java.io.InputStreamReader
import java.io.OutputStreamWriter
import kotlin.math.abs
import kotlin.math.pow
fun main() = with(BufferedReader(InputStreamReader(System.`in`))) {
val bw = BufferedWriter(OutputStreamWriter(System.out))
val n = readLine().toInt()
repeat(n) {
val (front, back) = readLine().split("-")
bw.write(if (calculator(front, back) <= 100) "nice" else "not nice")
if (it < n - 1) bw.appendLine()
}
bw.flush()
bw.close()
}
fun calculator(front: String, back: String): Double {
var num = 0.0
for (i in 2 downTo 0) {
num += (front[i].code - 65) * 26.toDouble().pow(2 - i)
}
return abs(num - back.toInt())
}
'백준 > 문제' 카테고리의 다른 글
16120번: PPAP (0) | 2024.02.20 |
---|---|
2386번: 도비의 영어 공부 (0) | 2024.02.20 |
6321번: IBM 빼기 1 (0) | 2024.02.19 |
1701번: Cubeditor (0) | 2024.02.19 |
13985번: Equality (0) | 2024.02.19 |
@스몰스테핑 :: 작은 발걸음
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!