[Softeer] 스마트 물류

Gaanii·2024년 11월 1일

Problem Solving

목록 보기
95/210
post-thumbnail

문제링크


스마트 물류



풀이과정


정말 무식하게 푼걸까 싶으면서도 내 생각엔 나름 빠르게 한 것 같은데 ^^...

N값이 그렇게 크지 않으니 완전탐색 ? 렛츠고

현재 위치를 기준으로 앞뒤로 K만큼을 탐색하자는 생각이었다. 2중포문으로 해결 가능 !

  • 현재 위치가 로봇, P인 경우에만 탐색을 하면 된다.
  • 현재 위치에서 -K, +K 범위를 볼것인데, 만약 i==j이거나, j < 0 or j >= N인 경우 continue로 넘어가줬다. 왜냐하면 i==j는 같은 곳을 체크하는 것이고, j < 0 or j >= N는 없는 곳을 탐색해야하기 때문!
  • 그 후에 부품, H를 만났고, 이것이 다른 로봇에게 집혀가지 않았다면 현재 로봇이 이 부품을 집었다는 것이기 때문에 pick_items[j]를 True로 바꿔주면 된다.

코드


import sys
from collections import Counter

N, K = map(int, input().split())
lines = list(sys.stdin.readline().rstrip())
# print(lines)

pick_items = [False] * N

for i in range(N):
    if lines[i] == 'P':
        for j in range(i-K, i+K+1):
            if i == j or j < 0 or j >= N:
                continue
            if lines[j] == 'H' and not pick_items[j]:
                pick_items[j] = True
                break

result = 0
for i in pick_items:
    if i == True:
        result += 1

print(result)


결과


정답

0개의 댓글