D3
Problem
SW Expert Academy
SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!
swexpertacademy.com
Solution
1. 정거장 배열을 만들어 충전소를 저장한다.(충전소를 인덱스로 하여 충전소가 있으면 1 없으면 0)
2. 이동 후 충전소의 위치를 확인하고, 충전소가 충분한 거리만큼 위치하지 않으면 0, 아니면 최소 충전 횟수를 출력한다.
3. 만약 충전소가 충분한 거리 내에 있었다면, 가장 마지막 충전소에서 충전한 것으로 가정하고 위치를 마지막 충전소로 지정한다.
Code
for test_case in range(1, int(input()) + 1):
K, N, M = map(int, input().split())
charge_list = list(map(int, input().split()))
# 정거장 배열 만들기
N_list = [0] * (N + K)
# 정거장에 충전소 설치
for i in charge_list:
N_list[i] += 1
i = count = 0
# 충전한 후 거리가 충분하면 멈춤
while i+K < N:
# 만약 이동할 수 있는 정거장 안에 충전소가 있으면 충전
for j in range(i+K, i, -1):
if N_list[j] == 1:
# 충전횟수 +
count += 1
break
else:
# 주행 가능 거리 중 충전소가 없으면 횟수를 0으로 초기화
count = 0
break
# 움직일 수 있는 기준 초기화
# 반복을 거꾸로 돌려 가장 마지막에서 가까운 충전소에서 충전 후 운행
i = j
# 충전 횟수 출력
print(f'#{test_case} {count}')
<부족한 부분을 댓글로 남겨주시면 저에게 도움이 됩니다!>
반응형
'Algorithm > SW Expert Academy Review' 카테고리의 다른 글
9490. 풍선팡 (2) | 2023.03.05 |
---|---|
1208. [S/W 문제해결 기본] 1일차 - Flatten (0) | 2023.03.05 |
16180. 4834. [파이썬 S/W 문제해결 기본] 1일차 - 숫자 카드 (0) | 2023.03.05 |
1206. [S/W 문제해결 기본] 1일차 - View (0) | 2023.03.05 |
16504. Gravity (0) | 2023.03.05 |