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부터 탐색함
'개발자 강화 > 코딩 테스트' 카테고리의 다른 글
[백준] 14888 연산자 끼워넣기 Python3 DFS (0) | 2024.11.15 |
---|---|
[백준] 2583 영역구하기 bfs 실1 (0) | 2024.11.14 |
[백준] 2468 안전영역 BFS (2) | 2024.11.12 |
[백준] 2573 - 빙산 BFS (Python3) (0) | 2024.11.10 |
[SQL] 없어진 기록 찾기 - JOIN (2) | 2024.11.09 |