반응형
def solution(bridge_length, weight, truck_weights):
answer = 0
while(len(truck_weights)>0):
check = 0
pass_num = 0
for i in range(len(truck_weights)):
pass_num += 1
check += truck_weights[i]
if check > weight:
pass_num -= 1
break
for i in range(pass_num):
del truck_weights[0]
answer += bridge_length + pass_num - 1
return answer+1
위에 코드는 처음 시도했던 코드.
주어진 테스트 케이스는 모두 통과하였으나 채점에서 와장창 틀림.
위에 코드는 한번에 처리할수 있는 트럭의 수를 계산하고 그에따라 걸리는 시간을 더해나가면서 트럭의 리스트를 앞에서부터 제거하면서 []으로 만드는 코드다. 문제는 한번에 처리할수 있는 트럭을 계산한다는점에 있다.
5 | 5 | [1, 1, 1, 1, 1, 2, 2] | 14 |
위처럼 한번에 처리할수 있는 [1,1,1,1,1]을 처리하는 동안 그 다음 무게가 2인 트럭이 앞에 [1,1]이 통과하는 순간 다리에 들어올수 있다는 것을 고려하지 않았다.
def solution(bridge_length, weight, truck_weights):
waiting = truck_weights
passed = []
ing = []
time = 0
check = [0] * len(truck_weights)
while (len(check)>0):
if len(waiting)>0 and (sum(ing) + waiting[0]) <= weight:
ing.append(waiting[0])
del waiting[0]
time +=1
for i in range(len(ing)):
check[i] += 1
for i in range(len(ing)):
if check[i] == bridge_length:
passed.append(ing[0])
del ing[0]
del check[0]
break
answer = time + 1
return answer
문제에 주어진 예시대로 시간의 흐름에 따라 지나간 트럭, 통과중인 트럭, 대기중인 트럭을 체크해 가도록 코드를 바꿨다.
반응형
'코딩테스트 연습' 카테고리의 다른 글
프로그래머스_하샤드수_파이썬 (0) | 2020.12.22 |
---|---|
[카카오 인턴]키패드_누르기_파이썬 (0) | 2020.12.18 |
[프로그래머스]주식가격 (0) | 2020.12.10 |
[프로그래머스]멀쩡한사각형_python (0) | 2020.12.09 |
다시풀어본_크레인 인형뽑기 게임 (0) | 2020.12.08 |
댓글