프로그래머스 '다리를지나는 트럭' 다른 풀이방법을 봐도 어떻게 풀었는지 바로 이해가 안가서 내 방법대로 겨우 풀었다.... 똑똑한 사람 왜이렇게 많음..

 

  • 내 방법

time 이라는 리스트를 만들어 현재 지나가고 있는 트럭의 시간을 함께 기록함으로써 시간체크를 한다.

ing와 time은 같은 index끼리 매칭 되어서 시간을 체크한다.

bridge_length = 2

ing = [4,5]

time = [2,1]  인 경우

4인 트럭은 2초된것으로 다음 차례에서는 already로 들어갈 것이고, 5인 트럭은 1초된것으로 1초가 더 지나야 완전히 지나갈 것이다.

time이 bridge_length가 되는 것을 기준으로 다리를 다 지나간 것을 체크하고, 다름 트럭을 본다.

 

 

    • 코드
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
def solution(bridge_length, weight, truck_weights):
    count = len(truck_weights)
    answer = 0
    already = [] #지나간 트럭
    ing = [] #지나가고 있는 트럭
    time = [] #ing의 트럭의 시간
    totalweight = 0 # sum을 없애서 시간을 낮추기 위함
 
 
    while len(already) != count:
        num = True
        while len(truck_weights) >= 1 and totalweight + truck_weights[0<= weight:
            totalweight += truck_weights[0]
            ing.append(truck_weights.pop(0))
            time.append(0)
            num = False
            for i in range(len(time)):
                time[i] += 1
            if time[0== bridge_length: #시간 계산
                time.pop(0)
                totalweight -= ing[0]
                already.append(ing.pop(0))
            answer += 1
        if num: #위에서 append 된 경우는, 시간계산 이미했으므로 False인 경우는 할 필요 없음
            for i in range(len(time)):
                time[i] += 1
            answer += 1
        if time[0== bridge_length:
            time.pop(0)
            totalweight -= ing[0]
            already.append(ing.pop(0))
 
 
    answer += 1
    return answer
cs

 

+ Recent posts