문제 링크
문제 해설
주어진 입력에서 BUG라는 문자열을 모두 제거하면 된다.
우선 입력을 EOF까지 받기 때문에 아래와 같은 형태처럼 입력이 null
이 아닐 때까지 입력받는 반복문으로 처리해야 한다.
var s: String?
while (readLine().also { s = it } != null) {
...
}
BUG라는 문자열을 모두 제거하기 위해 단순히 replace()
로 처리하면 되긴 하지만 출력 설명의 예시를 잘 주목해야 한다.
즉, 입력으로 주어진 어떤 문자열에 BBUGUBUGG와 같은 형태로 BUG의 각 문자 사이에 BUG가 끼어드는 경우를 생각해볼 수 있다. 이 때 한번의 replace()
로 BUG를 제거하면 BBUGUBUGG → BUG가 된다.
이 경우에도 BUG를 제거해야 하기 때문에 반복문을 통해 입력으로 주어진 문자열에 BUG가 포함되어 있다면 반복해서 BUG를 제거하는 것으로 구현할 수 있다.
Code
fun main() = with(System.`in`.bufferedReader()) {
val bw = System.out.bufferedWriter()
var s: String?
while (readLine().also { s = it } != null) {
while (s!!.contains("BUG")) s = s!!.replace("BUG", "")
bw.write("$s\n")
}
bw.close()
}
여담
여담으로 평소에는 EOF까지 입력을 받는 문제에서 != null
를 사용하면 로컬에서 테스트하기가 어렵기 때문에 isNullOrEmpty()
에 !
연산자를 붙이는 것을 선호하는데 이 문제에서는 빈 문자열도 입력으로 주어지기 때문에 사용할 수 없었다.
'Algorithm > BOJ' 카테고리의 다른 글
[Kotlin] 백준 1850 : 최대공약수 (2) | 2023.11.11 |
---|---|
[Kotlin] 백준 30036 : INK (0) | 2023.10.25 |
[Kotlin] 백준 21944 : 문제 추천 시스템 Version 2 (0) | 2023.09.13 |
[Kotlin] 백준 27162 : Yacht Dice (0) | 2023.09.05 |
[Kotlin] 백준 6568 : 귀도 반 로썸은 크리스마스날 심심하다고 파이썬을 만들었다 (0) | 2023.08.31 |
댓글