이 문제는 우선 환경을 하나하나 탐색해나가는 과정이며, 로봇으로 하여금 가장 왼쪽에 있는 물건을 집도록 설정하면 집을 수 있는 최대 물건수를 셀 수 있게 된다.
따라서 물품과 기계로 이루어져 있는 리스트가 주어졌을 때, 하나하나 탐색하면서 만약 로봇일 경우 그 로봇을 토대로 가장 왼쪽부터 물품을 수색하며 집도록 하고, 물품을 집었을 경우 이를 기록한 후 다음 로봇으로 넘어가는 작업을 코드로 작성하면 된다.
코드
import sys
N, K = map(int, sys.stdin.readline().split())
env = list(input())
count = 0 # 집을 수 있는 최대 로봇 수를 담을 변수
for i in range(len(env)):
# 로봇일 경우
if (env[i]=="P"):
# 현재 위치에서 -K와 +K 위치를 탐색한다.
for j in range(i-K, i+K+1):
# 탐색 위치를 유효한 위치 내로 규제한다.
if (0 <= j < N):
# 부품일 경우
if (env[j] == "H"):
# 부품을 줍고 그 부품 위치를 빈공간으로 대체한다.
count += 1
env[j] = "*"
# 그리고 해당 로봇의 작동을 중지시킨다.
break
# 부품이 아닐 경우
else:
# 다음 루프를 돌린다.
continue
print(count)