AngelPlayer`s Diary

링크

https://swexpertacademy.com/main/learn/course/lectureProblemViewer.do

 

SW Expert Academy

SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!

swexpertacademy.com

 

 

 

문제 해석

T : 노선 수

 

K : 한 번의 충전으로 이동할 수 있는 정류장 수

N : 종점

M : 충전기가 설치된 정류장 개수

 

몇 번을 충전해야 종점에 도착할 수 있는지를 출력하라.

(이때 충전소의 거리보다 한 번 충전했을 때 이동 가능한 거리가 더 짧은 경우 0으로 취급한다.)

 

 

input

# line 0 : T

# line 1 : K, N, M

# line 2 : 충전기 정류장 위치

 

코드

import sys
sys.stdin = open("4831_input.txt", "r")
# input
T = int(input())
result = [0 for _ in range(T)]
for test_case in range(1, T + 1):
K, N, M = map(int, input().split())
chargeStation = list(map(int, input().split()))
chargeStation.append(N) # 연산을 쉽게 하기 위해 종점 정보를 충전 역 리스트에 추가
# process
k = K # 충전량
location = 0 # 현재 위치
for location in range(1, N):
k = k-1
if location in chargeStation:
idx = chargeStation.index(location)
if idx != M and k < chargeStation[idx + 1] - chargeStation[idx]: # 충전량보다 충전기 거리가 먼 경우
if K < chargeStation[idx + 1] - chargeStation[idx]:
result[test_case - 1] = 0
break
else:
k = K
result[test_case - 1] = result[test_case - 1] + 1
# output
print(f"#{test_case} {result[test_case-1]}")
view raw swea_4831.py hosted with ❤ by GitHub

 

 

 

코드 해석

# input

충전역 리스트 마지막에 연산이 수월하도록 종점을 추가하였다.

 

 

# process

충전역에 도달하였을 때, 남은 주행 가능 거리(k)보다 다음 충전역까지의 거리가 더 먼 경우 충전을 한다.

이때 다음 충전역까지의 거리가 충전 시 주행 가능거리보다 멀면 결과를 0으로 한다.

 

 

# output

 

 

 

발생한 문제 & 해결 방안

문제의 조건 중 " 이때 충전소의 거리보다 한 번 충전했을 때 이동 가능한 거리가 더 짧은 경우 0으로 취급한다. "를 제대로 읽지 않고 수행하여 잘못된 코드를 작성하였다.

 

 

 

 

 

 

해당 코드는 에디터가 코드 연습을 위해 직접 작성하였습니다.

혹시 오류가 있거나 더 좋은 코드 방향성을 아시는 분은 댓글로 남겨주시면 감사하겠습니다!

공유하기

facebook twitter kakaoTalk kakaostory naver band