본문 바로가기

알고리즘 공부/백준 > Python3

[백준 파이썬] #1316: 그룹 단어 체커

https://www.acmicpc.net/problem/1316

 

1316번: 그룹 단어 체커

그룹 단어란 단어에 존재하는 모든 문자에 대해서, 각 문자가 연속해서 나타나는 경우만을 말한다. 예를 들면, ccazzzzbb는 c, a, z, b가 모두 연속해서 나타나고, kin도 k, i, n이 연속해서 나타나기 때

www.acmicpc.net

 

[문제 이해]

ccazzzzbb, kin, happy → 그룹 단어 O

aabbbccb, abab → 그룹 단어 X

즉 알파벳이 연속되는 경우는 상관없지만 똑같은 알파벳이 연속되지 않게 나타날 경우 그룹 단어가 아니다.

 

[풀이 생각]

- 알파벳이 리스트에 있지 않다면 해당 알파벳을 리스트에 넣어준다.

- 만약 해당 알파벳이 이전 알파벳과 같지 않고 리스트에 존재한다면 즉 abab와 같은 경우이므로 그룹 단어가 아니다.

 

 

[정답]

 

1. 단어의 개수 N을 입력받는다.

2. 그룹 단어의 개수를 측정할 count를 0으로 초기화한다.

3. 0~N-1동안 for문을 돌면서 word에 단어를 입력받는다.

4. 각 단어마다 알파벳을 담을 리스트 list와 그룹 단어의 유무를 판단할 point를 정의한다.

5. 먼저 word[0] 단어의 첫번째 알파벳을 list에 넣어준다. 만약 len(word)>1이라면 for문을 돌면서 만약 현재 알파벳이 이전 알파벳과 같지 않고 list에 없다면 point=1(그룹 단어가 아니라는 뜻)을 해주고 break한다. 만약 현재 알파벳이 list에 없다면 list에 현재 알파벳을 넣어준다.

6. for문을 다 마친 후 만약 point==0 이라면 즉 그룹 단어라면 count+=1을 해준다.

7. 최종적으로 count를 출력한다.