{"data":{"site":{"siteMetadata":{"title":"HOME | blackpudding","subtitle":"고생했어. 오늘도.","copyright":"© All rights reserved.","author":{"name":"William JO","github":"blackpudding96"},"disqusShortname":"blackpudding","url":"https://blackpudding.netlify.com"}},"markdownRemark":{"id":"ce5d2f95-eac8-57c5-8c87-80c6b5e360b1","html":"<h1>11399번 : ATM</h1>\n<p>👉 <a href=\"https://www.acmicpc.net/problem/11399\">문제 바로가기</a></p>\n<h2>배경 지식</h2>\n<ul>\n<li><code class=\"language-text\">Greedy Algorithm</code> : 매 순간 최적의 선택으로 목표 단계까지 계산해 나가는 알고리즘</li>\n</ul>\n<p><code class=\"language-text\">Greedy Algorithm</code>(이하 <code class=\"language-text\">GA</code>)와 <code class=\"language-text\">Dynamic Programming</code>(이하 <code class=\"language-text\">DP</code>)은 비슷해보이지만 다르다. <code class=\"language-text\">DP</code>는 <strong>가능한 모든 경우를 계산하여 저장 &#x26; 사용</strong>하고, <code class=\"language-text\">GA</code>는 <strong>현 순간의 최적의 경우로 계산</strong>을 해나간다.</p>\n<p>DP와 GA는 각각 뚜렷한 장단점이 있기에, problem 유형마다 더 알맞은 알고리즘을 선택하여 쓰면 된다.</p>\n<h2>푼 방법</h2>\n<p>문제는 길어보이고 어려워보이지만, 해결 키 포인트를 잘 캐치해낸다면 그렇게 어려운 문제는 아니다.</p>\n<p>줄을 선 순서대로 돈을 뽑고, 뒷 사람은 앞 사람이 다 뽑을 때까지 기다려야 하기에 각 사람이 돈을 인출하는데 필요한 시간의 합의 최솟값을 구하려면 <strong>앞 사람 인출 시간 &#x3C;= 뒷 사람 인출 시간</strong>이어야 한다. 즉, <strong>P 배열을 오름차순으로 정렬하고 배열의 앞부터 순차적으로 더해나가면 된다.</strong></p>\n<h2>내 정답 코드 (C++)</h2>\n<div class=\"gatsby-highlight\" data-language=\"c\"><pre class=\"language-c\"><code class=\"language-c\"><span class=\"token macro property\">#<span class=\"token directive keyword\">include</span> <span class=\"token string\">&lt;iostream></span></span>\n<span class=\"token macro property\">#<span class=\"token directive keyword\">include</span> <span class=\"token string\">&lt;algorithm></span></span>\n\n<span class=\"token keyword\">int</span> <span class=\"token function\">main</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n\tstd<span class=\"token punctuation\">:</span><span class=\"token punctuation\">:</span>ios<span class=\"token punctuation\">:</span><span class=\"token punctuation\">:</span><span class=\"token function\">sync_with_stdio</span><span class=\"token punctuation\">(</span>false<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\tstd<span class=\"token punctuation\">:</span><span class=\"token punctuation\">:</span>cin<span class=\"token punctuation\">.</span><span class=\"token function\">tie</span><span class=\"token punctuation\">(</span><span class=\"token constant\">NULL</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span> \n\tstd<span class=\"token punctuation\">:</span><span class=\"token punctuation\">:</span>cout<span class=\"token punctuation\">.</span><span class=\"token function\">tie</span><span class=\"token punctuation\">(</span><span class=\"token constant\">NULL</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\n\t<span class=\"token keyword\">int</span> n<span class=\"token punctuation\">;</span>\n\t<span class=\"token keyword\">int</span> p<span class=\"token punctuation\">[</span><span class=\"token number\">1001</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">;</span>\n\t<span class=\"token keyword\">int</span> sum <span class=\"token operator\">=</span> <span class=\"token number\">0</span><span class=\"token punctuation\">,</span> result <span class=\"token operator\">=</span> <span class=\"token number\">0</span><span class=\"token punctuation\">;</span>\n\t\n\tstd<span class=\"token punctuation\">:</span><span class=\"token punctuation\">:</span>cin <span class=\"token operator\">>></span> n<span class=\"token punctuation\">;</span>\n\t\n\t<span class=\"token keyword\">for</span> <span class=\"token punctuation\">(</span><span class=\"token keyword\">int</span> i <span class=\"token operator\">=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span> i <span class=\"token operator\">&lt;=</span> n<span class=\"token punctuation\">;</span> <span class=\"token operator\">++</span>i<span class=\"token punctuation\">)</span>\n\t\tstd<span class=\"token punctuation\">:</span><span class=\"token punctuation\">:</span>cin <span class=\"token operator\">>></span> p<span class=\"token punctuation\">[</span>i<span class=\"token punctuation\">]</span><span class=\"token punctuation\">;</span>\n\t\n\tstd<span class=\"token punctuation\">:</span><span class=\"token punctuation\">:</span><span class=\"token function\">sort</span><span class=\"token punctuation\">(</span>p<span class=\"token operator\">+</span><span class=\"token number\">1</span><span class=\"token punctuation\">,</span> p<span class=\"token operator\">+</span><span class=\"token punctuation\">(</span>n<span class=\"token operator\">+</span><span class=\"token number\">1</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\t\n\t<span class=\"token keyword\">for</span> <span class=\"token punctuation\">(</span><span class=\"token keyword\">int</span> i <span class=\"token operator\">=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span> i <span class=\"token operator\">&lt;=</span> n<span class=\"token punctuation\">;</span> <span class=\"token operator\">++</span>i<span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n\t\tsum <span class=\"token operator\">+</span><span class=\"token operator\">=</span> p<span class=\"token punctuation\">[</span>i<span class=\"token punctuation\">]</span><span class=\"token punctuation\">;</span>\n\t\tresult <span class=\"token operator\">+</span><span class=\"token operator\">=</span> sum<span class=\"token punctuation\">;</span>\n\t<span class=\"token punctuation\">}</span>\n\t\n\tstd<span class=\"token punctuation\">:</span><span class=\"token punctuation\">:</span>cout <span class=\"token operator\">&lt;&lt;</span> result <span class=\"token operator\">&lt;&lt;</span> std<span class=\"token punctuation\">:</span><span class=\"token punctuation\">:</span>endl<span class=\"token punctuation\">;</span>\n    \n\t<span class=\"token keyword\">return</span> <span class=\"token number\">0</span><span class=\"token punctuation\">;</span>\n<span class=\"token punctuation\">}</span></code></pre></div>","fields":{"tagSlugs":["/tags/백준/","/tags/algorithm/"],"slug":"/posts/baekjoons/11399/"},"frontmatter":{"title":"[백준] 11399 : ATM","tags":["백준","Algorithm"],"date":"2020-03-07","description":"백준 11399번 문제 : ATM"}}},"pageContext":{"slug":"/posts/baekjoons/11399/"}}