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"이라는 단어는 그룹 단어라고 판별됩니다.
🤗파이팅입니다~ 여러분!!🤗
'백준 알고리즘' 카테고리의 다른 글
백준 - 6603번 로또 python 문제풀이 [Hellfer] (2) | 2023.11.21 |
---|---|
백준 - 11726번 2×n 타일링 python 문제풀이 [Hellfer] (0) | 2023.11.20 |
백준 - 1010번 다리놓기 python 문제풀이 [Hellfer] (2) | 2023.11.20 |
백준 - 9663번 N-Queen python 문제풀이 [Hellfer] (4) | 2023.11.20 |
백준 - 10026번 적록색약 python 문제풀이 [Hellfer] (0) | 2023.11.19 |
백준 - 1026번 보물 python 문제풀이 [Hellfer] (2) | 2023.11.18 |
백준 - 11399번 ATM python 문제풀이 [Hellfer] (2) | 2023.11.18 |
백준 - 2839번 설탕배달 python 문제풀이 [Hellfer] (2) | 2023.11.18 |