728x90
풀이
직관적으로 막구현(?) 으로 풀었다.
n = int(input())
total_cnt = 0
for i in range(n):
s = input()
cnt = 0
arr = [] #나왔던 글자를 저장하는 리스트
for i in range(len(s)):
if i == 0: #인덱스 에러를 방지하기 위한 처리
arr.append(s[i])
continue
elif s[i] == s[i-1]: #연속으로 같은 글자가 나오는 경우 이미 앞에서 arr에 넣어줬으므로 continue
continue
elif s[i] not in arr: #만약 s[i]가 즉 처리하는 글자가 arr에 없다면 즉 한번도 안나왔다면 arr에 추가
arr.append(s[i])
elif s[i] in arr: #만약 s[i]가 즉 처리하는 글자가 arr에 있다면 cnt를 빼줌으로써 total_cnt에 변화가 없게 만든다
cnt -= 1
break
cnt += 1
total_cnt += cnt
print(total_cnt)
우선 파이썬은 코드가 위에서부터 아래로 순차적으로 처리되므로
첫줄에 index에러를 위한 예외처리를 해준다.
- 처음 나오는 글자는 당연히 arr 즉 나왔던 글자를 저장하는 리스트에 없을 것이므로 s[ i ]를 arr에 추가해준다.
- 그 다음에는 연속으로 같은 글자가 나오는 경우 이미 앞에서 arr에 넣어줬으므로 continue처리 해준다.
- 만약 s[ i ]가 즉 처리하는 글자가 arr에 없다면 즉 한번도 안나왔다면 arr에 추가해준다.
- 만약 s[i]가 즉 처리하는 글자가 arr에 있다면 cnt를 빼줌으로써 total_cnt에 변화가 없게 만든다.
마지막으로 전체 그룹단어를 체킹하는 total_cnt를 출력해주면 정답
'Algorithm' 카테고리의 다른 글
리트코드(LeetCode) 1번 두 수의 합(Two Sum) (1) | 2021.09.17 |
---|---|
백준 알고리즘 파이썬(Python) 1764번 듣보잡 (0) | 2021.09.15 |
리트코드(LeetCode) 5번 가장 긴 팬린드롬 부분 문자열(Longest Palindromic Substring) (0) | 2021.09.13 |
리트코드(LeetCode) 49번 그룹 애너그램(Group Anagrams) (0) | 2021.09.09 |
리트코드(LeetCode) 819번 가장 흔한 단어(Most Common Word) (0) | 2021.09.08 |