# 문제상황
문자열 s가 있고, s에 있는 문자 하나 하나를 조사하고 싶을 때 우리는 보통 아래와 같은 코드를 자주 사용합니다.
for i in s:
위 코드에서 i에는 문자열 s에 담긴 '문자'들이 담기게 됩니다.
만일 i에 '문자'를 직접 받아오는 게 아니라, 문자열의 '인덱스'를 받아오고 싶다면 아래와 같이 코드를 짜면 됩니다.
for i in range(len(s)):
위 코드에서 실제 문자 값을 참조하고 싶다면 's[i]'와 같이 표기하면 되겠죠.
하지만 위 코드에는 한 가지 문제가 있습니다. i번째 인덱스를 참조하고 있을 때, 동시에 i + 1번째 인덱스를 참조하는 것이 불가능하다는 점입니다.
만일 i가 문자열 s의 마지막 인덱스를 참조하고 있을 경우, i + 1번째 인덱스를 참조하려고 시도하는 순간 문자열 s의 범위를 벗어나 에러가 뜨기 때문입니다.
# 해결
바로 아래와 같이 코드를 짜면 됩니다.
for i in range(len(s)-1):
이렇게 코드를 자면 i번째 인덱스를 참조할 때, i + 1번째 인덱스를 참조해도 에러가 뜨지 않습니다.
※ 이 문제를 3문장으로 요약하기
1. 문자열을 순서대로 조사하다가
2. 같은 문자가 연속해서 나왔다면
3. 그 이후의 문자열에 대해, 해당 문자가 또 다시 등장하는지를 판단하기
# 답
n = int(input())
ans = 0
for _ in range(n):
s = input()
idx = True
for i in range(len(s)-1):
if s[i] != s[i+1]:
new_s = s[i+1:]
if new_s.count(s[i]) > 0:
idx = False
break
if idx:
ans += 1
print(ans)
728x90
반응형
'Algorithm > BaekJoon' 카테고리의 다른 글
(파이썬) 백준 11729번 "하노이 탑 이동 순서" (0) | 2022.04.21 |
---|---|
(파이썬) 백준 2447번 "별 찍기 - 10" (0) | 2022.04.21 |
(파이썬) 백준 1157번 "단어 공부" (0) | 2022.04.20 |
(파이썬) 백준 11720번 "숫자의 합" (0) | 2022.04.20 |
(파이썬) 백준 4344번 "평균은 넘겠지" (0) | 2022.04.19 |