[백준] 그룹 단어 체커 1316번 - Python

GoshK·2022년 2월 1일
0

[백준] Python

목록 보기
2/27
post-thumbnail

[백준] 그룹 단어 체커 1316번

나의 풀이

N = int(input())
words = []
for i in range(N):
    words.append(input())
answer = N
for word in words:
    result = [False] * 26
    for i in range(len(word)):
        alphabet_idx = ord(word[i]) - ord('a')
        if result[alphabet_idx] and i > 0:
            if word[i] != word[i - 1]:
                answer -= 1
                break
            else:
                continue
        else:
            result[alphabet_idx] = True
print(answer)
  • 갯수를 입력받고, 갯수만큼 단어를 입력받고, words 리스트에 넣어준다.
  • answer 는 0부터 카운트 세는 방식이 아닌, 총 단어 개수에서 조건에 맞지 않는 단어의 개수만큼 빼기위해 N값을 저장하였다.
  • words 리스트를 돌면서 단어의 연속을 판별할 boolean 리스트를 알파벳 총 개수의 사이즈만큼 만들어주고, words 리스트에 있는 단어들을 순회한다.
  • 알파벳 a 가 인덱스 0을 가질수 있도록, 인덱스를 구하는 계산을한다.
  • boolean 리스트에서 해당 알파벳이 사용된 적이 없다(False) 라면, True 로 바꿔서 사용을 했다고 표시해준다.
  • i 가 0보다 크고, 해당 알파벳을 사용한 적이 있다면, 현재 위치의 알파벳과 전의 위치의 알파벳을 비교한다.
  • 만약 비교해서 같다면 연속되는 알파벳이기 때문에 넘어가고, 아니라면 동일한 알파벳이 연속되지 않는 단어이기 때문에 answer -1을 하고 break 를 통해 반복을 종료하고 다음 단어를 탐색한다.

0개의 댓글