Hey Tech
문자열처리 #백준1316 #그룹 단어 체커 | 파이썬 풀이 본문
728x90
반응형
📚 문제
링크: https://www.acmicpc.net/problem/1316
💡 접근법
본 문제 풀이에 있어서는 2가지를 체크하는 것이 가장 중요합니다.
✅ 첫째, 단어 내 어떤 알파벳의 기(旣, already) 등장여부
✅ 둘째, 단어 내 어떤 알파벳 이전 알파벳과 같은지 여부
즉, 그룹 단어란 어떤 알파벳이 최초로 한 번만 등장했거나 2번 이상 등장할 경우 연속해서 등장해야만 합니다.
이 점만 유념하시면 쉽게 문제를 푸실 수 있습니다.
💻 코드
# https://www.acmicpc.net/problem/1316
import string
input_string = [input() for _ in range(int(input()))]
alphabet_dict = dict()
answer = 0
for word in input_string:
word_len = len(word)
if word_len < 3: # 문자열 길이가 2 이하인 경우는 그룹 단어
answer+=1
continue
# 알파벳 출현여부 저장할 딕셔너리 생성
for alphabet in string.ascii_lowercase:
alphabet_dict[alphabet] = 0
# 단어 내 좌측부터 한 글자씩 인덱싱
for i in range(word_len):
# 마지막 글자까지 인덱싱한 경우
if i == word_len - 1:
# 최초 등장한 알파벳이거나 동일한 알파벳이 연속해서 등장한 경우는 그룹 단어
if alphabet_dict[word[i]] == 0 or word[i-1] == word[i]:
answer+=1
break
elif alphabet_dict[word[i]] == 0: # 최초 등장한 알파벳인 경우
alphabet_dict[word[i]] = 1 # 알파벳 등장 체크
continue
# 기존에 등장한 알파벳이지만 해당 알파벳과 그룹핑이 안되는 경우(직전 알파벳이 종류가 다른 경우)
elif alphabet_dict[word[i]] == 1 and word[i-1] != word[i]:
# 그룹 단어 아님
break
print(answer)
✅ 정답 확인
👨💻 파이썬 파일(Github)
https://github.com/park-gb/algorithm-problem-solving/blob/main/string/boj_1316.py
포스팅 내용에 오류가 있거나 조언/지적/피드백 환영입니다!😄
아래에 👇👇👇 댓글 남겨주시면 감사드리겠습니다.
그럼 오늘도 즐겁고 건강한 하루 보내시길 바랍니다 :)
고맙습니다.
728x90
반응형
'알고리즘 > 문제풀이' 카테고리의 다른 글
Greedy알고리즘 #백준11399 #ATM | 파이썬 풀이 (0) | 2021.10.14 |
---|---|
문자열처리 #백준11718 #그대로 출력하기 | 파이썬 풀이 (0) | 2021.10.13 |
문자열처리 #백준1427 #소트인사이드 | 파이썬 풀이 (0) | 2021.10.11 |
문자열처리 #백준1157 #단어 공부 | 파이썬 풀이 (0) | 2021.10.09 |
문자열처리 #백준10809 #알파벳 찾기 | 파이썬 풀이 (0) | 2021.10.08 |