Algorithm/BAEKJOON

[Python] 백준 #1316 그룹 단어 체커 - sorted()

patrck_jjh 2021. 11. 8. 20:31

<source>

https://www.acmicpc.net/problem/1316

 

1316번: 그룹 단어 체커

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

www.acmicpc.net

 

 

 

1. 반복문으로 해결

n = int(input())

cnt = n

for _ in range(n):
    word = input()
    for i in range(len(word) -1):
        if word[i] != word[i+1]:
            if word[i+1] in word[:i]:
                cnt -= 1
                
                break
print(cnt)

i번째 단어와 i+1번째 단어가 다른경우에

i+1번째 단어가 처음부터 i번째까지 문자열에 존재한다면 그룹단어 조건 위배

 

 

 

 

2. sorted() 활용

result = 0
for i in range(int(input())):
    word = input()
    if list(word) == sorted(word, key=word.find):   # str sort
        result += 1
print(result)

 

 

그룹 단어 조건 만족

 

=> word.find는 찾고자하는 특정 문자의 최초 등장 인덱스를 리턴

 

happy라는 문자열을 입력했을 때

sorted는 알파벳 순서로 정렬해주지만(reverse=True일 경우 반대로 정렬)

 

sorted에 key=str.find를 입력했을 때 특정 문자가 최초로 등장하는 순서를 지키면서 정렬함

 

 

 

그룹단어 위배되는 경우 정렬 예제