공부하기/백준

[Python] 백준 풀기 1316 - 그룹 단어 체커

XEV 2022. 12. 24. 18:55

파이썬 백준 1316번

실버 5

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

 

1316번: 그룹 단어 체커

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

www.acmicpc.net

 

 

 

 

 

문제 보기

분류: 구현, 문자열

 

 

 

 

 

문제 풀기

맨 왼쪽 문자를 빼내고 그 다음 문자와 비교한다. 서로 같은 문자이면 일단 조건문을 통과하고, 만약 다른 문자가 나올때 그 남은 문자 묶음에서 빼어낸 문자가 있는지 확인한다. 있다면 return 0 으로 함수를 종료한다.

word 의 단어가 1개 남을때까지 조건 (그룹 단어가 안되는 조건) 을 만족하지 않았다면 return 1 을 내보낸다.

테스트 단어의 개수만큼 loop 를 돌려 return 1 이 되는 그룹 단어의 count 를 누적한다.

 

 

 

 

 

코드 보기

import sys
inputdata = sys.stdin.readline
from collections import deque
 
 
def fnIsGroupWord(word):
    for i in range(len(word) - 1):
        w = word.popleft()
        
        if w != word[0] and w in word:
            return 0
        
    return 1
 
 
if __name__ == "__main__":
    n = int(inputdata().strip())
    count = 0
    for _ in range(n):
        word = deque(map(str, inputdata().strip()))
        
        count += fnIsGroupWord(word)
    
    print(count)