코딩공부
[SWEA] sw expert academy - 4831
별의 별
2021. 7. 16. 17:31
[SWEA] sw expert academy - 4831 - 전기버스
https://swexpertacademy.com/main/learn/course/lectureProblemViewer.do
SW Expert Academy
SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!
swexpertacademy.com
문제는 위의 링크로 가면 볼 수 있습니다.
K = 한 번 충전으로 최대 이동수 , N =정류장 종점 , M =충전기가 설치된 정류장 번호
T = int(input())
for test_case in range(1, T + 1):
k,n,m = map(int, input().split())
num = list(map(int, input().split()))
charge = [0]*(n+1) // 충전소 배열 만들기
for i in num //충전소가 있는 곳에 1
charge[i] = 1
now = k // 현재 버스 위치
back = 치 // 충전 후 이동 할 수 있는 최대 수
count = 0
while True:
if now >= n: //현재 위치가 종점 이상이면 종료
result = count
break
elif charge[now] == 1 // 현재 위치에 충전소가 있다면
back = k // 있으면 뒤로 안가도 되니까 다시 원상복귀
count += 1 // 충전소 몇번 들리는지 체크
now += k
elif charge[now] == 0: // 현재 위치에 충전소가 없다면
now -= 1 // 현재 위치에서 back
back -= 1 // 이동할 수 있는 거리 줄이기
if back == 0: // 만약 이동거리가 0 즉 이동 불가면 종료
result = 0
break
print(f'#{test_case} {result}')
문제를 이해하고 구현하는데 상당히 어려운 문제다.
일단 이해는 해도 바로 코드를 만들기가 어려워서 다른 사람들의 코드를 참고했다.
거기서 가장 쉽고 직관적인 코드를 약간 변형을 했다.