반응형
https://www.acmicpc.net/problem/19941
19941번: 햄버거 분배
기다란 벤치 모양의 식탁에 사람들과 햄버거가 아래와 같이 단위 간격으로 놓여 있다. 사람들은 자신의 위치에서 거리가 $K$ 이하인 햄버거를 먹을 수 있다. 햄버거 사람 햄버거 사람 햄버거 사
www.acmicpc.net
내 코드
import sys
input = sys.stdin.readline
n, k = map(int, input().split())
s = list(input().rstrip())
cnt =0
for i in range(n):
if s[i] == 'P':
for j in range(i-k, i+k+1):
if -1 < j < n and s[j] == 'H':
s[j] = '0'
cnt +=1
break
print(cnt)
코드 리뷰
생각보다 간단하게 구현할 수 있는 문제였다.
문제의 핵심은 해당 범위 내에 H(햄버거)가 있는지 찾는지를 구현하는 것이다.
for i in range(n):
if s[i] == 'P':
for j in range(i-k, i+k+1):
if -1 < j < n and s[j] == 'H':
s[j] = '0'
cnt +=1
break
코드를 보면 S라는 전체 배열을 돌려주는데, 여기서 사람을 발견하면 (i-k, i+k+1) , 즉 k 범위 안의 상태를 체크한다.
그리고 j가 n이라는 최대 범위를 벗어날 수 있으므로, if 문 안에서 먼저 체크해주고 이후 글자가 햄버거인지 체크한다.
그리고 만약 햄버거일 경우 더이상 중복으로 확인되지 않도록 문자를 바꿔준다.
반응형
'코딩테스트 대비 > 백준(BOJ)' 카테고리의 다른 글
| [Python][백준/BOJ] 11724번 : 연결 요소의 개수 (0) | 2023.07.31 |
|---|---|
| [Python][백준/BOJ] 20920번 : 영단어 암기는 괴로워 (0) | 2023.07.30 |
| [Python][백준/BOJ] 19637번 : IF문 좀 대신 써줘 (0) | 2023.07.30 |
| [Python][백준/BOJ] 5014번 : 스타트링크 (0) | 2023.07.30 |
| [Python][백준/BOJ] 7562번 : 나이트의 이동 (0) | 2023.07.26 |