[SWEA] 전기버스 [PYTHON]
A도시는 전기버스를 운행하려고 한다. 전기버스는 한번 충전으로 이동할 수 있는 정류장 수가 정해져 있어서, 중간에 충전기가 설치된 정류장을 만들기로 했다.
버스는 0번에서 출발해 종점인 N번 정류장까지 이동하고, 한번 충전으로 최대한 이동할 수 있는 정류장 수 K가 정해져 있다.
충전기가 설치된 M개의 정류장 번호가 주어질 때, 최소한 몇 번의 충전을 해야 종점에 도착할 수 있는지 출력하는 프로그램을 만드시오.
만약 충전기 설치가 잘못되어 종점에 도착할 수 없는 경우는 0을 출력한다. 출발지에는 항상 충전기가 설치되어 있지만 충전횟수에는 포함하지 않는다.
한 3일 동안 문제를 이해하지도 못했다. 그런데 계속 보다 보니 알겠네.
헷갈리는건 while문 안의 for문에서 break를 쓰면 다시 while문 최상단으로 갈 수 있다는 거,,!! 왜 continue가 아니지 생각했지만 더 생각해야지.
for tc in range(1, int(input())+1):
K, N, M = list(map(int, input().split()))
charge = list(map(int, input().split()))
stop = [0] * (N+1)
idx = 0
cnt = 0
for i in charge: #stop에다가 충전소 위치를 담음
stop[i] = 1
while True:
idx += K
if idx >= N: # 정류소 위치가 N개를 넘지 않을동안
break
# 현재 위치로부터 K개 만큼 뺀 거리까지 충전소가 있으면
# cnt에 1을 추가하고 인덱스를 k로 바꾸기
for k in range(idx, idx - K, -1):
if stop[k] == 1:
cnt += 1
idx = k
break
# 충전소가 없다면 = for문을 거치지 않는다면 cnt = 0 , break
else:
cnt = 0
break
print('#{} {}'.format(tc, cnt))
호호호,,
알고리즘 2일차에게는
수능 30번 문제같았다.
Author And Source
이 문제에 관하여([SWEA] 전기버스 [PYTHON]), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@sin5015243/SWEA-전기버스-PYTHON저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)