
아니 기초문제에 있길래 얕봤는데,, 어떻게 접근해야할지 순간 막막했던 문제
여기서 핵심은
현재 위치로부터 최대로 이동할 수 있는 범위 내에 정류장이 있으면 거기서 충전을 하고, 없으면 못하는 것이다.
T = int(input())
for test_case in range(T):
K, N, M = map(int, input().split())
stations = list(map(int, input().split()))
here = 0
count = 0
while here + K < N:
next_station = here # 현재 위치에서 가장 먼 충전소 탐색
for i in range(len(stations)):
if stations[i] <= here + K:
next_station = stations[i]
else:
break
if next_station == here:
count = 0
break
here = next_station
count += 1
print(f'#{test_case + 1} {count}')
코드 설명을 하자면, 종점 전까지 루프를 돌 예정이다.
충전기가 있는 정류장을 돌면서 현위치+최대거리 전에 정류장이 있으면 가장 멀리있는 곳으로 이동을 한다.
이후 현 위치를 거기로 바꾼 후 충전 횟수를 +1 하고 다시 루프를 돌린다.
만약 현위치+최대거리 내에 충전소가 없다면 충전이 불가하므로 count =0 으로 끝내고 break 한다.
'코딩테스트' 카테고리의 다른 글
| 4843. [파이썬 S/W 문제해결 기본] 2일차 - 특별한 정렬 D3 (0) | 2025.03.11 |
|---|