1. 문제 설명
https://www.acmicpc.net/problem/1316
2. 아이디어
알고리즘 공부를 시작하고 처음 풀었던 문제였는데 전혀 어렵지 않은 문제였다.
그런데 아무래도 지금 다시 보니 코드가 깔끔하지 못한 게 눈에 띄어서 너무 거슬린다.
테스트 케이스 n만큼 반복문을 돌려주고, 한 글자면 바로 cnt를 1 증가시키고 종료하고
그게 아니라면 문자열 n번 인덱스와 n+1 인덱스를 비교했을 때 서로 다른 문자인 경우에
n번 인덱스 문자는 더이상 n+2번 인덱스 이후에 포함되어 있으면 안 되므로 이후 모든 인덱스와 비교하여
한번이라도 겹치는 문자가 나오면 False를 return하고 cnt를 증가시키지 않는다.
더 간단한 방법도 있고, 이보다 더 효율적인 코드를 쓸 수 있는 것이 이제는 보이지만
굳이 소 잡는 칼을 닭 잡는 데에 쓸 필요는 없으니까 심화 과정은 이후 문제에서 다루도록 하자.
3. 코드
def words_cmp(words, idx):
if (words[idx - 1] != words[idx]):
for tmp in range(0, idx, 1):
if words[tmp] == words[idx]:
return False
return True
def check_dup():
n = int(input())
cnt = 0
for i in range(0, n, 1):
words = input()
if len(words) == 1:
cnt += 1
continue
for j in range(1, len(words), 1):
if not words_cmp(words, j):
break
elif j == len(words) - 1:
cnt += 1
return cnt
print(check_dup())