문제 :
https://www.acmicpc.net/problem/1316
1316번: 그룹 단어 체커
그룹 단어란 단어에 존재하는 모든 문자에 대해서, 각 문자가 연속해서 나타나는 경우만을 말한다. 예를 들면, ccazzzzbb는 c, a, z, b가 모두 연속해서 나타나고, kin도 k, i, n이 연속해서 나타나기 때
www.acmicpc.net
Code :
import sys
import string
# 입력으로부터 단어의 개수를 받아옵니다.
n = int(sys.stdin.readline())
# 알파벳 리스트를 생성합니다.
# string 모듈의 ascii_lowercase 상수를 사용하여 영어 소문자들을 포함하는 문자열을 가져옵니다.
# alphabet_list에는 소문자 알파벳들이 포함됩니다.
alphabet_list = list(string.ascii_lowercase)
# 그룹 단어의 개수를 저장할 변수를 초기화합니다.
result = 0
# 이전 단어를 저장할 변수를 초기화합니다.
input_2 = 3
# 입력된 단어의 개수만큼 반복합니다.
for _ in range(n):
# 입력된 단어를 받아옵니다.
input_1 = sys.stdin.readline().rstrip()
# 입력된 단어가 더 이상 변하지 않을 때까지 반복합니다.
while input_1 != input_2:
# 이전 단어를 현재 단어로 갱신합니다.
input_2 = input_1
# 각 알파벳에 대해 반복합니다.
for i in alphabet_list:
# 현재 알파벳을 두 번 연속해서 나타나는 부분을 찾습니다.
# 예를 들어, 'aa', 'bb'와 같이 같은 문자가 연속해서 나타나는 경우를 찾습니다.
# 그리고 이를 하나의 문자로 줄입니다.
# 따라서, 'ccaazz'를 'cazz'로 변경합니다.
input_1 = input_1.replace(i * 2, i)
# 그룹 단어인 경우 결과를 증가시킵니다.
# set을 이용하여 중복된 문자를 제거한 뒤, 길이를 비교하여 그룹 단어인지 확인합니다.
if len(set(list(input_1))) == len(list(input_1)):
result += 1
# 그룹 단어의 개수를 출력합니다.
print(result)
'코딩테스트 > 백준-Python' 카테고리의 다른 글
[백준 Python] 1193번 분수찾기 (실버5) (4) | 2024.04.03 |
---|---|
[백준 Python] 1269번 대칭 차집합(실버4) (0) | 2024.04.03 |
[백준 Python] 2941번 크로아티아 알파벳 (실버5) (0) | 2024.03.20 |
[백준 Python] 25206번 너의 평점은 (실버5) (0) | 2024.03.20 |