백준 1316번 그룹 단어 체커 - Python

devmin24·2021년 3월 18일
0

⏳ 도전! 알고리즘

목록 보기
10/32

문제 링크 : https://www.acmicpc.net/problem/1316

문자열에 대한 문제이다.
연속되는 그룹 단어의 개수를 출력해야한다.
연속되는지 찾기 위해서 인덱스를 이용하여 풀면 될 것 같다.

풀이

  1. 그룹 단어가 있다면 횟수를 담아줄 변수 하나를 만들어둔다.
  2. 문제의 조건대로 처음엔 그룹 단어였어도 떨어져서 나타나면 그룹 단어가 아니기 때문에 error라는 변수를 만들어 체크해주기로 했다.
  3. 인덱스 값으로 한 글자씩 비교하는 for문을 만들어준다.
  4. error가 하나라도 있으면 그것은 그룹 문자가 아니다. 그렇기에 error가 0일 때 group_word에 +1씩 해주고 출력하였다.

해답

n = int(input()) 
group_word = 0

for _ in range(n):
    word = input()
    error = 0
    for index in range(len(word)-1): #인덱스 범위 생성 0부터 len(word)-1
        if word[index] != word[index+1]: #연속된 문자가 다를 때
            new_word = word[index+1:] # 현재 문자의 다음부터 문자열을 새로운 변수에 저장한다
            if new_word.count(word[index]) > 0: # 저장된 변수에 현재 문자가 하나라도 있으면
                error += 1 # 그룹문자가 아니기때문에 error +=1 을 해준다
    if error == 0: # error가 없으면 그룹문자이다. (연속된 문자는 에러가 없다.)
        group_word += 1
print(group_word)

처음에 문제를 읽고 머리로는 '이렇게 풀면 되겠구나!' 라고 생각은 쉬웠으나, 구현하는데 조금씩 막막함이 있었다.
몇 번을 헤매다가 해답을 찾아보니 '이런 방법도 있구나!' 하며 오늘도 또 한번 감탄을 한다.

profile
꾸준함, 열정 한 가득 챙겨 끝없는 목표를 향해 달려가는 개발자👩‍💻

0개의 댓글