n=int(input()) #입력받을 단어 개수
arr=[]
cnt=0 #그룹단어 개수 저장
for i in range(n):
word=input()
arr.append(word[0]) #첫번째 알파벳 arr에 추가
for j in range(len(word)-1):
if word[j]!=word[j+1]:
arr.append(word[j+1])
if list(dict.fromkeys(word))==arr:
cnt+=1
arr=[] #arr 초기화
print(cnt)
if list(dict.fromkeys(word))==arr: 에서
처음엔 set(word)와 arr를 비교했었는데,
set()은 순서 상관 없이 중복을 없애는 함수라서 원하는 결과가 나오지 않았다.
그래서 list(dict.fromkeys(word)) 를 사용.
dictonary는 key값을 넣는 순서를 기억해서 리스트의 순서를 유지하면서 중복을 제거할 수 있음.
즉,
- set(): 순서 상관 없이 중복 없애는 함수
- list(dict.fromkeys()): 순서 유지하면서 중복 없애는 함수
이밖에 순서를 유지하면서 중복을 없앨 수 있는 방법들이 여럿 있는데 이것이 가장 기본적으로 많이 쓰는 방법이다.
'Back-end > 백준(python)' 카테고리의 다른 글
[백준/python] 2738번 행렬 덧셈: 행렬의 크기와 원소 받아 2차원 배열 만들기 (1) | 2023.10.24 |
---|---|
[백준/python] 25206번 너의 평점은: dictionary 이용 key값 받아 value 얻기 (1) | 2023.10.24 |
[백준/python] 2941 크로아티아알파벳 개수 (1) | 2023.10.24 |
★[백준/python] 10809번 알파벳찾기: ord(),chr() 아스키코드값 변환/ for-loop, find() (0) | 2023.10.24 |
[백준/python] 10811번: 바구니 뒤집기/ reverse(), [::-1] (0) | 2023.10.24 |