Uknow's Lab.
article thumbnail

https://www.acmicpc.net/problem/15904

 

15904번: UCPC는 무엇의 약자일까?

첫 번째 줄에 알파벳 대소문자, 공백으로 구성된 문자열이 주어진다. 문자열의 길이는 최대 1,000자이다. 문자열의 맨 앞과 맨 끝에 공백이 있는 경우는 없고, 공백이 연속해서 2번 이상 주어지는

www.acmicpc.net

 

난이도 : 실버 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")
}

 

profile

Uknow's Lab.

@유노 Uknow

인생은 Byte와 Double 사이 Char다. 아무말이나 해봤습니다.