[프로그래머스/스택] 다리를 지나는 트럭 - 파이썬

2022. 3. 6. 16:53· Problem Solving/CT-Python
목차
  1. 문제
  2. 본인 작성 답안 (비 효율적 list사용)
  3. 봐줄만한 답안(?)

하루정도 고민하고 힌트를 얻어서 푼 문제..

문제

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

 

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

트럭 여러 대가 강을 가로지르는 일차선 다리를 정해진 순으로 건너려 합니다. 모든 트럭이 다리를 건너려면 최소 몇 초가 걸리는지 알아내야 합니다. 다리에는 트럭이 최대 bridge_length대 올라갈

programmers.co.kr

본인 작성 답안 (비 효율적 list사용)

def solution(bridge_length, weight, truck_weights):
    current_BT = [0] * bridge_length       
    current_BW = 0
    answer = 0
    
    while len(current_BT):
        answer+=1
        leftout = current_BT.pop(0)       
        current_BW-=leftout
        if truck_weights:
            if current_BW + truck_weights[0]  <= weight:
                current_BW+= truck_weights[0]
                current_BT.append(truck_weights.pop(0))
            else:
                current_BT.append(0)
    return answer
print(solution(2,10,[7,4,5,6]))

다리위의 트럭 무게를 구할 때 sum 내장함수를 이용했는데

테스트 케이스에 시간초과로 걸려서 pop시키는 트럭무게들만 넣어서 비교했다.

 

위의 방식대로하면 시간복잡도가 커서 손해를 본다.

list가 아닌 deque를 이용해 풀어야 한다. 

봐줄만한 답안(?)

from collections import deque
def solution(bridge_length, weight, truck_weights):
    truck_weights = deque(truck_weights)
    current_BT = deque([0 for _ in range(bridge_length)])     
    current_BW = 0
    answer = 0
    
    while len(current_BT):
        answer+=1
        leftout = current_BT.popleft()       
        current_BW-=leftout
        if truck_weights:
            if current_BW + truck_weights[0]  <= weight:
                current_BW+= truck_weights[0]
                current_BT.append(truck_weights.popleft())
            else:
                current_BT.append(0)
    return answer

위의 list를 이용하는 것보다 약 6배 더 빠르더라... 통과 (67.35ms, 10.1MB)

deque의 시간복잡도는 O(1) 인데 list는 O(N) 이니까 list를 쓰면 효율성 측면에서는 꽝이다.

'Problem Solving > CT-Python' 카테고리의 다른 글

[백준/그리디] 10610: 30 - 파이썬  (0) 2022.03.08
[프로그래머스/스택] 프린터 - 파이썬  (0) 2022.03.07
[프로그래머스] 소수찾기 - 파이썬 - 에라토스테네스의 체  (0) 2022.03.03
[백준/스택] 1158: 요세푸스 문제 - 파이썬  (0) 2021.09.23
[백준/스택] 뼈대문제 10828 - 파이썬  (0) 2021.09.18
  1. 문제
  2. 본인 작성 답안 (비 효율적 list사용)
  3. 봐줄만한 답안(?)
'Problem Solving/CT-Python' 카테고리의 다른 글
  • [백준/그리디] 10610: 30 - 파이썬
  • [프로그래머스/스택] 프린터 - 파이썬
  • [프로그래머스] 소수찾기 - 파이썬 - 에라토스테네스의 체
  • [백준/스택] 1158: 요세푸스 문제 - 파이썬
White Han
White Han
Software Developer
sudo apt-get happinessSoftware Developer
White Han
sudo apt-get happiness
White Han
전체
오늘
어제
  • 분류 전체보기 (183)
    • Language (35)
      • Java (17)
      • Java-Weekly-study (0)
      • Python (18)
    • BackEnd (11)
      • Server (2)
      • Spring (3)
      • Spring Security (0)
      • JDBC (1)
      • NodeJS (2)
      • LINUX (3)
    • DataBase (10)
      • MySQL (5)
      • MongoDB (4)
      • Oracle (1)
    • Infra (4)
      • Docker (4)
    • CS (38)
      • OS (38)
    • Problem Solving (79)
      • Algorithm (8)
      • CT-Java (30)
      • CT-Python (41)
    • IDE (1)
      • eclipse (1)
      • vscode (0)
    • Etc. (3)
      • Git (1)
      • TDD, Refactor, CleanCode (1)
      • Conference (1)
    • 기록 (2)
      • 후기 (1)
      • 프로젝트 회고록 (1)

블로그 메뉴

  • 홈
  • 태그
  • 방명록
  • 글쓰기

공지사항

  • 방문해 주셔서 감사합니다.

인기 글

태그

  • 자바 inheritance
  • 24인치 모니터 추천
  • 자바스크립스 식별자 종류
  • Java this
  • 싸피
  • 자바 this
  • 싸피8기
  • AOC 24B1X
  • SSAFY
  • 자바스크립트 식별자
  • javascript identifier
  • javascript
  • 자바스크립트
  • Java Inheritance
  • 자바 super
  • OS
  • java
  • 자바스크립트 개념
  • 사무용 모니터 추천
  • 운영체제 역할
  • 알파스캔 AOC 24B1X
  • 운영체제
  • 싸피 합격
  • 사무용 모니터
  • Java super
  • 프로세서
  • 알파스캔 모니터
  • 프로세스
  • 싸피 후기
  • 운영체제 구조

최근 댓글

최근 글

hELLO · Designed By 정상우.v4.2.1
White Han
[프로그래머스/스택] 다리를 지나는 트럭 - 파이썬
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.