본문 바로가기

개발자 강화/코딩 테스트

[백준] 19941 햄버거

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

n, k = map(int, input().split())
s = list(input())  # 문자열을 리스트로 변환
ans = 0

# 모든 사람의 위치에서 가장 가까운 햄버거를 탐색
for i in range(n):
    if s[i] == 'P':  # 현재 위치에 사람이 있는 경우
        # i-K부터 i+K까지의 범위에서 햄버거를 탐색
        for j in range(max(0, i - k), min(n, i + k + 1)):
            if s[j] == 'H':  # 햄버거가 있다면 먹음
                s[j] = '0'  # 해당 햄버거를 '먹음' 상태로 변경
                ans += 1
                break

print(ans)

햄버거 분배

 

현재 사람 위치에서 i-k, i+k 사이에 햄버거 있는지 확인하고

해당 햄버거를 먹음 상태로 변경

햄버거 먹었으면 먹은 사람 수 ans 증가

 

최종적으로 ans return

 

현재 위치에서 왼쪽에 있는 햄버거를 먹을 수 있으면 먹어두는 게

뒷 순서 사람들이 햄버거를 먹을 때 최적의 경우로 먹을 수 있음

그래서 i-k부터 탐색함