Algorithm/코딩테스트 (Python)

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

싱브이 2023. 9. 22. 22:34
728x90
반응형

문제

A도시는 전기버스를 운행하려고 한다. 전기버스는 한번 충전으로 이동할 수 있는 정류장 수가 정해져 있어서, 중간에 충전기가 설치된 정류장을 만들기로 했다.
버스는 0번에서 출발해 종점인 N번 정류장까지 이동하고, 한번 충전으로 최대한 이동할 수 있는 정류장 수 K가 정해져 있다.
충전기가 설치된 M개의 정류장 번호가 주어질 때, 최소한 몇 번의 충전을 해야 종점에 도착할 수 있는지 출력하는 프로그램을 만드시오.
만약 충전기 설치가 잘못되어 종점에 도착할 수 없는 경우는 0을 출력한다. 출발지에는 항상 충전기가 설치되어 있지만 충전횟수에는 포함하지 않는다.

 

 

내 코드

T = int(input())
for test_case in range(1, T+1):
    K, N, M = list(map(int, input().split()))
    m = list(map(int, input().split()))
    cnt = 0
    now = 0
    while now + K < N:
        for k in range(K, 0, -1):
            if (now + k) in m:
                now += k
                cnt += 1
                break
        else:
            cnt = 0
            break
    print('#{} {}'.format(test_case,  cnt))

 

현재 위치에서 K 범위 만큼 이동하면서 충전기가 있으면 현재위치를 변경하고 cnt += 1

충전기 설치가 잘못되어 있으면 while문을 더이상 반복하지 않고 cnt 값을 0으로 초기화하고 종료.

 

 

for 변수 in range(시작값, 끝값, 증감크기):

예시)
for i in range(1,10,2):

    print(i)

#출력값 : 1 3 5 7 9

728x90
반응형