문제 출처 : https://www.acmicpc.net/problem/30794
언어 : Kotlin
문제 설명 :
게임 클럽 오디션의 scoring system과 문제에서의 scoring system이 다름에 주의하세요.
가희는 클럽 오디션을 하고 있습니다. 이 게임에는 여러 모드가 있는데 가희는 8키 모드를 하고 있습니다. 8키 모드에서는 레벨이 6 이상인 키 노트가 등장합니다. 레벨이 lv인 키 노트 안에는 lv개의 키가 있습니다. 키의 방향은 8 방향 중 (상, 하, 좌, 우, 좌상, 좌하, 우상, 우하) 하나입니다.
[그림 1]은 4개의 그림으로 구성되어 있습니다. 노란색으로 칠해져 있는 것은 이미 친 키를, 파란색으로 칠해진 것은 쳐야 하는 키를 의미합니다. 예를 들어, 그림 1의 오른쪽 위의 경우 좌하, 우, 우상, 하 순서대로 쳐야 함을 의미합니다.
1번째 줄의 왼쪽 위는 레벨 6의 키 노트가 나타난 직후입니다. 오른쪽 위 그림은 키 노트가 나오고 나서 1/4 타이밍만큼 지났을 때를 나타냅니다. 왼쪽 아래 그림은 레벨 6의 키 노트가 나오고 1/2 타이밍만큼 지났을 때를 나타냅니다. 이 때 6개의 키를 모두 친 상태입니다. 오른쪽 아래 그림은 타이밍에 맞게 Space키를 눌러서 perfect 판정을 획득한 것을 나타냅니다.
각 키 노트는 판정이 있습니다. 이 때 아래 2가지 경우는 miss 판정이 발생합니다.
- lv개의 방향을 올바르게 입력하지 않은 경우
- Space를 누르지 않았거나 Space를 눌렀을 때 타이밍을 맞추지 못한 경우
그렇지 않으면 bad, cool, great, perfect 판정 중 하나가 발생합니다. 또한 perfect는 한 가지 상태가 더 있습니다. 바로
n연팩. n번 연속 perfect 판정이 난 상태를 n연팩이라 합니다. 발생한 키 노트의 판정이 perfect일 때
- 이전 판정이 perfect가 아닌 경우 1연팩입니다.
- 이전 판정이 perfect이고 k연팩 상태였다면 k+1연팩이 됩니다.
레벨이 lv인 키 노트의 판정에 따른 점수 획득은 아래와 같습니다.
- miss일 때 0점을 받습니다.
- bad일 때 200에 lv을 곱한 점수를 받습니다.
- cool일 때 400에 lv을 곱한 점수를 받습니다.
- great일 때 600에 lv을 곱한 점수를 받습니다.
- perfect
- n연팩일 때 n·lv에 1,000을 곱한 점수를 받습니다.
가희가 친 키 노트의 레벨 lv과 판정이 주어집니다. 가희가 이전에 받은 판정과 다른 판정을 받았을 때 획득한 점수를 구해주세요.
입력 :
첫 줄에 키 노트의 lv과 판정이 공백으로 구분되어 주어집니다. 이때 판정은 miss, bad, cool, great, perfect중 하나로 주어집니다.
출력 :
가희가 획득한 점수를 출력해 주세요.
제한 사항 :
- 시간 제한 : 1초
- 메모리 제한 : 512MB
- 6≤𝑙𝑣≤11
입출력 예 :
입력 | 출력 |
6 miss | 0 |
7 perfect | 7000 |
풀이 :
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 (lv, grade) = readLine().split(" ")
val score = when (grade) {
"bad" -> lv.toInt() * 200
"cool" -> lv.toInt() * 400
"great" -> lv.toInt() * 600
"perfect" -> lv.toInt() * 1000
else -> 0
}
bw.write("$score")
bw.flush()
bw.close()
}
'백준 > 문제' 카테고리의 다른 글
23304번: 아카라카 (0) | 2024.07.03 |
---|---|
31009번: 진주로 가자! (Easy) (0) | 2024.07.02 |
15482번: 한글 LCS (0) | 2024.07.02 |
28135번: Since 1973 (0) | 2024.07.01 |
26040번: 특정 대문자를 소문자로 바꾸기 (0) | 2024.07.01 |
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!