[BOF/Python] 1316번, 그룹 단어 체커
📜 문제
🔥난이도🔥

1차 풀이 ⭕
입력된 단어 중에 그룹 단어를 찾는 문제다.
그룹 단어는 aanb와 같이 각각의 알파벳이 연속된 단어이고, aabna와 같이 연속되지 않은 알파벳이 있으면 그룹 단어가 아니다.
단어에 있는 각 알파벳의 첫 번째 인덱스와 마지막 인덱스를 이용해 그룹 단어인지 파악하는 방법으로 문제를 풀었다.
-
입력받은 단어를 set() 함수로 중복 제거 (각 알파벳이 1개씩 남는다.)
-
알파벳의 첫 번째 인덱스와 마지막 인덱스 계산
-
첫 번째 인덱스와 마지막 인덱스까지의 길이와 알파벳의 수를 비교
그룹 단어인 경우 check +1
testaaaa에서 a의 첫 번째 인덱스는 4, 마지막 인덱스는 7이다.
7 - 4 + 1 = 4로 첫 번째와 마지막 인덱스까지의 길이가 4이고 a의 개수도 4이기 때문에 a가 모두 연속 알파벳이라는 것을 알 수 있다.
그룹 단어가 아닌 경우 내부 for 문 종료
testaaaaba에서 a의 첫 번째 인덱스는 4, 마지막 인덱스는 9이다.
9 - 4 + 1 = 6으로 첫 번째와 마지막 인덱스까지의 길이가 6이고 a의 개수는 5이기 때문에 a가 모두 연속되지 않는 것을 알 수 있다.
코드
import sys
N = int(input()) # 단어의 개수
sum = 0
# 단어의 개수만큼 반복
for _ in range(N):
# 단어 입력
group_word = sys.stdin.readline().rstrip()
check = 0 # 그룹 단어 체크 변수
# 단어에 존재하는 알파벳 종류 별 반복
for i in set(group_word):
# 첫 번째와 마지막 인덱스 위치
first_index = group_word.find(i)
last_index = group_word.rfind(i)
# 마지막 인덱스 - 첫 번째 인덱스 + 1 = 연속된 알바벳의 수
# 연속된 알파벳 수와 카운트된 알파벳 수가 다르면 내부 for 문 종료
if last_index - first_index + 1 != group_word.count(i):
break
check += 1
# 그룹 단어 체크 변수와 알파벳의 종류 수가 같으면 그룹 단어 수 증가
if len(set(group_word)) == check:
sum += 1
print(sum)
결과

현재 티어 🥈
