프론트엔드 개발자 중규리 입니다 ദി ᷇ᵕ ᷆ ) 자세히보기

PS/문제풀이

백준 19941 햄버거 분배 Python

중규리 2024. 1. 17. 17:15

🐸 문제 정보

 

19941번: 햄버거 분배

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

www.acmicpc.net

 

🤖 알고리즘

그리디

 

⏱️ 풀이 시간

17.29m

 

📝 풀이

투포인터로 풀어야하는 문제인가..?하고 5분정도 삽질하다가 그리디로 해결했다.

생각보다 시간초과도 안나고 단순하게 풀 수 있는 문제였다.

 

  1. 왼쪽부터 오른쪽으로 탐색
    • 이때 테이블 리스트에는 왼쪽과 오른쪽에 k개 만큼 추가 요소가 있어야 함
      • 2번의 탐색 단계에서 의미 없는 조건문이 필요하지 않도록
  2. 현재 인덱스에 'P'가 나온 경우 주변 검색
    • 현재 인덱스부터 좌k 우k 에 'H'가 있다면, 그 'H'는 '-'로 바꿔서 다시 먹을 수 없게 함

 

🧑‍💻 나의 답

# pypy3

import sys
input = sys.stdin.readline

n, k = list(map(int, input().rstrip().split()))
table = ['-'] * k + list(input().rstrip()) + ['-'] * k
res = 0

for i in range(k, n + k):
    if table[i] == 'P':
        for j in range(i-k, i+k+1):
            if table[j] == 'H':
                table[j] = '-'
                res += 1
                break

print(res)

'PS > 문제풀이' 카테고리의 다른 글

백준 1446 지름길 Python  (0) 2024.01.17
백준 20310 타노스 Python  (0) 2024.01.17
백준 1515 수 이어 쓰기 Python  (0) 2024.01.16
백준 1757 달려달려 Python  (1) 2024.01.16
백준 1034 램프 Python  (0) 2024.01.15