백준 1316 : 그룹 단어 체커 - 파이썬

낙원·2022년 11월 11일
1

Baekjoon

목록 보기
3/15
post-thumbnail

문제

그룹 단어란 단어에 존재하는 모든 문자에 대해서, 각 문자가 연속해서 나타나는 경우만을 말한다.

ccazzzzbb는 c, a, z, b가 모두 연속해서 나타나고, kin도 k, i, n이 연속해서 나타나기 때문에 그룹 단어이지만,
aabbbccb는 b가 떨어져서 나타나기 때문에 그룹 단어가 아니다.

단어 N개를 입력으로 받아 그룹 단어의 개수를 출력

해결 방안

  1. 알파벳 수만큼 크기 26의 배열을 0으로 초기화한다.
  2. 입력받은 단어를 하나씩 보면서 반복문을 돈다.
  3. 입력받은 적이 없는 문자일 경우 배열을 1 증가
  4. 입력받은 적이 있는 문자면서 한 칸 전의 문자와 다르면 flag를 1로
  5. 반복문을 마치고 flag가 0일 경우에만 cnt 1 증가
  6. cnt 출력

코드

n = int(input())
cnt = 0

for i in range(n):
    x = input()
    used = [0] * 26
    flag = 0

    for j in range(len(x)):
        if used[ord(x[j]) - ord('a')] == 0:
            used[ord(x[j]) - ord('a')] += 1
        else:
            if x[j] == x[j-1]:
                used[ord(x[j]) - ord('a')] += 1
            else:
                flag = 1
                break

    if flag == 0:
        cnt += 1

print(cnt)

입력받는 과정이나 0으로 배열을 초기화하는 과정이 뭔가 아직도 어색했다;;
확실히 백준 문제들을 파이썬으로 많이 풀어봐야겠다고 느꼈던 문제였다.
😂😂😂😂

0개의 댓글