https://www.acmicpc.net/problem/1316
def group_word_checker(number):
word_count = number
count = word_count
for i in range(word_count):
word = input()
for j in range(len(word) - 1):
if word[j] == word[j + 1]:
pass
elif word[j] in word[j + 1:]:
count -= 1
break
print(count)
group_word_checker(int(input()))
한참을 고민하다가 문제를 결국 풀지 못하고 다른 답안을 보게 되었다.
파이썬에서 할 수 있는 배열 활용을 좀 더 잘했어야 했는데 아쉽게 느껴졌다.
pass 와 continue 정리 , (추가로 break)
시간복잡도를 고려하여 for문을 1번만 사용한 다른사람의 코드를 찾아보려고 했으나 찾지 못했다.
대신 팀원분이 새롭게 작성한 코드가 있어서 가져와보았다.
def group_word_check(word):
alphabet = [0] * 26
alphabet[ord(word[0]) - ord('a')] = 1
for i in range(1, len(word)):
if word[i] != word[i - 1]:
index = ord(word[i]) - ord('a')
if alphabet[index] == 1:
return 0
alphabet[index] = 1
return 1
size = int(input())
count = 0
for i in range(size):
count += group_word_check(input())
print(count)
알파벳인덱스를 만들어서 확인할 생각을 했다는 것이 신선했다. 좋은 해결방안이라고 생각하는데,
또 한편으로는 배열들을 더 선언해야해서 메모리적인 차원에서 효율적인지는 고민을 해봐야할 것 같다.