"""
정류장 0 ~ n+1
한번 충전으로 최대 k감
충전기 설치 m개의 정류장
최소 몇번으로 종점 도착
종점에 도착x == 0
"""
t = int(input())
for tc in range(1,t+1):
k,n,m = map(int,input().split()) # 5 10 3
arr = list(map(int,input().split())) # [1,3,5,7,9]
x = 0
cnt = 0
arr = [0] + arr + [n] # 마지막 n(종점)과 시작점(0)의 위치를 기록 [0,1,3,5,7,9,10]
for i in range(len(arr)):
# 버스가 앞으로 못갈 때
if arr[i] - arr[i-1] > k:
cnt = 0
break
# 버스가 앞으로 갈 수 있는데, k 만큼 이동 한 현재 위치가 충전기가 있는 정류장 보다 작을 때, 그 이전 충전기 위치로 간다
elif x + k < arr[i]:
x = arr[i-1]
cnt += 1
print(f'#{tc} {cnt}')
실수한점
1. 버스 정류장의 위치로만 했었음
시작점과 끝점도 같이 리스트로서 사용해야했음,
- 끝점을 명시하지 않으면 최대 거리로 딱 도착했을 때 횟수를 세지 않음
- 시작점을 명시하지 않으면, 리스트의 i번쨰가 제대로 비교가 되지 않아서 테스트케이스 중 9개만 맞게 됨
2. 버스가 앞으로 갈 수 있는 조건을 버스가 앞으로 못갈 때의 조건으로 처음에 코드를 짰었다.
'알고리즘 문제풀이' 카테고리의 다른 글
swea D2_11871 반복문자지우기 Python (0) | 2024.02.08 |
---|---|
Swea D3_16945. 베이비진 Python (0) | 2024.02.04 |
swea 11823. 이진탐색 Python (0) | 2024.02.01 |
swea 11825, 4843 특별한 정렬 Python (0) | 2024.02.01 |
swea 14889. 네 방향 탐색 D2 Python (0) | 2024.01.31 |