오류:
글자를 appeared에 먼저 넣고 나서, 뒤이어 “이 글자가 예전에 나온 적 있니?”라고 물어보기 때문입니다. 방금 넣은 글자도 appeared에 들어있으니, 모든 새로운 글자가 나타날 때마다 answer -= 1이 작동하게 됩니다.
n = int(input())
answer = 0
for i in range(n):
string = input()
answer += 1
appeared = set() # {}는 딕셔너리로 인식
# for j in range(len(string)):
# if string[j] not in appeared: # appeared.add(string[j]) # if j > 0: # if string[j-1] != string[j] and string[j] in appeared: # answer -= 1 # break # 이 로직으로 가면 이전 문자 뿐 아니라 자기 자신도 appeared에 추가 된 채로 비교되어 틀림 - ba 처럼 앞 뒤 다르고 한 글자씩이면 false negative
# 오류 방지를 위해 이전에 저장된 appeared 문자와 비교를 마친 후에 없는 문자를 리스트에 추가해야 함 (셀프 비교 방지)
for j in range(len(string)):
if j > 0:
if string[j-1] != string[j] and string[j] in appeared:
answer -= 1
break
if string[j] not in appeared:
appeared.add(string[j])
print(answer)