Notice
Recent Posts
Recent Comments
Link
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Tags
more
Archives
Today
Total
관리 메뉴

찌로그

[프로그래머스] level2 다리를 지나는 트럭 2020_05_29 Python3 본문

Coding

[프로그래머스] level2 다리를 지나는 트럭 2020_05_29 Python3

찌드 2020. 5. 29. 23:38

https://programmers.co.kr/learn/courses/30/lessons/42583

 

코딩테스트 연습 - 다리를 지나는 트럭

트럭 여러 대가 강을 가로지르는 일 차선 다리를 정해진 순으로 건너려 합니다. 모든 트럭이 다리를 건너려면 최소 몇 초가 걸리는지 알아내야 합니다. 트럭은 1초에 1만큼 움직이며, 다리 길이��

programmers.co.kr

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
class trs():
    def __init__(self, etime, val):
        self.etime = etime
        self.val = val
    def arrtime(self, length):
        return self.etime + length
 
def solution(bridge_length, weight, truck_weights):
    answer, i,time = 0,1,1
    cur =[trs(time,truck_weights[0])]
    sums = truck_weights[0]
    # if weight >= sum(truck_weights):
    #     return len(truck_weights) + bridge_length
    while 1:
        time += 1
        if i == len(truck_weights):
            answer = cur[len(cur)-1].arrtime(bridge_length)
            break
        if sums + truck_weights[i] <= weight:
            if cur[0].arrtime(bridge_length) <= time:
                sums -= cur[0].val
                time = cur[0].arrtime(bridge_length)
                cur.pop(0)
            sums += truck_weights[i]
            cur.append(trs(time,truck_weights[i]))
            i += 1
        else:
            sums -= cur[0].val
            time = bridge_length + cur[0].etime 
            cur.pop(0)
            if sums + truck_weights[i] <= weight:
                sums += truck_weights[i]
                cur.append(trs(time,truck_weights[i]))
                i += 1
        # print("time : " ,time, " / " , sums, " i : " , i )
    return answer
 
# print(solution(5,5,[2, 2, 2, 2, 1, 1, 1, 1, 1]))
cs
Comments