Koala - 11기/코딩테스트 준비 스터디

[백준/Python] 19941번: 햄버거 분배

계란소년 2023. 9. 3. 11:18

문제

https://www.acmicpc.net/problem/19941

 

19941번: 햄버거 분배

기다란 벤치 모양의 식탁에 사람들과 햄버거가 아래와 같이 단위 간격으로 놓여 있다. 사람들은 자신의 위치에서 거리가 $K$ 이하인 햄버거를 먹을 수 있다. 햄버거 사람 햄버거 사람 햄버거 사

www.acmicpc.net

풀이


문자열을 처음부터 끝까지 반복한다.


입력된 문자열에서 P를 찾는다.


P일때 거리가 k이하인 H를 앞뒤로 찾는다.


H가 없으면 다음 P로 넘어간다.


추가로  j가 0보다 작아지면 배열 시작 전의 요소를 찾고 있다는 뜻이므로 유효하지 않고,


j가 n보다 크거나 같게 되면 배열 끝 너머의 요소를 찾고 있다는 뜻이므로 유효하지 않기에,


j의 범위를 제한해준다.

이미 선택한 H는 다시 고르지 않는다.


H와 P를 연결한만큼 개수를 더한다.

코드

import sys
input = sys.stdin.readline

n, k = map(int, input().split())
arr = list(input().rstrip())
res = 0

for i in range(n):
    if arr[i] == 'P':
        for j in range(i - k, i + k + 1):
            if -1 < j < n: # 0 <= j < n 의 조건을 만족
                if arr[j] == 'H':
                    arr[j] = '-'
                    res += 1
                    break

print(res)