Base/Algorithm Study

[Python/파이썬] 백준 알고리즘 1316번 - 그룹 단어 체커

koh1018 2021. 8. 15. 15:29
반응형

 

 

 

<풀이>

N = int(input())

# 카운트를 처음부터 전체 단어의 개수인 N으로 두어
# 그룹 단어가 아닐 경우 하나씩 빼는 방식으로 접근할 것이다.
cnt = N
for _ in range(N):
    word = input()
    for idx in range(len(word)-1):
        # idx를 기준으로 앞뒤 단어가 다를 경우
        if word[idx] != word[idx+1]:
            # idx 뒤쪽 인덱스의 문자열에서 word[idx+1] 문자가 포함되어 있는 지 확인
            if word[idx+1] in word[:idx]:
                # 포함되어 있다면 연속해서 알파벳이 나타난게 아니므로 cnt를 하나 감소 (그룹 단어가 아니다)
                cnt -= 1
                # 그리고 break로 for문 탈출(다음 단어로 넘어감)
                break
print(cnt)

 

 

 

<핵심 정리>

1. 카운트 할 때 0으로 초기화하는 것이 아니라 전체 총량을 넣어놓고 하나씩 차감하는 방법도 있을 수 있다.

2. 앞뒤 인덱스의 값을 비교할 때 (idx-1)와 (idx)를 비교하는 것보다 (idx)와 (idx+1)을 비교하는 것이 낫다.

3. 어떤 문자가 문자열에 포함되어 있는지를 확인하고 싶을땐 .count()함수를 이용하는 것보다 if (문자) in (문자열)을 이용하는 편이 깔끔하다.

반응형