본문 바로가기
백준 알고리즘

백준 - 1316번 그룹 단어 체커 python 문제풀이 [Hellfer]

by Hellfer 2023. 11. 19.
728x90

https://www.acmicpc.net/problem/1316

 

1316번: 그룹 단어 체커

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

www.acmicpc.net

🔷 알고리즘 분류 - 구현, 문자열, 난이도 - 실버 5

🔶문제 풀이 - 문자열을 이용한 풀이

# 사용자로부터 단어의 개수 n을 입력받습니다.
n = int(input())
# 그룹 단어의 개수를 저장할 변수 result를 선언하고 0으로 초기화합니다.
result = 0

# n번 반복하는 반복문을 시작합니다.
for _ in range(n):
    # 사용자로부터 단어 x를 입력받습니다.
    x = input()
    # 그룹 단어 체크에 사용할 변수 error를 선언하고 0으로 초기화합니다.
    error = 0

    # 단어 x의 길이 -1 만큼 반복하는 반복문을 시작합니다.
    for i in range(len(x)-1):
        # 현재 문자 x[i]와 다음 문자 x[i+1]이 서로 다른지 확인합니다.
        if x[i] != x[i+1]:
            # 현재 문자부터 그 뒤의 모든 문자를 새로운 문자열 check로 만듭니다.
            check = x[i+1:]
            # 새로운 문자열 check에서 현재 문자 x[i]가 나타나는 횟수를 확인합니다.
            if check.count(x[i]) > 0:
                # 만약 현재 문자 x[i]가 문자열 check에 있다면, error를 1 증가시킵니다.
                error += 1

    # 모든 문자를 확인한 후 error가 0이라면, 그 단어는 그룹 단어입니다.
    if error == 0:
        # 그룹 단어의 개수를 1 증가시킵니다.
        result += 1

# 모든 단어를 확인한 후, 그룹 단어의 개수를 출력합니다.
print(result)

🔶 초보자를 위한 생각주머니 키우기

🔸문제요약

 

이 문제는 사용자로부터 단어의 개수 n을 입력받고, n개의 단어를 각각 입력받습니다. 이 단어들 중에서 그룹 단어의 개수를 찾아 출력하는 문제입니다.

 

그룹 단어는 어떤 문자가 연속해서 나타나는 경우를 말합니다. 만약 어떤 문자가 한 번 이상 나타났다가 다시 나타나는 경우, 그 단어는 그룹 단어가 아닙니다.

🔸코드풀이

 # 단어 x의 길이 -1 만큼 반복하는 반복문을 시작합니다.
    for i in range(len(x)-1):
        # 현재 문자 x[i]와 다음 문자 x[i+1]이 서로 다른지 확인합니다.
        if x[i] != x[i+1]:
            # 현재 문자부터 그 뒤의 모든 문자를 새로운 문자열 check로 만듭니다.
            check = x[i+1:]
            # 새로운 문자열 check에서 현재 문자 x[i]가 나타나는 횟수를 확인합니다.
            if check.count(x[i]) > 0:
                # 만약 현재 문자 x[i]가 문자열 check에 있다면, error를 1 증가시킵니다.
                error += 1

 

 

예를 들어, "apple"이라는 단어가 입력되었다고 가정해 봅시다.

첫 번째 문자 'a'와 두 번째 문자 'p'는 다릅니다. 그래서 'a' 이후의 문자열 "pple"에서 'a'가 다시 나타나는지 확인합니다. 'a'는 "pple"에 나타나지 않으므로, 에러 카운트는 그대로입니다.


두 번째 문자 'p'와 세 번째 문자 'p'는 같습니다. 따라서 이 경우에는 아무런 조치도 취하지 않습니다.


세 번째 문자 'p'와 네 번째 문자 'l'은 다릅니다. 그래서 'p' 이후의 문자열 "le"에서 'p'가 다시 나타나는지 확인합니다. 'p'는 "le"에 나타나지 않으므로, 에러 카운트는 그대로입니다.


네 번째 문자 'l'과 다섯 번째 문자 'e'는 다릅니다. 그래서 'l' 이후의 문자열 "e"에서 'l'이 다시 나타나는지 확인합니다. 'l'은 "e"에 나타나지 않으므로, 에러 카운트는 그대로입니다.


결과적으로, "apple"이라는 단어는 그룹 단어라고 판별됩니다.

 

🤗파이팅입니다~ 여러분!!🤗

728x90