STUDY/Algorithm

[백준코딩_파이썬] 1316번_그룹 단어 체커

ez1n 2022. 4. 3. 05:06

 

[Python_그룹 단어 체커]

 

 


 

<STUDY>

 

📢 문제 📢

 

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

 

❔그룹 단어

 

   - 단어에 존재하는 모든 문자에 대해서, 각 문자가 연속해서 나타나는 경우만을 말한다.

 

 

❗아이디어

 

   - 연속하지 않은 동일한 문자가 나타나는 경우를 구한다.

 


 

<전체 코드>

 

import sys

num = int(sys.stdin.readline())
count = 0

for i in range(num):
    word = sys.stdin.readline()
    cnt = 0
    for j in set(word):
        li = [index for index,value in enumerate(word) if value == j] 
        if len(li) != 1: 
            for n in range(len(li)-1):
                if li[n+1] - li[n] > 1:
                    cnt += 1

    if cnt == 0:
        count += 1

print(count)

 


 

<코드 설명>

 

 

☝각 문자의 인덱스 찾기

 

for j in set(word):
    li = [index for index,value in enumerate(word) if value == j] # 같은 단어의 index

 

   - 각 단어(word)를 구성하는 문자들의 중복을 제거한다. (set 사용)

   - 문자별로 단어 안에서의 index를 찾아 리스트에 추가한다.

 

✌같은 문자가 여러개 존재하는 경우

 

if len(li) != 1: 
        for n in range(len(li)-1):
        	if li[n+1] - li[n] > 1:
                cnt += 1

 

   - 리스트의 길이가 1이 아닌 경우 서로 이웃한 index의 차가 1보다 큰 경우를 찾는다.

   - 연속하지 않은 여러 문자가 존재한다면 cnt를 1 증가시킨다.

 

👌그룹 단어 개수 찾기

 

if cnt == 0:
    count += 1

 

   - cnt가 0이라면 연속하지 않은 여러 문자들이 존재하지 않는다는 것이다.

   - 따라서 count(그룹단어 갯수)를 1 증가시킨다.

 


 

🔆백준 코딩 1316번🔆

 

👉ez1n github 구경하기👈

 

 

 

ez1n - Overview

Study -ing. ez1n has 5 repositories available. Follow their code on GitHub.

github.com