백준 > 그룹 단어 체커

SeiLyn·2023년 11월 6일

백준

목록 보기
4/17

❓ 문제

백준 실버5 문제 > 그룹 단어 체커

❗ 해결

테스트케이스에 주어진 단어를 시뮬레이션 해보았다.
시뮬레이션 할 단어는 그룹 단어가 아닌 경우를 테스트 해봤다. 이게 뭔가 답을 찾기 더 빠를거 같아서..

주어진 단어 : abcabc

  1. 에러를 체크할 Flag 변수(error_flag)를 선언하고, 맨 처음 단어를 중복 단어 체크용 리스트에 넣는다.
    check = [a]

  2. 그 다음부터 반복문을 돈다. 반복문은 처음 단어를 넣었으니 그 다음 단어부터 시작한다.
    반복문을 도는데, check랑 비교한다.
    check에 없으므로 b도 check에 넣고 넘어간다.
    check = [a,b]

  3. 그 다음 단어를 비교한다. c도 check에 없으니 넣어주고 넘어간다.
    check = [a,b,c]

  4. 그 다음 단어는 a이다. 일단 a는 리스트에 있으니, 연속 단어인지 아닌지 체크를 해봐야 한다.
    만약에 다음 단어가 c인 경우에 abcc가 되므로 그룹단어가 될 수 있다.
    바로 이전 단어와 비교를 해야 하는데, 나는 앞에 넣어준 바로 이전 단어인 c를 check[-1] 해서 비교해보았다.

  5. 만약 a가 이미 check에 있는데, check[-1]과 비교해도 같은 단어가 아닌 경우에는

  6. error_flag 값을 True로 설정하고, 해당 단어는 그만 비교한다.

  7. 해당 단어를 다 비교했을 때 error_flag값이 False인 경우에만 Count를 1씩 올려준다.

N = int(input())
words = [str(input()) for _ in range(N)]
check = []
error_flag = False
count = 0

for word in words:

    error_flag = False
    check = [word[0]]

    for i in range(1, len(word)):
        if word[i] not in check:
            check.append(word[i])
        # 큐에 있는 경우
        else:
            if check[-1] == word[i]:
                # 같은 단어인 경우에 넘어간다.
                check.append(word[i])
            else:
                # 다른 단어인 경우에는 flag값을 true로 설정 하고 반복문을 빠져 나간다.
                error_flag = True
                break
    # 반복문을 돌면서 error 가 없을 경우에만 count를 1 올려 준다.
    if error_flag == False:
        count += 1
print(count)

0개의 댓글