[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번🔆
'STUDY > Algorithm' 카테고리의 다른 글
[백준코딩_파이썬] 10250번_ACM 호텔 (0) | 2022.09.28 |
---|---|
[백준코딩_파이썬] 2869번_달팽이는 올라가고싶다 (2) | 2022.09.26 |
[백준코딩_파이썬] 2581번_소수의 합과 최솟값 (0) | 2022.03.30 |
[백준코딩_파이썬] 2893번_설탕배달 (0) | 2022.03.28 |
[백준코딩_파이썬] 10951번_A+B / 종결규칙이 없는경우 (0) | 2022.03.26 |