728x90
이 문제의 핵심은 사람은 K만큼 "왼쪽"에 떨어져 있는 햄버거를 먹는 것이다.
사람이 만약 맨 오른쪽에 있다면 그 전 사람이 본인의 오른쪽 햄버거를 먹었다면 가장 오른쪽 사람이 먹을 수 있지만 못 먹는 경우가 생길 수 있기 때문이다.
그리고 앞으로 input을 쓸 때 시간을 줄기이 위해 import sys 를 통해 input = sys.stidn.readline 으로 쓰는 습관을 들여야겠다.
import sys
input = sys.stdin.readline
n, k = map(int,input().split())
S = input().rstrip()
eat_list = list(S)
cnt = 0
for i in range(len(eat_list)):
if eat_list[i] == "P": #만약 사람이 나온다면
for j in range(i-k, i+k+1): #사람에서 k만큼 왼쪽에서 k만큼 오른쪽을 살펴본다.
if 0 <= j < n and eat_list[j] == "H": #만약 사람이 맨 처음에 나온다면 j가 -1이 될수도 있으므로 and 좌측조건 추가
cnt += 1
eat_list[j] = "0"
break #두번째 for문에서 빠져나온다.
print(cnt)
'Algorithm' 카테고리의 다른 글
백준 알고리즘 파이썬(Python) 16162번 가희와 3단 고음 (0) | 2021.06.12 |
---|---|
백준 알고리즘 파이썬(Python) 13413번 오셀로 재배치 (0) | 2021.06.08 |
백준 알고리즘 파이썬(Python) 2847번 게임을 만든 동준이 (0) | 2021.06.02 |
백준 알고리즘 파이썬(Python) 20365번 블로그2 (0) | 2021.06.01 |
백준 알고리즘 파이썬(Python) 20300번 서강근육맨 (0) | 2021.05.27 |