티스토리 뷰

1. 문제

출처 : 프로그래머스

2. 소스코드 ( Python3 ) 


def solution(bridge_length, weight, truck_weights):
    answer = 0
    start = 0 # 다음에 건널 트럭 번호
    finish = 0 # 다음에 다 건널 트럭 번호
    on_bridge = 0 # 다리 위 트럭 무게
    time = [] # 트럭이 다리 건너기 시작한 시각
    time_now = 0 # 현재 시각

    # 1초 후
    time_now += 1
    on_bridge = truck_weights[start]
    start += 1
    time.append(time_now)

    # 반복
    while finish != len(truck_weights):
        # 시간 경과
        time_now += 1
        # 다 건넌 트럭 OUT
        if time_now - time[finish] == bridge_length:
            on_bridge -= truck_weights[finish]
            finish += 1
        # 새로 건널 트럭 IN
        if (start < len(truck_weights)) and (on_bridge + truck_weights[start] <= weight):
            on_bridge += truck_weights[start]
            start += 1
            time.append(time_now)
    answer = time_now
    #print(answer)

    return answer

 

3. 고찰

1) index를 이용하여 다리 건너는지 체크

저번에 다른 사람 코드에서 봤는데, 직접 벡터에 넣었다 뺐다 할 필요없이, index만으로도 체크가 가능해서 이 방식으로 구현하였다.

 

2) 논리연산자

C++에서는 &&연산자를 python에서는 and로 쓴다.

 

3) (start < len(truck_weights)) 조건

위 조건을 안 쓰면 인덱스 오류가 떠서 추가해주었다.

'프로그래밍 > Python' 카테고리의 다른 글

프로그래머스_더 맵게  (0) 2020.10.03
프로그래머스_프린터  (0) 2020.10.01
프로그래머스_주식가격  (0) 2020.09.28
프로그래머스_코딩테스트연습_124나라의 숫자  (0) 2020.09.24
백준 #9093  (0) 2020.09.22
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/04   »
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
글 보관함