Algorithm/백준

[백준] 1316_그룹 단어 체커

창모의 개발사전 2025. 8. 2. 21:34

 

백준 난이도 실버5 정도 되는 '그룹 단어 체커' 문제를 해결해보았다.

 

이 문제는 그룹 단어라고 해서 한 알파벳이 연속돼서 나타나 한 단어를 이룬 것이다.

즉 입력받은 문자열에서 각 문자를 하나씩 조건에 비교하며 그룹 단어인지 체크한 후 카운팅하는 방식으로 풀어나가면 된다.

 

[조건]

신경써야할 조건들은

  1. 이전 단어와 비교하여 같은 단어인지
  2. 해당 단어가 이미 사용된 적이 있는지
  3. 최종적으로 그룹 단어인지

이렇게 체크를 해서 카운트 할 수 있다.

 

 

PYTHON

 

import sys
input = sys.stdin.readline

num = int(input())
count = 0

 

기본 세팅을 해준다.

결과 값을 위해 count 변수 생성

for _ in range(num):
    str = input().strip()
    check = set() 
    prev_char = ''
    
    is_group = True

 

그 후 num의 값만큼 반복해서 문자열을 입력받고 매 반복 시마다 해당 문자열이 그룹 단어인지 체크를 한다.

-> 그러러면 for문을 하나 더 추가해서 문자열의 문자를 다 돌아야 함

 [조건1] 앞의 문자와 현재 문자를 비교하기 위해 prev_char 생성. -> 처음엔 빈값임

 [조건2] 해당 문자가 이미 사용됐는지 체크하기 위해 check변수를 set자료구조로 생성

 [조건3] 해당 문자열이 그룹 단어인지 체크하기 위한 변수 boolean 형태 is_group 생성

    for ch in str:
            if ch != prev_char:
                if ch in check:
                    is_group = False
                    continue
                check.add(ch)
            prev_char = ch

        if is_group:
            count += 1

 

각 문자를 돌면서 첫번째로 이전 문자와 같은지 체크를 한다.

다르다면 현재 문자를 사용했다고 체크 -> check 셋에 추가하는데

그 전에 또 하나의 조건을 줘서 이미 현재 단어가 check 셋에 존재한다면 사용했던 단어를 다시 사용했으니 그룹 단어의 조건을

충족하지 못하기 때문에 is_group을 False로 바꿔준 후 반복문을 탈출한다.(해당 문자열은 카운트하지 않고 넘김)

 

동일한 방식으로 입력받은 문자열들을 모두 체크한 후 

print(count)

 

카운트값을 출력하면 그룹 단어의 갯수를 출력함.

 

[전체코드]

import sys
input = sys.stdin.readline

num = int(input())

count = 0
for _ in range(num):
    str = input().strip()
    check = set() 
    prev_char = ''
    
    is_group = True

    for ch in str:
        if ch != prev_char:
            if ch in check:
                is_group = False
                continue
            check.add(ch)
        prev_char = ch
        
    if is_group:
        count += 1
    
print(count)

 

'Algorithm > 백준' 카테고리의 다른 글

[백준] 4134: 다음 소수  (1) 2025.08.09
[백준] 1436번: 영화감독 숌  (2) 2025.08.06
[백준] 2839번: 설탕 배달  (4) 2025.08.05
[백준] 1193번: 분수찾기  (5) 2025.08.04
[백준_BOJ] 10828번 : 스택  (1) 2024.10.03