코드1
n,k = map(int, input().split())
table = list(input())
res = 0
for i in range(len(table)):
if table[i] == "P":
for j in range(max(0,i-k), min(i+k+1,n)):
if table[j] == "H":
res += 1
table[j] = "E"
break
print(res)
코드2
# n: 문자열의 길이 (20000)
# k: 먹을 수 있는 길이
# 인덱스에 주의 (range over 방지할 것)
n,k = map(int, input().split())
table = list(input())
res = 0
for i in range(len(table)):
if table[i] == "P":
for j in range(i-k, i+k+1):
if 0 <= j <n:
if table[j] == "H":
res += 1
table[j] = "E"
break
print(res)
최대한 왼쪽에 있는 것만을 먹으면 많은 사람이 먹을 수 있다. index 범위에 대한 중요성을 다시금 깨달은 문제였다. 왜 최대값은 신경썼으면서 시작점은 0보다 작은 걸 신경 못쓴지 모르겠지만서도...
'백준' 카테고리의 다른 글
[백준] 1991번 트리 순회 파이썬 코드 (0) | 2024.03.02 |
---|---|
[백준] 25379번 피하자 파이썬 코드 (0) | 2024.02.27 |
[백준] 21756번 지우개 파이썬 코드 (0) | 2024.02.23 |
[백준] 28215번 대피소 파이썬 코드 (0) | 2024.02.22 |
[백준] 2531번 회전 초밥 파이썬 코드 (0) | 2024.02.22 |