728x90
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 | #리얼 이동하며 확인하고 뒤로갔다 앞으로갔다 T =int(input()) for tc in range(1,T+1): #K : 이동 가능 거리 #N : 마지막 종점 위치 #M : 충전소의 개수 K, N, M =map(int,input().split()) charge =map(int,input().split()) bus_stop = [0] * (N+1) #================================================= 충전소 표시. # for i in range(M): # bus_stop[charge[i]] = 1 for i in charge: bus_stop[i] = 1 bus = 0 #버스 위치 ans = 0 #충전 회수 while True: #버스가 이동할 수 있는 만큼 이동을 하자. bus += K if bus >= N : break # 종점 도착 or 종점을 지나 더 나아감 for i in range(bus, bus-K, -1): #if bus_stop[i] == 1: if bus_stop[i]: # 답이 있냐? 1이냐? 그럼 true ans += i bus = i break #충전기를 못 찾을때 else: ans = 0 break print("#{} {}".format(tc, ans)) #====================================================================================================================== #[0,1,3,5,7,9,10] last = 0 # 충전기의 사이 값이 k 값보다 커버리면 그냥 바로 종료 # 만약에 전부 갈수있다면? 일단 가보는 것. # 버스의 위치 (last = 0) + k # 정류장이 없는 위치 무시, 충전기위치 확인해서 간소하게 이동하는 방법이다. T =int(input()) for tc in range(1,T+1): K, N, M =map(int,input().split()) charge =map(int,input().split()) ans = 0 #아래 3개 모두 같은 코드 charge= [0] + charge + [N] #charge.insert(0,0) #charge.append(N) last = 0 #충전소에 출발점과 도착지를 넣어 놓았으므로 for i in range(1, M+2): if charge[i] - charge[i-1] > K: ans = 0 break #갈 수 있으면 아무작업 X #갈 수 없다면 내 바로직전 충전소로 위치를 옮기고 횟수 1회 증가 if charge[i] > last + K: last = charge[i-1] ans += 1 print("#{} {}".format(tc, ans)) | cs |
728x90