본문 바로가기

코딩테스트

4831. [파이썬 S/W 문제해결 기본] 1일차 - 전기버스

 

아니 기초문제에 있길래 얕봤는데,, 어떻게 접근해야할지 순간 막막했던 문제

 

여기서 핵심은 
현재 위치로부터 최대로 이동할 수 있는 범위 내에 정류장이 있으면 거기서 충전을 하고, 없으면 못하는 것이다.

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 한다.