https://www.acmicpc.net/problem/15904
난이도 : 실버 5
태그 : 그리디, 문자열
설명
주어진 문자열로 UCPC라는 약자를 도출할 수 있는지를 판단하는 문제입니다.
초기 아이디어는 리스트를 하나 두고,
사용한 문자열을 하나씩 빼면서 리스트가 비면 도출 가능하다고 판단했었는데,
생각해보니 U - C - P - C 순으로 해야더라고요...
결국 UCPC 중 몇 번째 문자열까지 가능한지 체크할 포인터 변수 하나를 두고,
주어진 문자열을 처음부터 한 글자씩 체크해가며,
UCPC 문자열 중 포인터가 가르키는 문자열과 일치할 때 마다 포인터를 1씩 증가시키고,
4가 된다면 UCPC 약자를 만들 수 있는 것이므로, I love UCPC를 출력하고 종료합니다.
소스코드
fun main() = with(System.`in`.bufferedReader()) {
val UCPC = "UCPC"
val line = readLine()
var ptr = 0
for (ch in line) {
if (ch == UCPC[ptr]) {
ptr++
}
if(ptr == 4) {
println("I love UCPC")
return
}
}
println("I hate UCPC")
}
'코딩테스트 > Kotlin' 카테고리의 다른 글
[백준 1904번] [Kotlin] 01타일 (0) | 2023.07.15 |
---|---|
[백준 11967번] [Kotlin] 불켜기 (0) | 2023.07.15 |
[백준 4949번] [Kotlin] 균형잡힌 세상 (0) | 2023.07.10 |
[백준 11328번] [Kotlin] Strfry (0) | 2023.07.10 |
[백준 1406번] [Kotlin] 에디터 (0) | 2023.07.03 |