728x90
문제
풀이
T=int(input())
check_list=[] #나왔던 글자 넣는 리스트
check=0 #그룹 단어인지 체크 (1=그룹단어 0=그룹단어x)
cnt=0 #그룹 단어 숫자 세기
for i in range(T):
dan=list(input())
check_list.append(dan[0]) #첫번째 글자 먼저 리스트 삽입
if len(dan)>1:#단어가 한 글자가 아닐 경우
for i in range(1,len(dan)): #두번째 글자부터 끝까지 탐색
if dan[i]==dan[i-1]: #전 글자와 같은 글자일 경우 ->연속글자
check_list.append(dan[i])#나왔던 글자 넣는 리스트에 해당 글자 삽입
check=1#그룹 단어 처리
elif dan[i]!=dan[i-1] and (dan[i] in check_list):
#전글자와 연속이 아닌데, 글자 리스트에 해당 글자 존재할 경우 -> 그룹단어X
check=0 #그룹단어 X 처리
break
elif dan[i]!=dan[i-1] and (dan[i] not in check_list):
#연속글자가 아니고, 떨어져 나타난 적 없을 경우
check_list.append(dan[i]) #나왔던 글자 리스틑 삽입
check=1 #그룹단어 처리
elif len(dan)==1: #단어가 한글자이면 무조건 그룹 단어
check=1 #그룹단어 처리
check_list=[] #리스트 초기화
cnt=cnt+check #for문 끝나고 그룹단어 1 유지하면 그룹단어 -> cnt에 추가
check=0 #check 초기화
print(cnt)
알고리즘 설명:
1. 단어가 한 글자일 경우 1 나오게 처리
2. 단어가 여러 글자일 경우 단어를 한글자씩 탐색하면서 나왔던 글자 리스트에 삽입
3. 연속으로 같은 글자면 check = 1 유지
4. 연속으로 같은 글자 X면서 나왔던 글자리스트에 해당 글자가 존재 check=0 하고 break -> 그룹단어 X
5. 연속으로 같은 글자 X면서 나왔던 글자리스트에 해당 글자가 미존재 check =1 유지
6. for문 루프가 끝났을때 check =1이 유지되면 그룹단어로 cnt에 추가하여 그룹단어 숫자세기
'PS' 카테고리의 다른 글
[백준] 1929번 : 소수 구하기(에라토스테네스의 체)- 파이썬[Python] (0) | 2022.01.04 |
---|---|
[백준] 1002번 : 터렛(두 원의 위치 관계)- 파이썬[Python] (0) | 2022.01.04 |
[백준] 1934번 : 최소공배수(유클리드 호제법)- 파이썬[Python] (0) | 2021.12.29 |
[백준] 1789번 : 수들의 합 - 파이썬[Python] (0) | 2021.12.29 |
[백준] 11653번 : 소인수분해 - 파이썬[Python] (0) | 2021.12.29 |
댓글