문자열을 순회했을 때, 해당 문자가 전에 나온 문자가 아닌 문자열의 갯수를 구하라.
( 단, 같은 문자가 연속적으로 나왔을 때는 전에 나온 문자로 치지 않는다 )
ex)
aaabbaaccc (x)
aabbbcc (o)
문자열을 돌면서 해당 문자를 set
에 저장한다.
만약 해당 문자가 set
에 값이 있을 때,
1. 전의 값과 값이 동일하다면 현재 연속적이라는 의미이므로 통과다.
2. 만약 전의 값과 값이 동일하지 않다면 이미 나왔던 문자라는 뜻이므로 통과를 하지 못하고 종료해준다.
만약 set
에 값이 없다면 추가해준다.
🤡 1. s[i]
if s[i] not in hash_set:
# 을 해야 하는데
if s not in hash_set:
# 을 해버렸다.
🤡 2. not in
if s[i] not in~
# 이렇게 해야 하는데
if not s[i] in ~
# 이렇게 헷갈렸다.
n = int(input())
result = 0
for _ in range(n):
s = input()
hash_set = set()
flag = True
for i in range(len(s)):
if s[i] not in hash_set:
hash_set.add(s[i])
i += 1
elif s[i] in hash_set:
if s[i-1] == s[i]:
i+=1
elif s[i-1] != s[i]:
flag=False
break
if flag:
result+=1
print(result)
slicing을 이용해서 더 간편하게 풀이한 것 같다.
일치하지 않을 때, 뒤의 문자안에 있다면 빼준다.
n=int(input())
cnt=0
for _ in range(n):
word=input()
for i in range(len(word)-1):
if word[i]!=word[i+1]:
if word[i] in word[i+1:]:
n-=1
break
print(n)