문제
https://softeer.ai/practice/6279
해설
이 문제는 우선 환경을 하나하나 탐색해나가는 과정이며, 로봇으로 하여금 가장 왼쪽에 있는 물건을 집도록 설정하면 집을 수 있는 최대 물건수를 셀 수 있게 된다.
따라서 물품과 기계로 이루어져 있는 리스트가 주어졌을 때, 하나하나 탐색하면서 만약 로봇일 경우 그 로봇을 토대로 가장 왼쪽부터 물품을 수색하며 집도록 하고, 물품을 집었을 경우 이를 기록한 후 다음 로봇으로 넘어가는 작업을 코드로 작성하면 된다.
코드
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)
결과
'알고리즘 > 소프티어' 카테고리의 다른 글
[파이썬] Softeer 연습문제 #18. 택배 마스터 광우 완벽해설 (1) | 2024.01.04 |
---|---|
[파이썬] Softeer 연습문제 #17. H-클린알파 완벽해설 (1) | 2024.01.03 |
[파이썬] Softeer 연습문제 #15. 지도 자동 구축 완벽해설 (2) | 2023.12.31 |
[파이썬] Softeer 연습문제 #14. 동계 테스트 시점 예측 완벽해설 (2) | 2023.12.30 |
[파이썬] Softeer 연습문제 #13. 8단 변속기 완벽해설 (0) | 2023.12.20 |