본문 바로가기
Tests/백준

[BOJ] 백준 그룹 단어 체커 1316번 파이썬

by 코딩하는 금융인 2021. 5. 9.

문제 백준 1316번 그룹 단어 체커


출처 : 백준 1316번 그룹 단어 체커

 

1316번: 그룹 단어 체커

그룹 단어란 단어에 존재하는 모든 문자에 대해서, 각 문자가 연속해서 나타나는 경우만을 말한다. 예를 들면, ccazzzzbb는 c, a, z, b가 모두 연속해서 나타나고, kin도 k, i, n이 연속해서 나타나기 때

www.acmicpc.net


나의 풀이 in Python3

N = int(input())
word = []
num = 0
for i in range(N):
    word.append(input().lower())

for i in word:
    # 해당 단어를 알파벳으로 리스트화하고 이 알파벳이 뒤에 반복되는지 여부 확인
    if list(i) == sorted(i, key = i.find):
        num +=1
print(num)

이 문제는 인덱싱을 통해서도 풀 수 있지만, 저는 sorted 함수의 key ~ find문을 활용하여 간단하게 풀어봤습니다.

연속해서 나오는 것은 상관없지만, 반복해서 나올 경우 그룹 단어로 채택이 안되기에 해당 단어를 단순 list화하였을 때와 sorted문을 통해 단어별로 정렬시켰을 때가 다른 지 여부를 count하여 풀었습니다.

 

#저의 설명력이 부족하여 이해가 안되실 분들을 위해

word = ['love', 'finally', 'grow', 'firefighter']
for w in word:
	print(sorted(w, key = w.find))

'''
['l', 'o', 'v', 'e']
['f', 'i', 'n', 'a', 'l', 'l', 'y']
['g', 'r', 'o', 'w']
['f', 'f', 'i', 'i', 'r', 'r', 'e', 'e', 'g', 'h', 't']
'''

예시를 보시면 아시듯이

sorted ~ key = ~find 문 활용시 단어를 알파벳으로 리스트화시킨 후 나온 순서대로 정렬시킨 것을 알 수 있습니다.

반복되는 알파벳이 나오지 않는 love, finally, grow는 원래 순서대로 알파벳이 list화되었지만

반복되는 알파벳이 나온 firefighter는 알파벳이 나온 순서대로 반복, 정렬되어 나왔습니다.

반응형

댓글