본문 바로가기

알고리즘/소프티어

[파이썬] Softeer 연습문제 #16. 스마트 물류 완벽해설

 

 

문제

 

 

https://softeer.ai/practice/6279

 

Softeer - 현대자동차그룹 SW인재확보플랫폼

현대자동차그룹은 주요 물류센터에 각종 자동화 기기를 도입하며 ‘스마트 물류’를 실현하고 있다. 최근에는 자동차 반조립 부품(KD, Knock-Down) 물류기지인 KD센터에 포장 관련 자동화 로봇 개발

softeer.ai

 

 

 

해설

 

이 문제는 우선 환경을 하나하나 탐색해나가는 과정이며, 로봇으로 하여금 가장 왼쪽에 있는 물건을 집도록 설정하면 집을 수 있는 최대 물건수를 셀 수 있게 된다.

 

따라서 물품과 기계로 이루어져 있는 리스트가 주어졌을 때, 하나하나 탐색하면서 만약 로봇일 경우 그 로봇을 토대로 가장 왼쪽부터 물품을 수색하며 집도록 하고, 물품을 집었을 경우 이를 기록한 후 다음 로봇으로 넘어가는 작업을 코드로 작성하면 된다.

 

 

 

코드

 

import sys

N, K = map(int, sys.stdin.readline().split())
env = list(input())
count = 0 # 집을 수 있는 최대 로봇 수를 담을 변수

for i in range(len(env)):
  # 로봇일 경우
  if (env[i]=="P"):
    # 현재 위치에서 -K와 +K 위치를 탐색한다.
    for j in range(i-K, i+K+1):
      # 탐색 위치를 유효한 위치 내로 규제한다.
      if (0 <= j < N):
        # 부품일 경우
        if (env[j] == "H"):
          # 부품을 줍고 그 부품 위치를 빈공간으로 대체한다.
          count += 1
          env[j] = "*"
          # 그리고 해당 로봇의 작동을 중지시킨다.
          break
        # 부품이 아닐 경우
        else:
          # 다음 루프를 돌린다.
          continue

print(count)

 

 

결과