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 증가시키면 됩니다.
'알고리즘 공부 > BOJ백준 풀이' 카테고리의 다른 글
[백준 1062번-파이썬/Python] 가르침 (0) | 2021.06.04 |
---|---|
[백준 19942번-파이썬] 다이어트 (0) | 2021.05.08 |
[백준 10866번-C++] 덱 (0) | 2021.05.07 |
[백준 10845번-C++] 큐 (0) | 2021.05.07 |
[백준 1158번-C++] 요세푸스 문제 (0) | 2021.05.07 |