본문 바로가기

알고리즘/백준 문제풀이

백준 1316 - 그룹 단어 체커(kotlin)

728x90

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

 

1316번: 그룹 단어 체커

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

www.acmicpc.net

문제접근

  • 문자열 안에 반복되는 문자가 또 나오는지 확인하는 문제
  • 문자열의 문자들을 컬랙션에 넣고 이미 넣은 단어가 또 나오면 그룹 단어가 아닌걸로 판별
  • 연속적으로 나오는건 상관없으니 마지막 단어를 변수에 저장해서 검사하려는 단어와 비교

정답코드

import java.util.*


fun main(args: Array<String>): Unit = with(Scanner(System.`in`)) {
    val n = nextInt()
    var ans = n
    val s = mutableSetOf<Char>()
    var last = ' '
    for (i in 0 until n) {
        val str = next()
        for (j in 0 until str.length) {
            if (last != str[j] && !s.contains(str[j])) { //마지막 단어와 다르고 아직 안나온 단어
                last = str[j] // 마지막 단어 갱신
                s.add(str[j]) // 단어를 저장
            }
            if (last == str[j]) continue //연속된 단어 건너뛰기
            if (last != str[j] && s.contains(str[j])) { //마지막 단어와 다른데 이미있는 단어
                ans--
                break

            }
        }
        s.removeAll(s) // 컬랙션 초기화
        last = ' '
    }
    print(ans)
}

비고

이걸 왜 한번에 못떠올렸지...싶다가 알고리즘을 너무 오래 쉬었긴한가봐요...

'알고리즘 > 백준 문제풀이' 카테고리의 다른 글

백준 1418 k-세준수(Kotlin)  (0) 2023.01.30
백준 1531 - 투명(Kotlin)  (0) 2023.01.29
백준 1439번 - 뒤집기(Kotlin)  (0) 2023.01.29
백준 1343 - 폴리오미노(Kotlin)  (0) 2023.01.29
백준 - 1120 (kotlin)  (0) 2023.01.28