알고리즘

[백준, 파이썬, 15886번] 내 선물을 받아줘 2

hminor 2023. 9. 14. 10:34

 

풀이

 

  • 처음엔 단순히 같은 값으로
  • 예를 들어 'EE', 'WW'의 경우 카운팅을 해주는 형식으로 했지만 어림도 없었고
  • 이후 'EW'의 경우 카운팅을 해주고자 하니
  • 'WE'의 경우엔 서로 다른 방향으로 가니 컨트롤 하기가 어려워서 고민하다가
  • 그냥 반복문을 돌리면서 visit로 방문 체크를 하며 확인해볼까 해서 풀어보니 해결!

 

import sys
from collections import deque
input = sys.stdin.readline

n = int(input())
li = list(input().rstrip('\n'))
visit = [0]*n
result = 0

for i in range(n):
    if not visit[i]:
        q = deque([i])
        visit[i] = 1
        while q:
            s = q.popleft()
            if li[s] == 'E' and not visit[s+1]:
                visit[s+1] = 1
                q.append(s+1)
            elif li[s] == 'W' and not visit[s-1]:
                visit[s-1] = 1
                q.append(s-1)
        if li[i] != li[i-1]: result += 1
print(result)