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