알파벳을 Key값으로 받는 Map을 만들고 value는 boolean 타입의 사용되었는지 확인하는 값 추가
따라서 3번의 경우는 그룹단어로 포함시키지 않으면 됨
import java.io.BufferedReader
import java.io.InputStreamReader
val br = BufferedReader(InputStreamReader(System.`in`))
val n = br.readLine().toInt()
fun main() {
val strList = mutableListOf<String>()
for (i in 0 until n) {
strList.add(br.readLine().trim())
}
val map = getAlphabetMap()
var ans = 0
strList.forEach { word ->
var now = "1"
var flag = false
word.forEach {
val str = it.toString()
if (map[str] == false) {
map[str] = true
now = str
} else if (map[str] == true && now != str) {
flag = true
return@forEach
}
}
if (!flag) {
ans++
}
resetAlphabetMap(map)
}
println(ans)
}
fun getAlphabetMap(): HashMap<String, Boolean> {
return hashMapOf<String, Boolean>().also { map ->
('a'..'z').forEach { it->
map[it.toString()] = false
}
}
}
fun resetAlphabetMap(map: HashMap<String, Boolean>) = map.keys.forEach { key -> map[key] = false }