본문 바로가기

Problem Solving/boj

[BOJ] 1316. 그룹 단어 체커(Python)

 

1316번: 그룹 단어 체커

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

www.acmicpc.net

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

단어 N개를 입력으로 받아 그룹 단어의 개수를 출력하는 프로그램을 작성하시오.

  • 사용 알고리즘 : 문자열 + 구현
  • 코드 설명은 아래 주석에 달아 놓았다. for - else 문을 활용해 문제를 풀었다.

 

파이썬 코드는 다음과 같다.


from sys import stdin
input = stdin.readline

N = int(input())
answer = 0
for _ in range(N):
    word = input()
    check = set()
    check.add(word[0])
    for i in range(1, len(word)-1):
        if word[i-1] == word[i]:    # 전 문자와 같으면 넘기고
            continue
        elif word[i] not in check:  # 전 문자와 다른데, 처음 나온 문자라면
            check.add(word[i])      # check Set에 추가
        else:             # 전 문자와 다른데, 이미 나왔던 문자라면
            break         # break로 반복문 탈출
    else:   # 위 반복문에서 탈출해서 도달한 게 아니라면 그룹 단어이므로 += 1
        answer += 1
print(answer)

  • 시간 : 105ms / 메모리 : 122244kb
  • 고찰 : 간단한 문자열 문제였다! 10분 정도 소요.