Jakorithm
article thumbnail
728x90

문제

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

 

1316번: 그룹 단어 체커

그룹 단어란 단어에 존재하는 모든 문자에 대해서, 각 문자가 연속해서 나타나는 경우만을 말한다. 예를 들면, ccazzzzbb는 c, a, z, b가 모두 연속해서 나타나고, kin도 k, i, n이 연속해서 나타나기 때

www.acmicpc.net

 

 

코드

첫 번째 줄에 단어의 개수 n이 주어지고, 두 번째 줄부터 n개의 줄에 단어가 주어질 때, 그룹 단어의 개수를 출력하는 문제다.

  • 모든 문자에 대해서 각 문자가 연속해서 나타나는 경우를 그룹 단어라 한다.
  • 그룹 단어인 경우 : aaabbbccc, abcd
  • 그룹 단어가 아닌 경우 : abab, aaabbbccca
fun main() {
    val n = readln().toInt()
    var result = 0

    for (i in 0 until n) {
        val input = readln()

        // groupWordChecker 함수를 통해 그룹 단어인지 체크
        if (groupWordChecker(input)) {
            result++
        }
    }

    println(result)
}

fun groupWordChecker(word: String): Boolean {
    // 각 알파벳의 등장 여부를 기록하는 배열
    val alphabet = BooleanArray(26) { false }

    for (i in 0 until word.length) {
        val current = word[i] - 'a'

        if (alphabet[current]) {
            // 이미 등장한 알파벳인데 이전 문자와 다른 경우 그룹 단어가 아님
            if (word[i] != word[i - 1]) {
                return false
            } else {
                // 이전 문자와 동일한 경우 계속 진행
                continue
            }
        } else {
            // 현재 알파벳이 처음 등장한 경우
            alphabet[current] = true
        }
    }

    return true
}
728x90