23027번: 1번부터 문제의 상태가...?백준/문제2024. 7. 1. 14:51
Table of Contents
문제 출처 : https://www.acmicpc.net/problem/23027
언어 : Kotlin
문제 설명 :
큰일이다. 시험 문제를 본 쿠기는 1번부터 풀 수가 없다. 시험 시간 동안 할 일이 없었던 쿠기는 교수님께 편지를 쓰려고 한다. 작년 시험에서 교수님께 그동안 감사했다는 편지를 전하고 D+을 받았던 기억이 있다. 그때 성적이 문제였는지, 편지가 문제였는지 궁금하여 이번에도 1번 문제의 답안 칸에 편지를 작성하려고 한다. 혹시나 하는 마음에 쿠기는 D+만은 피하고자 편지를 수정하려고 한다.
편지의 내용 S에 'A'가 있다면 S에 있는 'B', 'C', 'D', 'F'를 모두 'A'로 변경한다.
'A'가 없고 'B'가 있다면 S에 있는 'C', 'D', 'F'를 모두 'B'로 변경한다.
'A'와 'B'가 없고 'C'가 있다면 S에 있는 'D', 'F'를 모두 'C'로 변경한다.
'A', 'B'와 'C'가 모두 없다면 S에 있는 모든 문자를 'A'로 변경한다.
쿠기를 도와 편지를 수정하는 것을 도와주자.
입력 :
편지의 내용 S(1 ≤ S 의 길이 ≤ 1,000)가 주어진다. 문자열 S는 알파벳 대문자로 이루어져 있다.
출력 :
수정된 편지의 내용을 출력한다.
제한 사항 :
- 시간 제한 : 1초
- 메모리 제한 : 512MB
입출력 예 :
입력 | 출력 |
HIMYNAMEISKIMCODING | HIMYNAMEISKIMAOAING |
BOJISGOOD | BOJISGOOB |
INEEDTOEXERCISE | INEECTOEXERCISE |
ILIKEHIPHOP | AAAAAAAAAAA |
풀이 :
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))
readLine().also {
val check = BooleanArray(3)
if (it.contains('A')) check[0] = true
if (it.contains('B')) check[1] = true
if (it.contains('C')) check[2] = true
StringBuilder(it).apply {
val result = when {
!check[0] && check[1] -> replace("[CDF]".toRegex(), "B")
!check[0] && !check[1] && check[2] -> replace("[DF]".toRegex(), "C")
!check[0] && !check[1] && !check[2] -> replace("[A-Z]".toRegex(), "A")
check[0] -> replace("[BCDF]".toRegex(), "A")
else -> it
}
bw.write(result)
}
}
bw.flush()
bw.close()
}
'백준 > 문제' 카테고리의 다른 글
28135번: Since 1973 (0) | 2024.07.01 |
---|---|
26040번: 특정 대문자를 소문자로 바꾸기 (0) | 2024.07.01 |
9733번: 꿀벌 (0) | 2024.06.28 |
26768번: H4x0r (0) | 2024.06.28 |
15786번: Send me the money (0) | 2024.06.28 |
@스몰스테핑 :: 작은 발걸음
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!