Dev
Home
  • 분류 전체보기 (10)
    • 알고리즘 (5)
    • 개발 (5)
      • javascript30 (0)
      • React (2)
      • HTML (0)
      • CSS (1)
      • 프로젝트 (1)
Home
  • 분류 전체보기 (10)
    • 알고리즘 (5)
    • 개발 (5)
      • javascript30 (0)
      • React (2)
      • HTML (0)
      • CSS (1)
      • 프로젝트 (1)
블로그 내 검색

Dev

  • 알고리즘

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

    2021. 5. 9.

    by. Dev...

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

     

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

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

    programmers.co.kr

    문제를 딱 보고 다리를 건너는 트럭을 리스트로 두고 건너고 있는 거리를 잴 수 있게 똑같은 리스트 한 개를 더 만들어야겠다고 생각했다.

     

    트럭은 두 대 이상이 동시에 다리에 오를 수 없으므로 다리의 마지막에 있는 트럭만 다리를 지났는지 검사한 후 지났다면 pop을 해준다.

     

    그리고 다리에 트럭을 올릴 수 있는 상태라면(첫번째 대기 트럭을 올렸을 때 다리의 한계를 초과하지 않는다면) 트럭을 올린다. 그 트럭은 1만큼 건넌 것이다.

     

    경과시간을 1 늘리고 트럭의 지나온 거리들을 1 씩 늘려준다.

    대기 트럭과 건너고 있는 트럭이 모두 없을 때 까지 반복!

    def solution(bridge_length, weight, truck_weights):
        across = [] # 다리를 건너는 트럭을 추가할 리스트
        num = [] # 다리를 건너는 트럭의 건넌 거리를 계산할 리스트
        seconds = 0
        
        while truck_weights or across: # 대기 트럭과 건너고 있는 트럭이 모두 없을 때 까지
            if num and num[0] > bridge_length:
                # num이 존재하고 다리의 마지막에 있는 트럭이 bridge_length를 지났을 경우
                num.pop(0)
                across.pop(0) # num과 across에서 0번째 값을 pop
                
            if truck_weights and weight >= sum(across) + truck_weights[0]:
                # truck_weights가 존재하고 다리에 있는 트럭의 무게의 합과 첫번째 대기 트럭의 무게를 더한 것이
                # 다리의 견딜 수 있는 무게보다 작거나 같다면
                across.append(truck_weights.pop(0)) # 첫번째 대기 트럭을 다리에 올림
                num.append(1) # num 배열에도 1을 추가
                
            for i in range(len(num)): # 지나고 있는 모든 트럭의 지나온 거리 + 1
                num[i] += 1
            seconds += 1 # 경과 시간 + 1
        return seconds

     

    '알고리즘' 카테고리의 다른 글

    [백준] 11279 최대 힙  (0) 2021.08.12
    [프로그래머스] 주식가격  (0) 2021.05.17
    [프로그래머스] 신규 아이디 추천  (0) 2021.05.08
    [백준] 1182 부분수열의 합  (1) 2021.05.06

    댓글

    관련글

    • [백준] 11279 최대 힙 2021.08.12
    • [프로그래머스] 주식가격 2021.05.17
    • [프로그래머스] 신규 아이디 추천 2021.05.08
    • [백준] 1182 부분수열의 합 2021.05.06
    맨 위로
전체 글 보기
Tistory 로그인
Tistory 로그아웃
로그아웃 글쓰기 관리

Today

Total

Powered by ⓒ Daum Corp.

Designed by Nana
블로그 이미지
Dev...

티스토리툴바