BOJ1316 - 그룹단어 그룹체커

CYSSSSSSSSS·2023년 6월 22일

알고리즘

목록 보기
59/83

문제1316

문제

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

  • 단어 N개를 입력으로 받아 그룹 단어의 개수를 출력하는 프로그램을 작성하시오.

해결

  • 만약이 현재 자신의 위치에 있는 문자가 이전에 나오지 않았다면 추가를 한다.
  • 만약 현재 자신의 위치에 있는 문자가 앞에 나왔다면 두가지 조건으로 봐야 한다
  • 첫번쨰는 그 문자가 바로 이전 문자에도 나왔다면 그룹 단어 체크에 위배되지 않았기 떄문에 추가하고 넘어가면 된다.
  • 두번쨰는 그 문자가 이전에 나오지 않고 전에 나온 문자라면 문제가 원하는 조건을 위배 했기 떄문에 그룹 단어에서 제외시키면 된다.
n = int(input())
count = 0
for _ in range(n):
    word = input()
    alpha = []
    al_bool = True
    for w in word:
        if w not in alpha:
            alpha.append(w)
            continue

        if w in alpha:
            if alpha[-1] == w:
                alpha.append(w)
            else:
                al_bool = False
                break

    if al_bool:
        count += 1

print(count)
profile
개발자 되고 싶어요

0개의 댓글