[백준 19941번-파이썬] 햄버거 분배
알고리즘 공부/BOJ백준 풀이

[백준 19941번-파이썬] 햄버거 분배

http://acmicpc.net/problem/19941

{코드}

n, k = map(int, input().split())
placement = list(input())
ans = 0
for idx in range(n):
    if placement[idx] == 'P':
        for i in range(max(idx-k, 0), min(idx+k+1, n)):
            if placement[i] == 'H':
                placement[i] = 0
                ans += 1
                break
print(ans)

{설명}

이 문제는 간단히 사람의 위치에서 양쪽으로 k의 범위(±k)에서 가장 왼쪽에 있는 햄버거를 고르면 되는 문제입니다.

가장 왼쪽을 고르는 이유는 맨 마지막 위치에 사람이 있다면 그 사람은 왼쪽에서만 햄버거를 찾아야하기 때문에 최대한 오른쪽에 있는 것들을 먹지 않아야 뒤의 사람들의 선택지가 늘어나게 됩니다.

만약 햄버거를 찾았으면 해당 위치를 H나 P가 아닌 다른 값으로 바꾸고 답을 1 증가시키면 됩니다.