{"componentChunkName":"component---src-templates-blog-post-js","path":"/Algorithm/프로그래머스-다리를지나는트럭-Python/","result":{"data":{"site":{"siteMetadata":{"title":"hyesungoh","author":"hyesungoh","siteUrl":"https://www.hyesungoh.xyz","comment":{"disqusShortName":"","utterances":"hyesungoh/blog"},"sponsor":{"buyMeACoffeeId":""}}},"markdownRemark":{"id":"0ca7030b-2f7b-5406-8bae-33a280453778","excerpt":"다리의 길이, 다리가 버틸 수 있는 무게, 트럭들의 무게가 주어진다. 트럭은 1초에 1만큼 움직일 때 몇 초가 지나야 모든 트럭이 다리를 지날 수 있는 지 출력하는 문제. 첫 번째 풀이는 다리의 길이만큼 0으로 이루어진 배열을 만든 후, 트럭들을 popleft한 값 - 다리의 마지막 값 + 현재 다리에 있는 총 값을 다리의 하중과 비교하여 추가적으로 트럭이 다리에 진입할 수 있을 때 appendleft를 이용하여 추가, 아닐 시 appendleft를…","html":"<p>다리의 길이, 다리가 버틸 수 있는 무게, 트럭들의 무게가 주어진다. 트럭은 1초에 1만큼 움직일 때 몇 초가 지나야 모든 트럭이 다리를 지날 수 있는 지 출력하는 문제. 첫 번째 풀이는 다리의 길이만큼 0으로 이루어진 배열을 만든 후, 트럭들을 popleft한 값 - 다리의 마지막 값 + 현재 다리에 있는 총 값을 다리의 하중과 비교하여 추가적으로 트럭이 다리에 진입할 수 있을 때 appendleft를 이용하여 추가, 아닐 시 appendleft를 0으로 추가 후 마지막 값을 뺀 후, 마지막 값이 0이 아닐 시 다리를 지나간 트럭의 수를 계산하는 변수를 이용하여 비교하여 풀었다. 추가적으로 연산을 줄이기 위해 sum 함수가 아닌 현재 다리에 있는 총 값을 저장하는 변수를 만들어 사용하여 풀었다. 두 번째 풀이는 다른 사람의 풀이를 각색하여 풀었다. 다리의 길이 만큼 배열을 만든 후, 다리의 길이가 존재할 때까지 반복문을 수행한다. 가장 왼쪽에 있는 값을 뺀 후, 넘어가야하는 트럭이 존재할 때, 무게를 비교하여 다리에 값을 추가하여 풀었다. 마찬가지로 무게를 비교할 때 sum 함수가 아닌 변수를 선언하여 관리하였다.</p>\n<div class=\"gatsby-highlight\" data-language=\"python\"><pre class=\"language-python\"><code class=\"language-python\"><span class=\"token keyword\">from</span> collections <span class=\"token keyword\">import</span> deque\n\n<span class=\"token keyword\">def</span> <span class=\"token function\">solution</span><span class=\"token punctuation\">(</span>bridge_length<span class=\"token punctuation\">,</span> weight<span class=\"token punctuation\">,</span> truck_weights<span class=\"token punctuation\">)</span><span class=\"token punctuation\">:</span>\n    truck_weights <span class=\"token operator\">=</span> deque<span class=\"token punctuation\">(</span>truck_weights<span class=\"token punctuation\">)</span>\n    length <span class=\"token operator\">=</span> <span class=\"token builtin\">len</span><span class=\"token punctuation\">(</span>truck_weights<span class=\"token punctuation\">)</span>\n    exit_length <span class=\"token operator\">=</span> <span class=\"token number\">0</span>\n\n    bridge_now <span class=\"token operator\">=</span> deque<span class=\"token punctuation\">(</span><span class=\"token punctuation\">[</span><span class=\"token number\">0</span> <span class=\"token keyword\">for</span> _ <span class=\"token keyword\">in</span> <span class=\"token builtin\">range</span><span class=\"token punctuation\">(</span>bridge_length<span class=\"token punctuation\">)</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">)</span>\n    bridge_weight <span class=\"token operator\">=</span> <span class=\"token number\">0</span>\n    answer <span class=\"token operator\">=</span> <span class=\"token number\">0</span>\n\n    <span class=\"token keyword\">while</span> exit_length <span class=\"token operator\">!=</span> length<span class=\"token punctuation\">:</span>\n        <span class=\"token keyword\">if</span> truck_weights<span class=\"token punctuation\">:</span>\n            truck_now <span class=\"token operator\">=</span> truck_weights<span class=\"token punctuation\">.</span>popleft<span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span>\n        last_truck <span class=\"token operator\">=</span> bridge_now<span class=\"token punctuation\">[</span><span class=\"token operator\">-</span><span class=\"token number\">1</span><span class=\"token punctuation\">]</span>\n\n        <span class=\"token keyword\">if</span> bridge_weight <span class=\"token operator\">+</span> truck_now <span class=\"token operator\">-</span> last_truck <span class=\"token operator\">&lt;=</span> weight<span class=\"token punctuation\">:</span>\n            bridge_now<span class=\"token punctuation\">.</span>appendleft<span class=\"token punctuation\">(</span>truck_now<span class=\"token punctuation\">)</span>\n            bridge_weight <span class=\"token operator\">+=</span> truck_now\n        <span class=\"token keyword\">else</span><span class=\"token punctuation\">:</span>\n            bridge_now<span class=\"token punctuation\">.</span>appendleft<span class=\"token punctuation\">(</span><span class=\"token number\">0</span><span class=\"token punctuation\">)</span>\n            truck_weights<span class=\"token punctuation\">.</span>appendleft<span class=\"token punctuation\">(</span>truck_now<span class=\"token punctuation\">)</span>\n\n        bridge_now<span class=\"token punctuation\">.</span>pop<span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span>\n        bridge_weight <span class=\"token operator\">-=</span> last_truck\n        exit_length <span class=\"token operator\">+=</span> <span class=\"token number\">1</span> <span class=\"token keyword\">if</span> last_truck <span class=\"token operator\">!=</span> <span class=\"token number\">0</span> <span class=\"token keyword\">else</span> <span class=\"token number\">0</span>\n        answer <span class=\"token operator\">+=</span> <span class=\"token number\">1</span>\n\n    <span class=\"token keyword\">return</span> answer\n\n\n<span class=\"token comment\"># def solution(bride_length, weight, truck_weights):</span>\n<span class=\"token comment\">#     answer = 0</span>\n<span class=\"token comment\">#     truck_weights = deque(truck_weights)</span>\n<span class=\"token comment\">#     bridge_now = deque([0 for _ in range(bride_length)])</span>\n<span class=\"token comment\">#     bridge_total = 0</span>\n<span class=\"token comment\">#</span>\n<span class=\"token comment\">#     while bridge_now:</span>\n<span class=\"token comment\">#         answer += 1</span>\n<span class=\"token comment\">#         bridge_total -= bridge_now.popleft()</span>\n<span class=\"token comment\">#</span>\n<span class=\"token comment\">#         if truck_weights:</span>\n<span class=\"token comment\">#             if bridge_total + truck_weights[0] &lt;= weight:</span>\n<span class=\"token comment\">#                 t = truck_weights.popleft()</span>\n<span class=\"token comment\">#                 bridge_now.append(t)</span>\n<span class=\"token comment\">#                 bridge_total += t</span>\n<span class=\"token comment\">#             else:</span>\n<span class=\"token comment\">#                 bridge_now.append(0)</span>\n<span class=\"token comment\">#</span>\n<span class=\"token comment\">#     return answer</span></code></pre></div>","frontmatter":{"title":"프로그래머스-다리를지나는트럭 - Python","date":"March 04, 2021"}}},"pageContext":{"slug":"/Algorithm/프로그래머스-다리를지나는트럭-Python/","previous":{"fields":{"slug":"/Algorithm/프로그래머스-전화번호목록-Python/"},"frontmatter":{"title":"프로그래머스-전화번호목록 - Python","category":"Algorithm","draft":false}},"next":{"fields":{"slug":"/Algorithm/BOJ-9507-Python/"},"frontmatter":{"title":"BOJ-9507 - Python","category":"Algorithm","draft":false}}}},"staticQueryHashes":["3128451518","3290666882"]}