Programming/python
[Daily 코테] 백준 1316번: 그룹 단어 체커
mariej
2023. 9. 19. 17:10
https://www.acmicpc.net/problem/1316
1316번: 그룹 단어 체커
그룹 단어란 단어에 존재하는 모든 문자에 대해서, 각 문자가 연속해서 나타나는 경우만을 말한다. 예를 들면, ccazzzzbb는 c, a, z, b가 모두 연속해서 나타나고, kin도 k, i, n이 연속해서 나타나기 때
www.acmicpc.net
난이도 : Silver 5
First Try🎉
n = int(input()) # 입력받을 단어 수를 변수 n에 저장한다.
cnt = 0 # 그룹 단어를 셀 변수 cnt이다.
for _ in range(n): # n만큼 반복한다.
word = input()
answer = len(set(word)) # 단어의 문자 개수이다.
tmp = word[0]
diff = 1 # 단어의 각 문자를 하나씩 확인하면서 문자 종류가 바뀔 때마다 변수 diff가 하나씩 오를 것이다.
# 첫 문자가 tmp에 저장되었으므로, 공백에서 tmp로 바뀌었다.
# 첫번째 문자를 확인한 순간부터 diff는 하나 증가한 것이다.
for w in word: # 입력받은 단어의 문자를 하나씩 확인한다.
if tmp != w: # 이전 문자와 현재 문자 w가 서로 다르면 문자가 바뀌었으므로, diff를 1 증가시킨나.
diff += 1
tmp = w # 다음 문자를 확인하기 위해 tmp에 w를 저장한다.
if answer == diff: # 문자가 바뀐 횟수가 문자 종류 개수와 같다면 해당 단어는 그룹 단어이다.
cnt += 1
print(cnt)
처음에는 문자를 sort 시켜서 비교하면 되지 않을까 했지만, 생각해보니 cba와 abc도 그룹 단어이기에 옳지 않은 접근 방식이라는 것을 깨달았다.
결국 문자를 하나하나 확인하는 방법밖에 없다고 생각했고, 문자의 개수에 초점을 두기보다는 문자가 변화한 순간을 세려고 했다.