본문 바로가기

알고리즘 문제풀이 (파이썬)/BOJ (Baekjoon Online Judge)

함수 활용 [BOJ 1316] 그룹 단어 체커 (파이썬 python)

파이썬 python 그룹 단어 체커 [BOJ 1316]

BOJ 1316번: 그룹 단어 체커

 

1316번: 그룹 단어 체커

그룹 단어란 단어에 존재하는 모든 문자에 대해서, 각 문자가 연속해서 나타나는 경우만을 말한다. 예를 들면, ccazzzzbb는 c, a, z, b가 모두 연속해서 나타나고, kin도 k, i, n이 연속해서 나타나기 때문에 그룹 단어이지만, aabbbccb는 b가 떨어져서 나타나기 때문에 그룹 단어가 아니다. 단어 N개를 입력으로 받아 그룹 단어의 개수를 출력하는 프로그램을 작성하시오.

www.acmicpc.net

그룹 단어의 개수를 구하기 위해 우선 그룹 단어인지 판별하는 함수를 만들었습니다.

  1. 그룹 단어 판별 함수 만들기
def is_group(string):
    checker = set()
    tempword = string[0]
    for i in range(1, len(string)):
        if string[i-1] == string[i]:
            pass
        else:
            tempword += string[i]
    for letter in tempword:
        if letter not in checker:
            checker.add(letter)
        else:
            return False
    return True

먼저 string을 받아와서 같은 문자가 연속해서 나올 때 그 문자를 하나만 남겨놓고, 결과값을 임시로 다른 문자열(tempword)에 담습니다.

​ tempword 안에서 다시 반복문을 사용하여 집합 자료형 변수(checker)에 글자를 하나씩 넣고, checker 내에 글자가 있다면 False를 반환합니다. False가 반환되지 않으면 True를 반환합니다.

 

  • 그룹 단어라면 - True, 그룹 단어가 아니라면 - False

  1. 그룹 단어의 개수 구하기
N = int(input())
counter = 0
for _ in range(N):
    word = input()
    if is_group(word) == True:
        counter += 1

print(counter)

 

​ 단어의 개수 N을 받아오고, N을 범위로 해서 반복문을 작성합니다. 그 안에서 새로 단어들을 input()으로 받아오고, is_group함수를 사용하여 그룹 단어임이 판별되면 counter를 하나씩 늘려줍니다.

전체 코드

def is_group(string):
    checker = set()
    tempword = string[0]
    for i in range(1, len(string)):
        if string[i-1] == string[i]:
            pass
        else:
            tempword += string[i]
    for letter in tempword:
        if letter not in checker:
            checker.add(letter)
        else:
            return False
    return True


N = int(input())
counter = 0
for _ in range(N):
    word = input()
    if is_group(word) == True:
        counter += 1

print(counter)