[백준] 놀라운 문자열 (1972)(kotlin)

문제 설명

백준 1972번 문제 링크

입력 및 출력

» 입력

입력의 각 줄에는 알파벳 대문자로만 구성된 문자열이 주어진다. 모든 문자열의 길이는 80을 넘지 않으며, 입력의 마지막 줄에는 마지막을 나타내는 *가 주어진다. 입력은 마지막 줄을 포함해서 101줄을 넘지 않는다.

» 출력

각 줄에 이 문자열이 놀라운(surprising) 문자열인지 아닌지를 아래의 예제와 같이 출력한다.

예제 입출력(테스트케이스)

입력 출력
ZGBG
X
EE
AAB
AABA
AABB
BCBABCC
*
ZGBG is surprising.
X is surprising.
EE is surprising.
AAB is surprising.
AABA is surprising.
AABB is NOT surprising.
BCBABCC is NOT surprising.

문제 풀이1

fun main(args: Array<String>) = with(System.`in`.bufferedReader()) {
    while (true) {
        val str = readLine()
        if (str == "*") break

        var isDPair: Boolean = true

        for (i in 1 .. str.length - 2) {
            isDPair = true
            val set = hashSetOf<String>()

            for (j in i until str.length)
                if (!set.add(str[j - i].toString() + str[j].toString())) isDPair = false

            if (!isDPair) break
        }

        if (!isDPair) println("$str is NOT surprising.")
        else println("$str is surprising.")
    }
}