티스토리 뷰

728x90

문제

www.acmicpc.net/problem/1316

 

1316번: 그룹 단어 체커

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

www.acmicpc.net

 

풀이 및 소스코드

gword 라는 그룹단어의 알파벳이 들어가는 리스트를 하나 만들어주었다.

이전에 나왔던 알파벳들을 기억해두려고 만들었다.

먼저, for 문으로 입력받은 단어의 맨 처음 알파벳부터 보면서 gword 에 담겨있는지 본다.

없으면 추가하고 카운트를 +1 해준다.

카운트는 전에 나왔던 알파벳이 연속된건지, 아니면 떨어져있던건지 보기위함이다 !

만약, 담겨있다면 먼저 cnt를 본다.

cnt 가 0이라면, 전에 나온 알파벳이지만 연속되어있지 않다는 뜻이므로 flg -1 처리 해주고 break 해준다.

cnt 가 0이 아니라면, 현재 위치의 전과 비교하여 같은지 보고 다르다면 flg -1처리 해주고 break 해준다.

import sys

input = sys.stdin.readline

n = int(input())
res = 0
for i in range(n):
    word = list(input().rstrip())
    gword = []
    cnt = 0
    flg = 1
    for j in range(len(word)):
        if word[j] not in gword:
            gword.append(word[j])
            cnt = 1
            continue
        if cnt == 0:
            flg = -1
            break
        if word[j-1]!=word[j]:
            flg = -1
            break
        cnt += 1
    if j == len(word)-1 and flg == 1:
        res+=1

print(res)
반응형