{
    "componentChunkName": "component---src-templates-blog-template-js",
    "path": "/boj-20056/",
    "result": {"data":{"cur":{"id":"a6f6bcdc-0481-5e8a-a22d-7cfe6ab8d75d","html":"<h2 id=\"문제\" style=\"position:relative;\"><a href=\"#%EB%AC%B8%EC%A0%9C\" aria-label=\"문제 permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>문제</h2>\n<p><a href=\"https://www.acmicpc.net/problem/20056\">https://www.acmicpc.net/problem/20056</a></p>\n<p>어른 상어가 마법사가 되었고, 파이어볼을 배웠다.</p>\n<p>마법사 상어가 크기가 N×N인 격자에 파이어볼 M개를 발사했다. 가장 처음에 파이어볼은 각자 위치에서 이동을 대기하고 있다. i번 파이어볼의 위치는 (ri, ci), 질량은 mi이고, 방향은 di, 속력은 si이다. 위치 (r, c)는 r행 c열을 의미한다.</p>\n<p>격자의 행과 열은 1번부터 N번까지 번호가 매겨져 있고, 1번 행은 N번과 연결되어 있고, 1번 열은 N번 열과 연결되어 있다.</p>\n<p>파이어볼의 방향은 어떤 칸과 인접한 8개의 칸의 방향을 의미하며, 정수로는 다음과 같다.<br>\n<span\n      class=\"gatsby-resp-image-wrapper\"\n      style=\"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 658px; \"\n    >\n      <span\n    class=\"gatsby-resp-image-background-image\"\n    style=\"padding-bottom: 44.99999999999999%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAJCAYAAAAywQxIAAAACXBIWXMAABYlAAAWJQFJUiTwAAAAmklEQVQoz52R4QrEIAyD9/5PKjhQN5ibOnt8hd6PsRvnAiFQbEzbqfcudzzPU7W1JgClZnVw1zddC/aw1ioxRjWY51lKKbJtm/KX2aMhifZ9V13XRY7jUFP4OiHNKCAppnDI0B6Tzjn33RsIIUhKaXxkDOwYNiJJzdw++DshZDTvvTaidqRXCS1RzlmVy6KsAQ7v8Dr+U6Kr4QeqIMfwFb/VbwAAAABJRU5ErkJggg=='); background-size: cover; display: block;\"\n  ></span>\n  <img\n        class=\"gatsby-resp-image-image\"\n        alt=\"20056-direction.png\"\n        title=\"20056-direction.png\"\n        src=\"/static/6499fcfc712c6c36499f1511d8dd372e/889a4/20056-direction.png\"\n        srcset=\"/static/6499fcfc712c6c36499f1511d8dd372e/e9ff0/20056-direction.png 180w,\n/static/6499fcfc712c6c36499f1511d8dd372e/f21e7/20056-direction.png 360w,\n/static/6499fcfc712c6c36499f1511d8dd372e/889a4/20056-direction.png 658w\"\n        sizes=\"(max-width: 658px) 100vw, 658px\"\n        style=\"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;\"\n        loading=\"lazy\"\n        decoding=\"async\"\n      />\n    </span><br>\n마법사 상어가 모든 파이어볼에게 이동을 명령하면 다음이 일들이 일어난다.</p>\n<ol>\n<li>모든 파이어볼이 자신의 방향 di로 속력 si칸 만큼 이동한다.\n<ul>\n<li>이동하는 중에는 같은 칸에 여러 개의 파이어볼이 있을 수도 있다.</li>\n</ul>\n</li>\n<li>이동이 모두 끝난 뒤, 2개 이상의 파이어볼이 있는 칸에서는 다음과 같은 일이 일어난다.\n<ol>\n<li>같은 칸에 있는 파이어볼은 모두 하나로 합쳐진다.</li>\n<li>파이어볼은 4개의 파이어볼로 나누어진다.</li>\n<li>나누어진 파이어볼의 질량, 속력, 방향은 다음과 같다.\n<ol>\n<li>질량은 ⌊(합쳐진 파이어볼 질량의 합)/5⌋이다.</li>\n<li>속력은 ⌊(합쳐진 파이어볼 속력의 합)/(합쳐진 파이어볼의 개수)⌋이다.</li>\n<li>합쳐지는 파이어볼의 방향이 모두 홀수이거나 모두 짝수이면, 방향은 0, 2, 4, 6이 되고, 그렇지 않으면 1, 3, 5, 7이 된다.</li>\n</ol>\n</li>\n<li>질량이 0인 파이어볼은 소멸되어 없어진다.</li>\n</ol>\n</li>\n</ol>\n<p>마법사 상어가 이동을 K번 명령한 후, 남아있는 파이어볼 질량의 합을 구해보자.</p>\n<hr>\n<h2 id=\"입력\" style=\"position:relative;\"><a href=\"#%EC%9E%85%EB%A0%A5\" aria-label=\"입력 permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>입력</h2>\n<p>첫째 줄에 N, M, K가 주어진다.</p>\n<p>둘째 줄부터 M개의 줄에 파이어볼의 정보가 한 줄에 하나씩 주어진다. 파이어볼의 정보는 다섯 정수 ri, ci, mi, si, di로 이루어져 있다.</p>\n<p>서로 다른 두 파이어볼의 위치가 같은 경우는 입력으로 주어지지 않는다.</p>\n<hr>\n<h2 id=\"출력\" style=\"position:relative;\"><a href=\"#%EC%B6%9C%EB%A0%A5\" aria-label=\"출력 permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>출력</h2>\n<p>마법사 상어가 이동을 K번 명령한 후, 남아있는 파이어볼 질량의 합을 출력한다.</p>\n<hr>\n<h2 id=\"-algorithm\" style=\"position:relative;\"><a href=\"#-algorithm\" aria-label=\" algorithm permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>🔍 Algorithm</h2>\n<p><strong>시뮬레이션</strong></p>\n<h2 id=\"-logic\" style=\"position:relative;\"><a href=\"#-logic\" aria-label=\" logic permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>💻 Logic</h2>\n<div class=\"gatsby-highlight\" data-language=\"python\"><pre class=\"language-python\"><code class=\"language-python\"><span class=\"token keyword\">def</span> <span class=\"token function\">move_fireball</span><span class=\"token punctuation\">(</span>count<span class=\"token punctuation\">)</span><span class=\"token punctuation\">:</span>\n    <span class=\"token comment\"># 파이어볼 수만큼 이동</span>\n    <span class=\"token keyword\">for</span> _ <span class=\"token keyword\">in</span> <span class=\"token builtin\">range</span><span class=\"token punctuation\">(</span>count<span class=\"token punctuation\">)</span><span class=\"token punctuation\">:</span>\n        next_y<span class=\"token punctuation\">,</span> next_x<span class=\"token punctuation\">,</span> m<span class=\"token punctuation\">,</span> s<span class=\"token punctuation\">,</span> d <span class=\"token operator\">=</span> fireball<span class=\"token punctuation\">.</span>pop<span class=\"token punctuation\">(</span><span class=\"token number\">0</span><span class=\"token punctuation\">)</span>\n        <span class=\"token comment\"># 방향과 속력에 맞게 다음 위치 계산</span>\n        <span class=\"token keyword\">for</span> _ <span class=\"token keyword\">in</span> <span class=\"token builtin\">range</span><span class=\"token punctuation\">(</span>s<span class=\"token punctuation\">)</span><span class=\"token punctuation\">:</span>\n            next_x <span class=\"token operator\">+=</span> dx<span class=\"token punctuation\">[</span>d<span class=\"token punctuation\">]</span>\n            next_y <span class=\"token operator\">+=</span> dy<span class=\"token punctuation\">[</span>d<span class=\"token punctuation\">]</span>\n            <span class=\"token comment\"># 행과 열은 1번과 N번이 연결되어 있음</span>\n            <span class=\"token keyword\">if</span> next_x <span class=\"token operator\">&lt;</span> <span class=\"token number\">1</span><span class=\"token punctuation\">:</span> next_x <span class=\"token operator\">=</span> N\n            <span class=\"token keyword\">elif</span> next_x <span class=\"token operator\">></span> N<span class=\"token punctuation\">:</span> next_x <span class=\"token operator\">=</span> <span class=\"token number\">1</span>\n            <span class=\"token keyword\">if</span> next_y <span class=\"token operator\">&lt;</span> <span class=\"token number\">1</span><span class=\"token punctuation\">:</span> next_y <span class=\"token operator\">=</span> N\n            <span class=\"token keyword\">elif</span> next_y <span class=\"token operator\">></span> N<span class=\"token punctuation\">:</span> next_y <span class=\"token operator\">=</span> <span class=\"token number\">1</span>\n        <span class=\"token comment\"># 다음 파이어볼의 위치를 나타낼 grid에 append</span>\n        grid<span class=\"token punctuation\">[</span>next_y<span class=\"token punctuation\">]</span><span class=\"token punctuation\">[</span>next_x<span class=\"token punctuation\">]</span><span class=\"token punctuation\">.</span>append<span class=\"token punctuation\">(</span><span class=\"token punctuation\">[</span>m<span class=\"token punctuation\">,</span> s<span class=\"token punctuation\">,</span> d<span class=\"token punctuation\">]</span><span class=\"token punctuation\">)</span></code></pre></div>\n<ul>\n<li>파이어볼 이동 함수\n<ul>\n<li><strong>파이어볼 수만큼 이동</strong><br>\n<code class=\"language-text\">fireball</code> 리스트에 있는 값 수만큼 <strong>pop</strong>하면서 반복문 실행</li>\n<li><strong>방향과 속력에 맞게 다음 위치 계산</strong><br>\n행과 열은 <strong>1번</strong>과 <strong>N번</strong>이 연결되어 있으므로 범위 안넘어가게 다음 위치 계산<br>\n그 다음, 다음 파이어볼의 위치를 나타내는 리스트인 <code class=\"language-text\">grid</code>에 <strong>append</strong></li>\n</ul>\n</li>\n</ul>\n<hr>\n<div class=\"gatsby-highlight\" data-language=\"python\"><pre class=\"language-python\"><code class=\"language-python\"><span class=\"token keyword\">def</span> <span class=\"token function\">check_collision</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">:</span>\n    <span class=\"token keyword\">for</span> i <span class=\"token keyword\">in</span> <span class=\"token builtin\">range</span><span class=\"token punctuation\">(</span><span class=\"token number\">1</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>\n        <span class=\"token keyword\">for</span> j <span class=\"token keyword\">in</span> <span class=\"token builtin\">range</span><span class=\"token punctuation\">(</span><span class=\"token number\">1</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>\n            n <span class=\"token operator\">=</span> <span class=\"token builtin\">len</span><span class=\"token punctuation\">(</span>grid<span class=\"token punctuation\">[</span>i<span class=\"token punctuation\">]</span><span class=\"token punctuation\">[</span>j<span class=\"token punctuation\">]</span><span class=\"token punctuation\">)</span>\n            <span class=\"token comment\"># grid에 값이 있을 때까지 반복문 진행</span>\n            <span class=\"token keyword\">if</span> n <span class=\"token operator\">==</span> <span class=\"token number\">0</span><span class=\"token punctuation\">:</span>\n                <span class=\"token keyword\">continue</span>\n            <span class=\"token comment\"># grid 좌표 값이 하나만 있으면 바로 append</span>\n            <span class=\"token keyword\">elif</span> n <span class=\"token operator\">==</span> <span class=\"token number\">1</span><span class=\"token punctuation\">:</span>\n                m<span class=\"token punctuation\">,</span> s<span class=\"token punctuation\">,</span> d <span class=\"token operator\">=</span> grid<span class=\"token punctuation\">[</span>i<span class=\"token punctuation\">]</span><span class=\"token punctuation\">[</span>j<span class=\"token punctuation\">]</span><span class=\"token punctuation\">.</span>pop<span class=\"token punctuation\">(</span><span class=\"token number\">0</span><span class=\"token punctuation\">)</span>\n                fireball<span class=\"token punctuation\">.</span>append<span class=\"token punctuation\">(</span><span class=\"token punctuation\">[</span>i<span class=\"token punctuation\">,</span> j<span class=\"token punctuation\">,</span> m<span class=\"token punctuation\">,</span> s<span class=\"token punctuation\">,</span> d<span class=\"token punctuation\">]</span><span class=\"token punctuation\">)</span>\n            <span class=\"token comment\"># 둘 이상이면 문제에 주어진대로 계산</span>\n            <span class=\"token keyword\">else</span><span class=\"token punctuation\">:</span>\n                m_sum<span class=\"token punctuation\">,</span> s_sum<span class=\"token punctuation\">,</span> <span class=\"token builtin\">dir</span><span class=\"token punctuation\">,</span> last_d <span class=\"token operator\">=</span> <span class=\"token number\">0</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0</span><span class=\"token punctuation\">,</span> <span class=\"token boolean\">True</span><span class=\"token punctuation\">,</span> <span class=\"token operator\">-</span><span class=\"token number\">1</span>\n                <span class=\"token keyword\">while</span> grid<span class=\"token punctuation\">[</span>i<span class=\"token punctuation\">]</span><span class=\"token punctuation\">[</span>j<span class=\"token punctuation\">]</span><span class=\"token punctuation\">:</span>\n                    m<span class=\"token punctuation\">,</span> s<span class=\"token punctuation\">,</span> d <span class=\"token operator\">=</span> grid<span class=\"token punctuation\">[</span>i<span class=\"token punctuation\">]</span><span class=\"token punctuation\">[</span>j<span class=\"token punctuation\">]</span><span class=\"token punctuation\">.</span>pop<span class=\"token punctuation\">(</span><span class=\"token number\">0</span><span class=\"token punctuation\">)</span>\n                    m_sum <span class=\"token operator\">+=</span> m\n                    s_sum <span class=\"token operator\">+=</span> s\n                    <span class=\"token keyword\">if</span> last_d <span class=\"token operator\">==</span> <span class=\"token operator\">-</span><span class=\"token number\">1</span><span class=\"token punctuation\">:</span>\n                        last_d <span class=\"token operator\">=</span> d\n                    <span class=\"token comment\"># 하나라도 홀수, 짝수가 섞일 경우 False 저장</span>\n                    <span class=\"token keyword\">else</span><span class=\"token punctuation\">:</span>\n                        <span class=\"token keyword\">if</span> last_d<span class=\"token operator\">%</span><span class=\"token number\">2</span> <span class=\"token operator\">!=</span> d<span class=\"token operator\">%</span><span class=\"token number\">2</span><span class=\"token punctuation\">:</span> <span class=\"token builtin\">dir</span> <span class=\"token operator\">=</span> <span class=\"token boolean\">False</span>\n                <span class=\"token comment\"># 질량이 0이하면 버림</span>\n                <span class=\"token keyword\">if</span> m_sum<span class=\"token operator\">//</span><span class=\"token number\">5</span> <span class=\"token operator\">></span> <span class=\"token number\">0</span><span class=\"token punctuation\">:</span>\n                    <span class=\"token keyword\">if</span> <span class=\"token builtin\">dir</span><span class=\"token punctuation\">:</span>\n                        <span class=\"token keyword\">for</span> k <span class=\"token keyword\">in</span> <span class=\"token builtin\">range</span><span class=\"token punctuation\">(</span><span class=\"token number\">4</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">:</span>\n                            fireball<span class=\"token punctuation\">.</span>append<span class=\"token punctuation\">(</span><span class=\"token punctuation\">[</span>i<span class=\"token punctuation\">,</span> j<span class=\"token punctuation\">,</span> m_sum<span class=\"token operator\">//</span><span class=\"token number\">5</span><span class=\"token punctuation\">,</span> s_sum<span class=\"token operator\">//</span>n<span class=\"token punctuation\">,</span> k<span class=\"token operator\">*</span><span class=\"token number\">2</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">)</span>\n                    <span class=\"token keyword\">else</span><span class=\"token punctuation\">:</span>\n                        <span class=\"token keyword\">for</span> k <span class=\"token keyword\">in</span> <span class=\"token builtin\">range</span><span class=\"token punctuation\">(</span><span class=\"token number\">4</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">:</span>\n                            fireball<span class=\"token punctuation\">.</span>append<span class=\"token punctuation\">(</span><span class=\"token punctuation\">[</span>i<span class=\"token punctuation\">,</span> j<span class=\"token punctuation\">,</span> m_sum<span class=\"token operator\">//</span><span class=\"token number\">5</span><span class=\"token punctuation\">,</span> s_sum<span class=\"token operator\">//</span>n<span class=\"token punctuation\">,</span> k<span class=\"token operator\">*</span><span class=\"token number\">2</span><span class=\"token operator\">+</span><span class=\"token number\">1</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">)</span></code></pre></div>\n<ul>\n<li>중복 처리 함수\n<ul>\n<li><strong>grid에 값이 있을 때까지 반복문 진행</strong><br>\n<code class=\"language-text\">grid</code> 좌표 값이 하나만 있으면 바로 <strong>append</strong><br>\n둘 이상이면 문제에 주어진대로 계산</li>\n</ul>\n</li>\n</ul>\n<hr>\n<h2 id=\"-code\" style=\"position:relative;\"><a href=\"#-code\" aria-label=\" code permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>🧩 Code</h2>\n<details><summary>전체 코드 확인</summary>\n<div class=\"gatsby-highlight\" data-language=\"python\"><pre class=\"language-python\"><code class=\"language-python\"><span class=\"token keyword\">import</span> sys\nN<span class=\"token punctuation\">,</span> M<span class=\"token punctuation\">,</span> K <span class=\"token operator\">=</span> <span class=\"token builtin\">map</span><span class=\"token punctuation\">(</span><span class=\"token builtin\">int</span><span class=\"token punctuation\">,</span> sys<span class=\"token punctuation\">.</span>stdin<span class=\"token punctuation\">.</span>readline<span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">.</span>split<span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span>\nfireball <span class=\"token operator\">=</span> <span class=\"token punctuation\">[</span><span class=\"token punctuation\">[</span><span class=\"token builtin\">int</span><span class=\"token punctuation\">(</span>x<span class=\"token punctuation\">)</span> <span class=\"token keyword\">for</span> x <span class=\"token keyword\">in</span> sys<span class=\"token punctuation\">.</span>stdin<span class=\"token punctuation\">.</span>readline<span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">.</span>split<span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">]</span> <span class=\"token keyword\">for</span> _ <span class=\"token keyword\">in</span> <span class=\"token builtin\">range</span><span class=\"token punctuation\">(</span>M<span class=\"token punctuation\">)</span><span class=\"token punctuation\">]</span>\ngrid <span class=\"token operator\">=</span> <span class=\"token punctuation\">[</span><span class=\"token punctuation\">[</span><span class=\"token punctuation\">[</span><span class=\"token punctuation\">]</span> <span class=\"token keyword\">for</span> _ <span class=\"token keyword\">in</span> <span class=\"token builtin\">range</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 keyword\">for</span> _ <span class=\"token keyword\">in</span> <span class=\"token builtin\">range</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>\ndx <span class=\"token operator\">=</span> <span class=\"token punctuation\">[</span><span class=\"token number\">0</span><span class=\"token punctuation\">,</span> <span class=\"token number\">1</span><span class=\"token punctuation\">,</span> <span class=\"token number\">1</span><span class=\"token punctuation\">,</span> <span class=\"token number\">1</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0</span><span class=\"token punctuation\">,</span> <span class=\"token operator\">-</span><span class=\"token number\">1</span><span class=\"token punctuation\">,</span> <span class=\"token operator\">-</span><span class=\"token number\">1</span><span class=\"token punctuation\">,</span> <span class=\"token operator\">-</span><span class=\"token number\">1</span><span class=\"token punctuation\">]</span>\ndy <span class=\"token operator\">=</span> <span class=\"token punctuation\">[</span><span class=\"token operator\">-</span><span class=\"token number\">1</span><span class=\"token punctuation\">,</span> <span class=\"token operator\">-</span><span class=\"token number\">1</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0</span><span class=\"token punctuation\">,</span> <span class=\"token number\">1</span><span class=\"token punctuation\">,</span> <span class=\"token number\">1</span><span class=\"token punctuation\">,</span> <span class=\"token number\">1</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0</span><span class=\"token punctuation\">,</span> <span class=\"token operator\">-</span><span class=\"token number\">1</span><span class=\"token punctuation\">]</span>\nresult <span class=\"token operator\">=</span> <span class=\"token number\">0</span>\n\n<span class=\"token keyword\">def</span> <span class=\"token function\">move_fireball</span><span class=\"token punctuation\">(</span>count<span class=\"token punctuation\">)</span><span class=\"token punctuation\">:</span>\n    <span class=\"token comment\"># 파이어볼 수만큼 이동</span>\n    <span class=\"token keyword\">for</span> _ <span class=\"token keyword\">in</span> <span class=\"token builtin\">range</span><span class=\"token punctuation\">(</span>count<span class=\"token punctuation\">)</span><span class=\"token punctuation\">:</span>\n        next_y<span class=\"token punctuation\">,</span> next_x<span class=\"token punctuation\">,</span> m<span class=\"token punctuation\">,</span> s<span class=\"token punctuation\">,</span> d <span class=\"token operator\">=</span> fireball<span class=\"token punctuation\">.</span>pop<span class=\"token punctuation\">(</span><span class=\"token number\">0</span><span class=\"token punctuation\">)</span>\n        <span class=\"token comment\"># 방향과 속력에 맞게 다음 위치 계산</span>\n        <span class=\"token keyword\">for</span> _ <span class=\"token keyword\">in</span> <span class=\"token builtin\">range</span><span class=\"token punctuation\">(</span>s<span class=\"token punctuation\">)</span><span class=\"token punctuation\">:</span>\n            next_x <span class=\"token operator\">+=</span> dx<span class=\"token punctuation\">[</span>d<span class=\"token punctuation\">]</span>\n            next_y <span class=\"token operator\">+=</span> dy<span class=\"token punctuation\">[</span>d<span class=\"token punctuation\">]</span>\n            <span class=\"token comment\"># 행과 열은 1번과 N번이 연결되어 있음</span>\n            <span class=\"token keyword\">if</span> next_x <span class=\"token operator\">&lt;</span> <span class=\"token number\">1</span><span class=\"token punctuation\">:</span> next_x <span class=\"token operator\">=</span> N\n            <span class=\"token keyword\">elif</span> next_x <span class=\"token operator\">></span> N<span class=\"token punctuation\">:</span> next_x <span class=\"token operator\">=</span> <span class=\"token number\">1</span>\n            <span class=\"token keyword\">if</span> next_y <span class=\"token operator\">&lt;</span> <span class=\"token number\">1</span><span class=\"token punctuation\">:</span> next_y <span class=\"token operator\">=</span> N\n            <span class=\"token keyword\">elif</span> next_y <span class=\"token operator\">></span> N<span class=\"token punctuation\">:</span> next_y <span class=\"token operator\">=</span> <span class=\"token number\">1</span>\n        <span class=\"token comment\"># 다음 파이어볼의 위치를 나타낼 grid에 append</span>\n        grid<span class=\"token punctuation\">[</span>next_y<span class=\"token punctuation\">]</span><span class=\"token punctuation\">[</span>next_x<span class=\"token punctuation\">]</span><span class=\"token punctuation\">.</span>append<span class=\"token punctuation\">(</span><span class=\"token punctuation\">[</span>m<span class=\"token punctuation\">,</span> s<span class=\"token punctuation\">,</span> d<span class=\"token punctuation\">]</span><span class=\"token punctuation\">)</span>\n        \n<span class=\"token keyword\">def</span> <span class=\"token function\">check_collision</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">:</span>\n    <span class=\"token keyword\">for</span> i <span class=\"token keyword\">in</span> <span class=\"token builtin\">range</span><span class=\"token punctuation\">(</span><span class=\"token number\">1</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>\n        <span class=\"token keyword\">for</span> j <span class=\"token keyword\">in</span> <span class=\"token builtin\">range</span><span class=\"token punctuation\">(</span><span class=\"token number\">1</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>\n            n <span class=\"token operator\">=</span> <span class=\"token builtin\">len</span><span class=\"token punctuation\">(</span>grid<span class=\"token punctuation\">[</span>i<span class=\"token punctuation\">]</span><span class=\"token punctuation\">[</span>j<span class=\"token punctuation\">]</span><span class=\"token punctuation\">)</span>\n            <span class=\"token comment\"># grid에 값이 있을 때까지 반복문 진행</span>\n            <span class=\"token keyword\">if</span> n <span class=\"token operator\">==</span> <span class=\"token number\">0</span><span class=\"token punctuation\">:</span>\n                <span class=\"token keyword\">continue</span>\n            <span class=\"token comment\"># grid 좌표 값이 하나만 있으면 바로 append</span>\n            <span class=\"token keyword\">elif</span> n <span class=\"token operator\">==</span> <span class=\"token number\">1</span><span class=\"token punctuation\">:</span>\n                m<span class=\"token punctuation\">,</span> s<span class=\"token punctuation\">,</span> d <span class=\"token operator\">=</span> grid<span class=\"token punctuation\">[</span>i<span class=\"token punctuation\">]</span><span class=\"token punctuation\">[</span>j<span class=\"token punctuation\">]</span><span class=\"token punctuation\">.</span>pop<span class=\"token punctuation\">(</span><span class=\"token number\">0</span><span class=\"token punctuation\">)</span>\n                fireball<span class=\"token punctuation\">.</span>append<span class=\"token punctuation\">(</span><span class=\"token punctuation\">[</span>i<span class=\"token punctuation\">,</span> j<span class=\"token punctuation\">,</span> m<span class=\"token punctuation\">,</span> s<span class=\"token punctuation\">,</span> d<span class=\"token punctuation\">]</span><span class=\"token punctuation\">)</span>\n            <span class=\"token comment\"># 둘 이상이면 문제에 주어진대로 계산</span>\n            <span class=\"token keyword\">else</span><span class=\"token punctuation\">:</span>\n                m_sum<span class=\"token punctuation\">,</span> s_sum<span class=\"token punctuation\">,</span> <span class=\"token builtin\">dir</span><span class=\"token punctuation\">,</span> last_d <span class=\"token operator\">=</span> <span class=\"token number\">0</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0</span><span class=\"token punctuation\">,</span> <span class=\"token boolean\">True</span><span class=\"token punctuation\">,</span> <span class=\"token operator\">-</span><span class=\"token number\">1</span>\n                <span class=\"token keyword\">while</span> grid<span class=\"token punctuation\">[</span>i<span class=\"token punctuation\">]</span><span class=\"token punctuation\">[</span>j<span class=\"token punctuation\">]</span><span class=\"token punctuation\">:</span>\n                    m<span class=\"token punctuation\">,</span> s<span class=\"token punctuation\">,</span> d <span class=\"token operator\">=</span> grid<span class=\"token punctuation\">[</span>i<span class=\"token punctuation\">]</span><span class=\"token punctuation\">[</span>j<span class=\"token punctuation\">]</span><span class=\"token punctuation\">.</span>pop<span class=\"token punctuation\">(</span><span class=\"token number\">0</span><span class=\"token punctuation\">)</span>\n                    m_sum <span class=\"token operator\">+=</span> m\n                    s_sum <span class=\"token operator\">+=</span> s\n                    <span class=\"token keyword\">if</span> last_d <span class=\"token operator\">==</span> <span class=\"token operator\">-</span><span class=\"token number\">1</span><span class=\"token punctuation\">:</span>\n                        last_d <span class=\"token operator\">=</span> d\n                    <span class=\"token comment\"># 하나라도 홀수, 짝수가 섞일 경우 False 저장</span>\n                    <span class=\"token keyword\">else</span><span class=\"token punctuation\">:</span>\n                        <span class=\"token keyword\">if</span> last_d<span class=\"token operator\">%</span><span class=\"token number\">2</span> <span class=\"token operator\">!=</span> d<span class=\"token operator\">%</span><span class=\"token number\">2</span><span class=\"token punctuation\">:</span> <span class=\"token builtin\">dir</span> <span class=\"token operator\">=</span> <span class=\"token boolean\">False</span>\n                <span class=\"token comment\"># 질량이 0이하면 버림</span>\n                <span class=\"token keyword\">if</span> m_sum<span class=\"token operator\">//</span><span class=\"token number\">5</span> <span class=\"token operator\">></span> <span class=\"token number\">0</span><span class=\"token punctuation\">:</span>\n                    <span class=\"token keyword\">if</span> <span class=\"token builtin\">dir</span><span class=\"token punctuation\">:</span>\n                        <span class=\"token keyword\">for</span> k <span class=\"token keyword\">in</span> <span class=\"token builtin\">range</span><span class=\"token punctuation\">(</span><span class=\"token number\">4</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">:</span>\n                            fireball<span class=\"token punctuation\">.</span>append<span class=\"token punctuation\">(</span><span class=\"token punctuation\">[</span>i<span class=\"token punctuation\">,</span> j<span class=\"token punctuation\">,</span> m_sum<span class=\"token operator\">//</span><span class=\"token number\">5</span><span class=\"token punctuation\">,</span> s_sum<span class=\"token operator\">//</span>n<span class=\"token punctuation\">,</span> k<span class=\"token operator\">*</span><span class=\"token number\">2</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">)</span>\n                    <span class=\"token keyword\">else</span><span class=\"token punctuation\">:</span>\n                        <span class=\"token keyword\">for</span> k <span class=\"token keyword\">in</span> <span class=\"token builtin\">range</span><span class=\"token punctuation\">(</span><span class=\"token number\">4</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">:</span>\n                            fireball<span class=\"token punctuation\">.</span>append<span class=\"token punctuation\">(</span><span class=\"token punctuation\">[</span>i<span class=\"token punctuation\">,</span> j<span class=\"token punctuation\">,</span> m_sum<span class=\"token operator\">//</span><span class=\"token number\">5</span><span class=\"token punctuation\">,</span> s_sum<span class=\"token operator\">//</span>n<span class=\"token punctuation\">,</span> k<span class=\"token operator\">*</span><span class=\"token number\">2</span><span class=\"token operator\">+</span><span class=\"token number\">1</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">)</span>\n\n<span class=\"token keyword\">for</span> _ <span class=\"token keyword\">in</span> <span class=\"token builtin\">range</span><span class=\"token punctuation\">(</span>K<span class=\"token punctuation\">)</span><span class=\"token punctuation\">:</span>\n    move_fireball<span class=\"token punctuation\">(</span><span class=\"token builtin\">len</span><span class=\"token punctuation\">(</span>fireball<span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span>\n    check_collision<span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span>\n<span class=\"token keyword\">for</span> i <span class=\"token keyword\">in</span> fireball<span class=\"token punctuation\">:</span>\n    result <span class=\"token operator\">+=</span> i<span class=\"token punctuation\">[</span><span class=\"token number\">2</span><span class=\"token punctuation\">]</span>\n<span class=\"token keyword\">print</span><span class=\"token punctuation\">(</span>result<span class=\"token punctuation\">)</span></code></pre></div>\n</details>\n<hr>\n<h2 id=\"-review\" style=\"position:relative;\"><a href=\"#-review\" aria-label=\" review permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>📝 Review</h2>\n<p>처음에 문제를 제대로 이해하기가 약간 어려웠지만 주어진 예제를 손으로 풀어보니까 이해됐다<br>\n그 다음 구현하는 과정은 문제에서 주어진대로만 하면 돼서 나름 쉽게 해결</p>\n<div class=\"table-of-contents\">\n<ul>\n<li><a href=\"#%EB%AC%B8%EC%A0%9C\">문제</a></li>\n<li><a href=\"#%EC%9E%85%EB%A0%A5\">입력</a></li>\n<li><a href=\"#%EC%B6%9C%EB%A0%A5\">출력</a></li>\n<li><a href=\"#-algorithm\">🔍 Algorithm</a></li>\n<li><a href=\"#-logic\">💻 Logic</a></li>\n<li><a href=\"#-code\">🧩 Code</a></li>\n<li><a href=\"#-review\">📝 Review</a></li>\n</ul>\n</div>","excerpt":"문제 https://www.acmicpc.net/problem/20056 어른 상어가 마법사가 되었고, 파이어볼을 배웠다. 마법사 상어가 크기가 N×N인 격자에 파이어볼 M개를 발사했다. 가장 처음에 파이어볼은 각자 위치에서 이동을 대기하고 있다. i번 파이어볼의 위치는 (ri, ci), 질량은 mi이고, 방향은 di, 속력은 si이다. 위치 (r, c)는 r행 c열을 의미한다. 격자의 행과 열은 1번부터 N번까지 번호가 매겨져 있고, 1번 행은 N번과 연결되어 있고, 1번 열은 N번 열과 연결되어 있다. 파이어볼의 방향은 어떤 칸과 인접한 8개의 칸의 방향을 의미하며, 정수로는 다음과 같다.  마법사 상어가 모든 파이어볼에게 이동을 명령하면 다음이 일들이 일어난다. 모든 파이어볼이 자신의 방향 di로 속력 si칸 만큼 이동한다. 이동하는 중에는 같은 칸에 여러 개의 파이어볼이 있을 수도 있다. 이동이 모두 끝난 뒤, 2개 이상의 파이어볼이 있는 칸에서는 다음과 같은 일이 일어난다…","frontmatter":{"date":"January 19, 2022","title":"[BOJ] 20056번: 마법사 상어와 파이어볼 (Python)","categories":"Algorithm","author":"JFe","emoji":"💻"},"fields":{"slug":"/boj-20056/"}},"next":{"id":"d8a9e6b6-ae92-54eb-acff-605211e941e4","html":"<h2 id=\"문제\" style=\"position:relative;\"><a href=\"#%EB%AC%B8%EC%A0%9C\" aria-label=\"문제 permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>문제</h2>\n<p><a href=\"https://www.acmicpc.net/problem/19237\">https://www.acmicpc.net/problem/19237</a></p>\n<p>청소년 상어는 더욱 자라 어른 상어가 되었다. 상어가 사는 공간에 더 이상 물고기는 오지 않고 다른 상어들만이 남아있다. 상어에는 1 이상 M 이하의 자연수 번호가 붙어 있고, 모든 번호는 서로 다르다. 상어들은 영역을 사수하기 위해 다른 상어들을 쫓아내려고 하는데, 1의 번호를 가진 어른 상어는 가장 강력해서 나머지 모두를 쫓아낼 수 있다.</p>\n<p>N×N 크기의 격자 중 M개의 칸에 상어가 한 마리씩 들어 있다. 맨 처음에는 모든 상어가 자신의 위치에 자신의 냄새를 뿌린다. 그 후 1초마다 모든 상어가 동시에 상하좌우로 인접한 칸 중 하나로 이동하고, 자신의 냄새를 그 칸에 뿌린다. 냄새는 상어가 k번 이동하고 나면 사라진다.</p>\n<p>각 상어가 이동 방향을 결정할 때는, 먼저 인접한 칸 중 아무 냄새가 없는 칸의 방향으로 잡는다. 그런 칸이 없으면 자신의 냄새가 있는 칸의 방향으로 잡는다. 이때 가능한 칸이 여러 개일 수 있는데, 그 경우에는 특정한 우선순위를 따른다. 우선순위는 상어마다 다를 수 있고, 같은 상어라도 현재 상어가 보고 있는 방향에 따라 또 다를 수 있다. 상어가 맨 처음에 보고 있는 방향은 입력으로 주어지고, 그 후에는 방금 이동한 방향이 보고 있는 방향이 된다.</p>\n<p>모든 상어가 이동한 후 한 칸에 여러 마리의 상어가 남아 있으면, 가장 작은 번호를 가진 상어를 제외하고 모두 격자 밖으로 쫓겨난다.</p>\n<p><span\n      class=\"gatsby-resp-image-wrapper\"\n      style=\"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 720px; \"\n    >\n      <span\n    class=\"gatsby-resp-image-background-image\"\n    style=\"padding-bottom: 35.55555555555556%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAHCAYAAAAIy204AAAACXBIWXMAAA7DAAAOwwHHb6hkAAAApElEQVQoz52R3QrDIAyF+/5P17HrlV2sdPQvGqMtpXpGhI4yxmAeOEQ8+hFNhQ+llLJV27YhhIBlWeC9hxMBO3nnRz2r+gZU7fsOZoYxBsZqJTz7AZemzVkRUJxD24+43juwNZiJMMxUBkwxohsm1LcHgpfc6ThNqJs2Z0UdWmvB1kJEQEQZqnvFT9Y/VCvwgDnH/wHPB2OM+fK6rnnSulb/mvILt9cmTbqok3cAAAAASUVORK5CYII='); background-size: cover; display: block;\"\n  ></span>\n  <img\n        class=\"gatsby-resp-image-image\"\n        alt=\"19237-img1.png\"\n        title=\"19237-img1.png\"\n        src=\"/static/3734c34ebca500f74624403e4ec25205/37523/19237-img1.png\"\n        srcset=\"/static/3734c34ebca500f74624403e4ec25205/e9ff0/19237-img1.png 180w,\n/static/3734c34ebca500f74624403e4ec25205/f21e7/19237-img1.png 360w,\n/static/3734c34ebca500f74624403e4ec25205/37523/19237-img1.png 720w,\n/static/3734c34ebca500f74624403e4ec25205/302a4/19237-img1.png 1080w,\n/static/3734c34ebca500f74624403e4ec25205/22c86/19237-img1.png 1143w\"\n        sizes=\"(max-width: 720px) 100vw, 720px\"\n        style=\"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;\"\n        loading=\"lazy\"\n        decoding=\"async\"\n      />\n    </span><br>\n<span\n      class=\"gatsby-resp-image-wrapper\"\n      style=\"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 720px; \"\n    >\n      <span\n    class=\"gatsby-resp-image-background-image\"\n    style=\"padding-bottom: 26.111111111111107%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAFCAYAAABFA8wzAAAACXBIWXMAAA7DAAAOwwHHb6hkAAAAf0lEQVQY04WQWw5EIQhD3f96fQs6OWRq5v7cISHUUiqa3P3svU/v/ZhZ4Ej34MCllEj/4TS31npwCRNArfWMMQIjomICp0G0Oefb5wyG0zLJbF1Bay3qnPMacztYxlRtBCY4qx8b6iYMhe1rDIcQrK/RsDg0wun+2UvqucQ/7Qees4prLicy8QAAAABJRU5ErkJggg=='); background-size: cover; display: block;\"\n  ></span>\n  <img\n        class=\"gatsby-resp-image-image\"\n        alt=\"19237-priority.png\"\n        title=\"19237-priority.png\"\n        src=\"/static/efe04be07d12ead39fac92f2957c7988/37523/19237-priority.png\"\n        srcset=\"/static/efe04be07d12ead39fac92f2957c7988/e9ff0/19237-priority.png 180w,\n/static/efe04be07d12ead39fac92f2957c7988/f21e7/19237-priority.png 360w,\n/static/efe04be07d12ead39fac92f2957c7988/37523/19237-priority.png 720w,\n/static/efe04be07d12ead39fac92f2957c7988/302a4/19237-priority.png 1080w,\n/static/efe04be07d12ead39fac92f2957c7988/a13c9/19237-priority.png 1178w\"\n        sizes=\"(max-width: 720px) 100vw, 720px\"\n        style=\"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;\"\n        loading=\"lazy\"\n        decoding=\"async\"\n      />\n    </span></p>\n<p>&#x3C;그림 1>은 맨 처음에 모든 상어가 자신의 냄새를 뿌린 상태를 나타내며, &#x3C;표 1>에는 각 상어 및 현재 방향에 따른 우선순위가 표시되어 있다. 이 예제에서는 k = 4이다. 왼쪽 하단에 적힌 정수는 냄새를 의미하고, 그 값은 사라지기까지 남은 시간이다. 좌측 상단에 적힌 정수는 상어의 번호 또는 냄새를 뿌린 상어의 번호를 의미한다.</p>\n<p><span\n      class=\"gatsby-resp-image-wrapper\"\n      style=\"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 720px; \"\n    >\n      <span\n    class=\"gatsby-resp-image-background-image\"\n    style=\"padding-bottom: 72.77777777777777%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAPCAYAAADkmO9VAAAACXBIWXMAAA7DAAAOwwHHb6hkAAACKklEQVQ4y21UCW7iQBDMA3nO5ie8iAcgsYqysAvEHMbn3OPbplbdDiaQjDSaRl19VuGX6/UKOl3Xoaoqvk3ToGsb9F3LPsLccG3boq5rxrRtg7Yh+457IaPvOiil4YyG0QreWezDBOtTMhUjMCUzRiMXEnXp8XFJ8bY/oyz8VJAT1nWD0hn8OUQILilK75BLhSSX+HrKsuTC3mjsowzrY4Q8F3DOPSak1t+DEJvDBamQKJxDmArsLhm6psGv11csl0sOkEJgHYQ8weYUY3uOUfinDtumwSGMkQnJI1trkeYC51Swbz6fY7vdYhgGKCEQhDGkNow5hpTwqUNasLOWr9YG3nsURfEAvI1sjOEds7/wHOOfO6SlE4AC6N7YpktAKngjhfyEJV9ZVWwT61PCm0Fv33cjo8OA69Cj73uMpNU8Lh1675gBXd9Pvkk2ZFDb+nOcTGpEufwc5a5DCiRGnTWIhWacVgreF48JaSQpJbTWSHOJ9+DCLHprpup0aEylFLRW+HuKWWZJksI/y4Z0SAmTNMfbxxn/zgl3SwRQwtVqxX7aoZQKIhewWmNzjLh49V3YNYwU+L07I85yBJcE60PEQOc9ZrMZFosFB2RpBqskd7g7RfBKssy+yYZ2YY3mkUgKhbPc5VfZ1HXFayFMwbu03Pm3fwrr0Dn4ouB3lE/FpDzssK5HnPcsGcKxXZaPCekHSWH8grTjpS9O15GXtdb3w4+4ZsKNLP8HjtSDJ6ZvCNYAAAAASUVORK5CYII='); background-size: cover; display: block;\"\n  ></span>\n  <img\n        class=\"gatsby-resp-image-image\"\n        alt=\"19237-img23.png\"\n        title=\"19237-img23.png\"\n        src=\"/static/551aeba70384e5963fbfa614037fcac0/37523/19237-img23.png\"\n        srcset=\"/static/551aeba70384e5963fbfa614037fcac0/e9ff0/19237-img23.png 180w,\n/static/551aeba70384e5963fbfa614037fcac0/f21e7/19237-img23.png 360w,\n/static/551aeba70384e5963fbfa614037fcac0/37523/19237-img23.png 720w,\n/static/551aeba70384e5963fbfa614037fcac0/302a4/19237-img23.png 1080w,\n/static/551aeba70384e5963fbfa614037fcac0/d56e1/19237-img23.png 1130w\"\n        sizes=\"(max-width: 720px) 100vw, 720px\"\n        style=\"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;\"\n        loading=\"lazy\"\n        decoding=\"async\"\n      />\n    </span><br>\n&#x3C;그림 2>는 모든 상어가 한 칸 이동하고 자신의 냄새를 뿌린 상태이고, &#x3C;그림 3>은 &#x3C;그림 2>의 상태에서 한 칸 더 이동한 것이다. (2, 4)에는 상어 2과 4가 같이 도달했기 때문에, 상어 4는 격자 밖으로 쫓겨났다.</p>\n<p><span\n      class=\"gatsby-resp-image-wrapper\"\n      style=\"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 720px; \"\n    >\n      <span\n    class=\"gatsby-resp-image-background-image\"\n    style=\"padding-bottom: 73.88888888888889%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAPCAYAAADkmO9VAAAACXBIWXMAAA7DAAAOwwHHb6hkAAACI0lEQVQ4y3VUWXIaMRDldJyJW3Aw7HwkoYpAbBPMNoz2bTZmXqqbCBtwVNUjlfTmtbr7tUbDMICMRtu2qOsafdvwXNcNzuczn2UMjaZp0Hctz2QpVei6C26UgUSgtYZSCk+rDUqpYI1BTInJuq674KoKUio8rzYQykBKCa0Umrq6JYwxQmnNgENR4sfbHseTQIoRn4f3np2u9wW0NrBaYf62w1HZW8IQIoQQkGWJX5s9lpsDilKi78+Yz+eYTCYIISDGBCkkEyXnoKXEenuAduGWkG5iFIWp8borOFxvDedwuVxiOp1yWghHJEpK/N6eOCKnFaeCCXPCKWTrHJxziN4jBP/vRo8hE8Zai5d9CW0sr1NVPRaFwPyDv5CRcdX7nqtJo6oqdkJ2bqnCl3U+H32WwzD09MXQ90xCRqc0E/HHGHiP0pHnzHMlpE1rHbaFgFQa1nkOJecm45q2w+4kobThSAhjjL46vJWNlHhebnA8lfDWsny0dTc5NMbi2+odZSngrMWuKHGSClVKXxAqBUfilhLBWfx83WIrDNqmxmKx4ChiDIjOMtY7i+8v7/izLz6qfCUMAZJ0KCROpYDVBkoIPpvNZhiPx6xTSj5JhbVoDDunTkn3NyR9UYVj8HhabRFiYie59XKOcvVJOk2KmK8P2JUaXdNwAW9C1sbAGMO9SuS0pp/vdUj71PfBe24/atmHG1L56bW5tyyLLPD/4fKr9Bf2fYNIGHZMFgAAAABJRU5ErkJggg=='); background-size: cover; display: block;\"\n  ></span>\n  <img\n        class=\"gatsby-resp-image-image\"\n        alt=\"19237-img45.png\"\n        title=\"19237-img45.png\"\n        src=\"/static/aa7daf734eb7cce1e129b6acbe6a165c/37523/19237-img45.png\"\n        srcset=\"/static/aa7daf734eb7cce1e129b6acbe6a165c/e9ff0/19237-img45.png 180w,\n/static/aa7daf734eb7cce1e129b6acbe6a165c/f21e7/19237-img45.png 360w,\n/static/aa7daf734eb7cce1e129b6acbe6a165c/37523/19237-img45.png 720w,\n/static/aa7daf734eb7cce1e129b6acbe6a165c/302a4/19237-img45.png 1080w,\n/static/aa7daf734eb7cce1e129b6acbe6a165c/ae77d/19237-img45.png 1111w\"\n        sizes=\"(max-width: 720px) 100vw, 720px\"\n        style=\"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;\"\n        loading=\"lazy\"\n        decoding=\"async\"\n      />\n    </span><br>\n&#x3C;그림 4>은 격자에 남아있는 모든 상어가 한 칸 이동하고 자신의 냄새를 뿌린 상태, &#x3C;그림 5>는 &#x3C;그림 4>에서 한 칸 더 이동한 상태를 나타낸다. 상어 2는 인접한 칸 중에 아무 냄새도 없는 칸이 없으므로 자신의 냄새가 들어있는 (2, 4)으로 이동했다. 상어가 이동한 후에, 맨 처음에 각 상어가 뿌린 냄새는 사라졌다.</p>\n<p>이 과정을 반복할 때, 1번 상어만 격자에 남게 되기까지 몇 초가 걸리는지를 구하는 프로그램을 작성하시오.</p>\n<hr>\n<h2 id=\"입력\" style=\"position:relative;\"><a href=\"#%EC%9E%85%EB%A0%A5\" aria-label=\"입력 permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>입력</h2>\n<p>첫 줄에는 N, M, k가 주어진다. (2 ≤ N ≤ 20, 2 ≤ M ≤ N2, 1 ≤ k ≤ 1,000)</p>\n<p>그 다음 줄부터 N개의 줄에 걸쳐 격자의 모습이 주어진다. 0은 빈칸이고, 0이 아닌 수 x는 x번 상어가 들어있는 칸을 의미한다.</p>\n<p>그 다음 줄에는 각 상어의 방향이 차례대로 주어진다. 1, 2, 3, 4는 각각 위, 아래, 왼쪽, 오른쪽을 의미한다.</p>\n<p>그 다음 줄부터 각 상어의 방향 우선순위가 상어 당 4줄씩 차례대로 주어진다. 각 줄은 4개의 수로 이루어져 있다. 하나의 상어를 나타내는 네 줄 중 첫 번째 줄은 해당 상어가 위를 향할 때의 방향 우선순위, 두 번째 줄은 아래를 향할 때의 우선순위, 세 번째 줄은 왼쪽을 향할 때의 우선순위, 네 번째 줄은 오른쪽을 향할 때의 우선순위이다. 각 우선순위에는 1부터 4까지의 자연수가 한 번씩 나타난다. 가장 먼저 나오는 방향이 최우선이다. 예를 들어, 우선순위가 1 3 2 4라면, 방향의 순서는 위, 왼쪽, 아래, 오른쪽이다.</p>\n<p>맨 처음에는 각 상어마다 인접한 빈 칸이 존재한다. 따라서 처음부터 이동을 못 하는 경우는 없다.</p>\n<hr>\n<h2 id=\"출력\" style=\"position:relative;\"><a href=\"#%EC%B6%9C%EB%A0%A5\" aria-label=\"출력 permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>출력</h2>\n<p>1번 상어만 격자에 남게 되기까지 걸리는 시간을 출력한다. 단, 1,000초가 넘어도 다른 상어가 격자에 남아 있으면 -1을 출력한다.</p>\n<hr>\n<h2 id=\"-algorithm\" style=\"position:relative;\"><a href=\"#-algorithm\" aria-label=\" algorithm permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>🔍 Algorithm</h2>\n<p><strong>시뮬레이션</strong></p>\n<h2 id=\"-logic\" style=\"position:relative;\"><a href=\"#-logic\" aria-label=\" logic permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>💻 Logic</h2>\n<div class=\"gatsby-highlight\" data-language=\"python\"><pre class=\"language-python\"><code class=\"language-python\"><span class=\"token keyword\">def</span> <span class=\"token function\">update_grid</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">:</span>\n    <span class=\"token keyword\">for</span> i <span class=\"token keyword\">in</span> <span class=\"token builtin\">range</span><span class=\"token punctuation\">(</span>N<span class=\"token punctuation\">)</span><span class=\"token punctuation\">:</span>\n        <span class=\"token keyword\">for</span> j <span class=\"token keyword\">in</span> <span class=\"token builtin\">range</span><span class=\"token punctuation\">(</span>N<span class=\"token punctuation\">)</span><span class=\"token punctuation\">:</span>\n            <span class=\"token keyword\">if</span> grid<span class=\"token punctuation\">[</span>i<span class=\"token punctuation\">]</span><span class=\"token punctuation\">[</span>j<span class=\"token punctuation\">]</span> <span class=\"token operator\">!=</span> <span class=\"token number\">0</span><span class=\"token punctuation\">:</span>\n                <span class=\"token comment\"># 시간 -1</span>\n                grid<span class=\"token punctuation\">[</span>i<span class=\"token punctuation\">]</span><span class=\"token punctuation\">[</span>j<span class=\"token punctuation\">]</span><span class=\"token punctuation\">[</span><span class=\"token number\">1</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">-=</span> <span class=\"token number\">1</span>\n                <span class=\"token comment\"># 시간이 0이면 해당 좌표 0으로 초기화</span>\n                <span class=\"token keyword\">if</span> grid<span class=\"token punctuation\">[</span>i<span class=\"token punctuation\">]</span><span class=\"token punctuation\">[</span>j<span class=\"token punctuation\">]</span><span class=\"token punctuation\">[</span><span class=\"token number\">1</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">==</span> <span class=\"token number\">0</span><span class=\"token punctuation\">:</span>\n                    grid<span class=\"token punctuation\">[</span>i<span class=\"token punctuation\">]</span><span class=\"token punctuation\">[</span>j<span class=\"token punctuation\">]</span> <span class=\"token operator\">=</span> <span class=\"token number\">0</span></code></pre></div>\n<ul>\n<li>냄새가 남아있는 시간 업데이트하는 함수<br>\n시간이 <strong>0</strong>이면 해당 좌표 값 <strong>0</strong>으로 초기화<br>\n아니면 좌표 값 <strong>-1</strong></li>\n</ul>\n<hr>\n<div class=\"gatsby-highlight\" data-language=\"python\"><pre class=\"language-python\"><code class=\"language-python\"><span class=\"token keyword\">def</span> <span class=\"token function\">move_shark</span><span class=\"token punctuation\">(</span>copy_grid<span class=\"token punctuation\">,</span> n<span class=\"token punctuation\">,</span> x<span class=\"token punctuation\">,</span> y<span class=\"token punctuation\">)</span><span class=\"token punctuation\">:</span>\n    check <span class=\"token operator\">=</span> <span class=\"token boolean\">False</span>\n    p <span class=\"token operator\">=</span> priority<span class=\"token punctuation\">[</span>n<span class=\"token punctuation\">]</span><span class=\"token punctuation\">[</span>cur_dir<span class=\"token punctuation\">[</span>n<span class=\"token punctuation\">]</span><span class=\"token operator\">-</span><span class=\"token number\">1</span><span class=\"token punctuation\">]</span>\n    <span class=\"token comment\"># 우선순위에 맞게 다음 위치 계산</span>\n    <span class=\"token keyword\">for</span> p <span class=\"token keyword\">in</span> priority<span class=\"token punctuation\">[</span>n<span class=\"token punctuation\">]</span><span class=\"token punctuation\">[</span>cur_dir<span class=\"token punctuation\">[</span>n<span class=\"token punctuation\">]</span><span class=\"token operator\">-</span><span class=\"token number\">1</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">:</span>\n        next_x <span class=\"token operator\">=</span> x <span class=\"token operator\">+</span> dx<span class=\"token punctuation\">[</span>p<span class=\"token operator\">-</span><span class=\"token number\">1</span><span class=\"token punctuation\">]</span>\n        next_y <span class=\"token operator\">=</span> y <span class=\"token operator\">+</span> dy<span class=\"token punctuation\">[</span>p<span class=\"token operator\">-</span><span class=\"token number\">1</span><span class=\"token punctuation\">]</span>\n        <span class=\"token comment\"># 다음 위치가 boundary 안이고 0인지 확인</span>\n        <span class=\"token keyword\">if</span> <span class=\"token number\">0</span> <span class=\"token operator\">&lt;=</span> next_x <span class=\"token operator\">&lt;</span> N <span class=\"token keyword\">and</span> <span class=\"token number\">0</span> <span class=\"token operator\">&lt;=</span> next_y <span class=\"token operator\">&lt;</span> N<span class=\"token punctuation\">:</span>\n            <span class=\"token keyword\">if</span> copy_grid<span class=\"token punctuation\">[</span>next_y<span class=\"token punctuation\">]</span><span class=\"token punctuation\">[</span>next_x<span class=\"token punctuation\">]</span> <span class=\"token operator\">==</span> <span class=\"token number\">0</span><span class=\"token punctuation\">:</span>\n                <span class=\"token comment\"># 실제 grid가 0일 때만 진행</span>\n                <span class=\"token keyword\">if</span> grid<span class=\"token punctuation\">[</span>next_y<span class=\"token punctuation\">]</span><span class=\"token punctuation\">[</span>next_x<span class=\"token punctuation\">]</span> <span class=\"token operator\">==</span> <span class=\"token number\">0</span><span class=\"token punctuation\">:</span>\n                    grid<span class=\"token punctuation\">[</span>next_y<span class=\"token punctuation\">]</span><span class=\"token punctuation\">[</span>next_x<span class=\"token punctuation\">]</span> <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> k<span class=\"token operator\">+</span><span class=\"token number\">1</span><span class=\"token punctuation\">]</span>\n                shark<span class=\"token punctuation\">[</span>n<span class=\"token punctuation\">]</span> <span class=\"token operator\">=</span> <span class=\"token punctuation\">(</span>next_x<span class=\"token punctuation\">,</span> next_y<span class=\"token punctuation\">)</span>\n                cur_dir<span class=\"token punctuation\">[</span>n<span class=\"token punctuation\">]</span> <span class=\"token operator\">=</span> p\n                check <span class=\"token operator\">=</span> <span class=\"token boolean\">True</span>\n                <span class=\"token keyword\">break</span>\n    <span class=\"token comment\"># 주변에 0인 칸이 없는 경우</span>\n    <span class=\"token keyword\">if</span> <span class=\"token keyword\">not</span> check<span class=\"token punctuation\">:</span>\n        <span class=\"token keyword\">for</span> p <span class=\"token keyword\">in</span> priority<span class=\"token punctuation\">[</span>n<span class=\"token punctuation\">]</span><span class=\"token punctuation\">[</span>cur_dir<span class=\"token punctuation\">[</span>n<span class=\"token punctuation\">]</span><span class=\"token operator\">-</span><span class=\"token number\">1</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">:</span>\n            next_x <span class=\"token operator\">=</span> x <span class=\"token operator\">+</span> dx<span class=\"token punctuation\">[</span>p<span class=\"token operator\">-</span><span class=\"token number\">1</span><span class=\"token punctuation\">]</span>\n            next_y <span class=\"token operator\">=</span> y <span class=\"token operator\">+</span> dy<span class=\"token punctuation\">[</span>p<span class=\"token operator\">-</span><span class=\"token number\">1</span><span class=\"token punctuation\">]</span>\n            <span class=\"token keyword\">if</span> <span class=\"token number\">0</span> <span class=\"token operator\">&lt;=</span> next_x <span class=\"token operator\">&lt;</span> N <span class=\"token keyword\">and</span> <span class=\"token number\">0</span> <span class=\"token operator\">&lt;=</span> next_y <span class=\"token operator\">&lt;</span> N<span class=\"token punctuation\">:</span>\n                <span class=\"token comment\"># 자기 냄새가 있는 곳으로 돌아감</span>\n                <span class=\"token keyword\">if</span> copy_grid<span class=\"token punctuation\">[</span>next_y<span class=\"token punctuation\">]</span><span class=\"token punctuation\">[</span>next_x<span class=\"token punctuation\">]</span><span class=\"token punctuation\">[</span><span class=\"token number\">0</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">==</span> n<span class=\"token operator\">+</span><span class=\"token number\">1</span><span class=\"token punctuation\">:</span>\n                    <span class=\"token keyword\">if</span> grid<span class=\"token punctuation\">[</span>next_y<span class=\"token punctuation\">]</span><span class=\"token punctuation\">[</span>next_x<span class=\"token punctuation\">]</span><span class=\"token punctuation\">[</span><span class=\"token number\">0</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">==</span> n<span class=\"token operator\">+</span><span class=\"token number\">1</span><span class=\"token punctuation\">:</span>\n                        grid<span class=\"token punctuation\">[</span>next_y<span class=\"token punctuation\">]</span><span class=\"token punctuation\">[</span>next_x<span class=\"token punctuation\">]</span> <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> k<span class=\"token operator\">+</span><span class=\"token number\">1</span><span class=\"token punctuation\">]</span>\n                    shark<span class=\"token punctuation\">[</span>n<span class=\"token punctuation\">]</span> <span class=\"token operator\">=</span> <span class=\"token punctuation\">(</span>next_x<span class=\"token punctuation\">,</span> next_y<span class=\"token punctuation\">)</span>\n                    cur_dir<span class=\"token punctuation\">[</span>n<span class=\"token punctuation\">]</span> <span class=\"token operator\">=</span> p\n                    <span class=\"token keyword\">break</span></code></pre></div>\n<ul>\n<li>상어 이동 함수\n<ul>\n<li><strong>우선순위에 맞게 다음 위치 계산</strong><br>\n다음 위치가 <strong>boundary 안</strong>이고 <strong>0</strong>인지 확인<br>\n실제 <code class=\"language-text\">grid</code>가 <strong>0</strong>일 때만 <code class=\"language-text\">grid</code>에 <code class=\"language-text\">[n+1, k+1]</code> 값 넣고, 현재 상어 위치, 방향 다시 설정</li>\n<li><strong>주변에 0인 칸이 없는 경우</strong><br>\n우선순위에 맞게 다시 다음 위치 계산<br>\n<code class=\"language-text\">grid</code>가 <strong>n+1</strong>인 경우, <code class=\"language-text\">grid</code>에 <code class=\"language-text\">[n+1, k+1]</code> 값 넣고, 현재 상어 위치, 방향 다시 설정</li>\n</ul>\n</li>\n</ul>\n<hr>\n<div class=\"gatsby-highlight\" data-language=\"python\"><pre class=\"language-python\"><code class=\"language-python\"><span class=\"token keyword\">def</span> <span class=\"token function\">check_collision</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">:</span>\n    <span class=\"token keyword\">global</span> num\n    <span class=\"token keyword\">for</span> i <span class=\"token keyword\">in</span> <span class=\"token builtin\">range</span><span class=\"token punctuation\">(</span>M<span class=\"token punctuation\">)</span><span class=\"token punctuation\">:</span>\n        <span class=\"token keyword\">if</span> shark<span class=\"token punctuation\">[</span>i<span class=\"token punctuation\">]</span> <span class=\"token operator\">==</span> <span class=\"token operator\">-</span><span class=\"token number\">1</span><span class=\"token punctuation\">:</span>\n            <span class=\"token keyword\">continue</span>\n        <span class=\"token keyword\">for</span> j <span class=\"token keyword\">in</span> <span class=\"token builtin\">range</span><span class=\"token punctuation\">(</span>i<span class=\"token operator\">+</span><span class=\"token number\">1</span><span class=\"token punctuation\">,</span> M<span class=\"token punctuation\">)</span><span class=\"token punctuation\">:</span>\n            <span class=\"token comment\"># 중복되는 위치에 있으면, 숫자가 큰 상어의 위치를 -1로 초기화하고 num -1</span>\n            <span class=\"token keyword\">if</span> shark<span class=\"token punctuation\">[</span>i<span class=\"token punctuation\">]</span> <span class=\"token operator\">==</span> shark<span class=\"token punctuation\">[</span>j<span class=\"token punctuation\">]</span><span class=\"token punctuation\">:</span>\n                shark<span class=\"token punctuation\">[</span>j<span class=\"token punctuation\">]</span> <span class=\"token operator\">=</span> <span class=\"token operator\">-</span><span class=\"token number\">1</span>\n                num <span class=\"token operator\">-=</span> <span class=\"token number\">1</span></code></pre></div>\n<ul>\n<li>상어 중복 처리 함수<br>\n중복되는 위치에 있으면, 숫자가 큰 상어의 위치를 <strong>-1</strong>로 초기화하고 <code class=\"language-text\">num</code> <strong>-1</strong></li>\n</ul>\n<hr>\n<div class=\"gatsby-highlight\" data-language=\"python\"><pre class=\"language-python\"><code class=\"language-python\"><span class=\"token keyword\">while</span><span class=\"token punctuation\">(</span>num <span class=\"token operator\">></span> <span class=\"token number\">1</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">:</span>\n    <span class=\"token keyword\">if</span><span class=\"token punctuation\">(</span>count <span class=\"token operator\">>=</span> <span class=\"token number\">1000</span> <span class=\"token keyword\">and</span> num <span class=\"token operator\">></span> <span class=\"token number\">1</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">:</span>\n        count <span class=\"token operator\">=</span> <span class=\"token operator\">-</span><span class=\"token number\">1</span>\n        <span class=\"token keyword\">break</span>\n    count <span class=\"token operator\">+=</span> <span class=\"token number\">1</span>\n    copy_grid <span class=\"token operator\">=</span> copy<span class=\"token punctuation\">.</span>deepcopy<span class=\"token punctuation\">(</span>grid<span class=\"token punctuation\">)</span>\n    <span class=\"token keyword\">for</span> i <span class=\"token keyword\">in</span> <span class=\"token builtin\">range</span><span class=\"token punctuation\">(</span>M<span class=\"token punctuation\">)</span><span class=\"token punctuation\">:</span>\n        <span class=\"token keyword\">if</span> shark<span class=\"token punctuation\">[</span>i<span class=\"token punctuation\">]</span> <span class=\"token operator\">!=</span> <span class=\"token operator\">-</span><span class=\"token number\">1</span><span class=\"token punctuation\">:</span>\n            move_shark<span class=\"token punctuation\">(</span>copy_grid<span class=\"token punctuation\">,</span> i<span class=\"token punctuation\">,</span> shark<span class=\"token punctuation\">[</span>i<span class=\"token punctuation\">]</span><span class=\"token punctuation\">[</span><span class=\"token number\">0</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">,</span> shark<span class=\"token punctuation\">[</span>i<span class=\"token punctuation\">]</span><span class=\"token punctuation\">[</span><span class=\"token number\">1</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">)</span>\n    update_grid<span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span>\n    check_collision<span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span>\n<span class=\"token keyword\">print</span><span class=\"token punctuation\">(</span>count<span class=\"token punctuation\">)</span></code></pre></div>\n<ul>\n<li>상어가 1마리 남을 때까지 진행<br>\n<code class=\"language-text\">count</code>가 <strong>1000 이상</strong>이면서 <code class=\"language-text\">num</code>이 <strong>1보다 크면</strong> <code class=\"language-text\">count</code> <strong>-1</strong>로 설정하고 출력<br>\n상어 이동 독립적으로 하기 위해 <code class=\"language-text\">grid</code> <strong>deepcopy</strong><br>\n남은 상어 수만큼 <code class=\"language-text\">move_shark</code> 함수 실행하고<br>\n<code class=\"language-text\">update_grid</code> , <code class=\"language-text\">check_collision</code> 함수 실행<br>\n<code class=\"language-text\">num</code>이 <strong>1 이하</strong>면 <code class=\"language-text\">count</code> 출력</li>\n</ul>\n<hr>\n<h2 id=\"-code\" style=\"position:relative;\"><a href=\"#-code\" aria-label=\" code permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>🧩 Code</h2>\n<details><summary>전체 코드 확인</summary>\n<div class=\"gatsby-highlight\" data-language=\"python\"><pre class=\"language-python\"><code class=\"language-python\"><span class=\"token keyword\">import</span> sys<span class=\"token punctuation\">,</span> copy\n\nN<span class=\"token punctuation\">,</span> M<span class=\"token punctuation\">,</span> k <span class=\"token operator\">=</span> <span class=\"token builtin\">map</span><span class=\"token punctuation\">(</span><span class=\"token builtin\">int</span><span class=\"token punctuation\">,</span> sys<span class=\"token punctuation\">.</span>stdin<span class=\"token punctuation\">.</span>readline<span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">.</span>split<span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span>\ngrid <span class=\"token operator\">=</span> <span class=\"token punctuation\">[</span><span class=\"token punctuation\">[</span><span class=\"token builtin\">int</span><span class=\"token punctuation\">(</span>x<span class=\"token punctuation\">)</span> <span class=\"token keyword\">for</span> x <span class=\"token keyword\">in</span> sys<span class=\"token punctuation\">.</span>stdin<span class=\"token punctuation\">.</span>readline<span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">.</span>split<span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">]</span> <span class=\"token keyword\">for</span> _ <span class=\"token keyword\">in</span> <span class=\"token builtin\">range</span><span class=\"token punctuation\">(</span>N<span class=\"token punctuation\">)</span><span class=\"token punctuation\">]</span>\ncur_dir <span class=\"token operator\">=</span> <span class=\"token punctuation\">[</span><span class=\"token builtin\">int</span><span class=\"token punctuation\">(</span>x<span class=\"token punctuation\">)</span> <span class=\"token keyword\">for</span> x <span class=\"token keyword\">in</span> sys<span class=\"token punctuation\">.</span>stdin<span class=\"token punctuation\">.</span>readline<span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">.</span>split<span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">]</span>\npriority <span class=\"token operator\">=</span> <span class=\"token punctuation\">[</span><span class=\"token punctuation\">[</span><span class=\"token punctuation\">[</span><span class=\"token builtin\">int</span><span class=\"token punctuation\">(</span>x<span class=\"token punctuation\">)</span> <span class=\"token keyword\">for</span> x <span class=\"token keyword\">in</span> sys<span class=\"token punctuation\">.</span>stdin<span class=\"token punctuation\">.</span>readline<span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">.</span>split<span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">]</span> <span class=\"token keyword\">for</span> _ <span class=\"token keyword\">in</span> <span class=\"token builtin\">range</span><span class=\"token punctuation\">(</span><span class=\"token number\">4</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">]</span> <span class=\"token keyword\">for</span> _ <span class=\"token keyword\">in</span> <span class=\"token builtin\">range</span><span class=\"token punctuation\">(</span>M<span class=\"token punctuation\">)</span><span class=\"token punctuation\">]</span>\nshark <span class=\"token operator\">=</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>M<span class=\"token punctuation\">)</span><span class=\"token punctuation\">]</span>\nnum <span class=\"token operator\">=</span> M\ncount <span class=\"token operator\">=</span> <span class=\"token number\">0</span>\ndx <span class=\"token operator\">=</span> <span class=\"token punctuation\">[</span><span class=\"token number\">0</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0</span><span class=\"token punctuation\">,</span> <span class=\"token operator\">-</span><span class=\"token number\">1</span><span class=\"token punctuation\">,</span> <span class=\"token number\">1</span><span class=\"token punctuation\">]</span>\ndy <span class=\"token operator\">=</span> <span class=\"token punctuation\">[</span><span class=\"token operator\">-</span><span class=\"token number\">1</span><span class=\"token punctuation\">,</span> <span class=\"token number\">1</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0</span><span class=\"token punctuation\">]</span>\n\n<span class=\"token keyword\">def</span> <span class=\"token function\">update_grid</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">:</span>\n    <span class=\"token keyword\">for</span> i <span class=\"token keyword\">in</span> <span class=\"token builtin\">range</span><span class=\"token punctuation\">(</span>N<span class=\"token punctuation\">)</span><span class=\"token punctuation\">:</span>\n        <span class=\"token keyword\">for</span> j <span class=\"token keyword\">in</span> <span class=\"token builtin\">range</span><span class=\"token punctuation\">(</span>N<span class=\"token punctuation\">)</span><span class=\"token punctuation\">:</span>\n            <span class=\"token keyword\">if</span> grid<span class=\"token punctuation\">[</span>i<span class=\"token punctuation\">]</span><span class=\"token punctuation\">[</span>j<span class=\"token punctuation\">]</span> <span class=\"token operator\">!=</span> <span class=\"token number\">0</span><span class=\"token punctuation\">:</span>\n                <span class=\"token comment\"># 시간 -1</span>\n                grid<span class=\"token punctuation\">[</span>i<span class=\"token punctuation\">]</span><span class=\"token punctuation\">[</span>j<span class=\"token punctuation\">]</span><span class=\"token punctuation\">[</span><span class=\"token number\">1</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">-=</span> <span class=\"token number\">1</span>\n                <span class=\"token comment\"># 시간이 0이면 해당 좌표 0으로 초기화</span>\n                <span class=\"token keyword\">if</span> grid<span class=\"token punctuation\">[</span>i<span class=\"token punctuation\">]</span><span class=\"token punctuation\">[</span>j<span class=\"token punctuation\">]</span><span class=\"token punctuation\">[</span><span class=\"token number\">1</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">==</span> <span class=\"token number\">0</span><span class=\"token punctuation\">:</span>\n                    grid<span class=\"token punctuation\">[</span>i<span class=\"token punctuation\">]</span><span class=\"token punctuation\">[</span>j<span class=\"token punctuation\">]</span> <span class=\"token operator\">=</span> <span class=\"token number\">0</span>\n\n<span class=\"token keyword\">def</span> <span class=\"token function\">move_shark</span><span class=\"token punctuation\">(</span>copy_grid<span class=\"token punctuation\">,</span> n<span class=\"token punctuation\">,</span> x<span class=\"token punctuation\">,</span> y<span class=\"token punctuation\">)</span><span class=\"token punctuation\">:</span>\n    check <span class=\"token operator\">=</span> <span class=\"token boolean\">False</span>\n    p <span class=\"token operator\">=</span> priority<span class=\"token punctuation\">[</span>n<span class=\"token punctuation\">]</span><span class=\"token punctuation\">[</span>cur_dir<span class=\"token punctuation\">[</span>n<span class=\"token punctuation\">]</span><span class=\"token operator\">-</span><span class=\"token number\">1</span><span class=\"token punctuation\">]</span>\n    <span class=\"token comment\"># 우선순위에 맞게 다음 위치 계산</span>\n    <span class=\"token keyword\">for</span> p <span class=\"token keyword\">in</span> priority<span class=\"token punctuation\">[</span>n<span class=\"token punctuation\">]</span><span class=\"token punctuation\">[</span>cur_dir<span class=\"token punctuation\">[</span>n<span class=\"token punctuation\">]</span><span class=\"token operator\">-</span><span class=\"token number\">1</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">:</span>\n        next_x <span class=\"token operator\">=</span> x <span class=\"token operator\">+</span> dx<span class=\"token punctuation\">[</span>p<span class=\"token operator\">-</span><span class=\"token number\">1</span><span class=\"token punctuation\">]</span>\n        next_y <span class=\"token operator\">=</span> y <span class=\"token operator\">+</span> dy<span class=\"token punctuation\">[</span>p<span class=\"token operator\">-</span><span class=\"token number\">1</span><span class=\"token punctuation\">]</span>\n        <span class=\"token comment\"># 다음 위치가 boundary 안이고 0인지 확인</span>\n        <span class=\"token keyword\">if</span> <span class=\"token number\">0</span> <span class=\"token operator\">&lt;=</span> next_x <span class=\"token operator\">&lt;</span> N <span class=\"token keyword\">and</span> <span class=\"token number\">0</span> <span class=\"token operator\">&lt;=</span> next_y <span class=\"token operator\">&lt;</span> N<span class=\"token punctuation\">:</span>\n            <span class=\"token keyword\">if</span> copy_grid<span class=\"token punctuation\">[</span>next_y<span class=\"token punctuation\">]</span><span class=\"token punctuation\">[</span>next_x<span class=\"token punctuation\">]</span> <span class=\"token operator\">==</span> <span class=\"token number\">0</span><span class=\"token punctuation\">:</span>\n                <span class=\"token comment\"># 실제 grid가 0일 때만 진행</span>\n                <span class=\"token keyword\">if</span> grid<span class=\"token punctuation\">[</span>next_y<span class=\"token punctuation\">]</span><span class=\"token punctuation\">[</span>next_x<span class=\"token punctuation\">]</span> <span class=\"token operator\">==</span> <span class=\"token number\">0</span><span class=\"token punctuation\">:</span>\n                    grid<span class=\"token punctuation\">[</span>next_y<span class=\"token punctuation\">]</span><span class=\"token punctuation\">[</span>next_x<span class=\"token punctuation\">]</span> <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> k<span class=\"token operator\">+</span><span class=\"token number\">1</span><span class=\"token punctuation\">]</span>\n                shark<span class=\"token punctuation\">[</span>n<span class=\"token punctuation\">]</span> <span class=\"token operator\">=</span> <span class=\"token punctuation\">(</span>next_x<span class=\"token punctuation\">,</span> next_y<span class=\"token punctuation\">)</span>\n                cur_dir<span class=\"token punctuation\">[</span>n<span class=\"token punctuation\">]</span> <span class=\"token operator\">=</span> p\n                check <span class=\"token operator\">=</span> <span class=\"token boolean\">True</span>\n                <span class=\"token keyword\">break</span>\n    <span class=\"token comment\"># 주변에 0인 칸이 없는 경우</span>\n    <span class=\"token keyword\">if</span> <span class=\"token keyword\">not</span> check<span class=\"token punctuation\">:</span>\n        <span class=\"token keyword\">for</span> p <span class=\"token keyword\">in</span> priority<span class=\"token punctuation\">[</span>n<span class=\"token punctuation\">]</span><span class=\"token punctuation\">[</span>cur_dir<span class=\"token punctuation\">[</span>n<span class=\"token punctuation\">]</span><span class=\"token operator\">-</span><span class=\"token number\">1</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">:</span>\n            next_x <span class=\"token operator\">=</span> x <span class=\"token operator\">+</span> dx<span class=\"token punctuation\">[</span>p<span class=\"token operator\">-</span><span class=\"token number\">1</span><span class=\"token punctuation\">]</span>\n            next_y <span class=\"token operator\">=</span> y <span class=\"token operator\">+</span> dy<span class=\"token punctuation\">[</span>p<span class=\"token operator\">-</span><span class=\"token number\">1</span><span class=\"token punctuation\">]</span>\n            <span class=\"token keyword\">if</span> <span class=\"token number\">0</span> <span class=\"token operator\">&lt;=</span> next_x <span class=\"token operator\">&lt;</span> N <span class=\"token keyword\">and</span> <span class=\"token number\">0</span> <span class=\"token operator\">&lt;=</span> next_y <span class=\"token operator\">&lt;</span> N<span class=\"token punctuation\">:</span>\n                <span class=\"token comment\"># 자기 냄새가 있는 곳으로 돌아감</span>\n                <span class=\"token keyword\">if</span> copy_grid<span class=\"token punctuation\">[</span>next_y<span class=\"token punctuation\">]</span><span class=\"token punctuation\">[</span>next_x<span class=\"token punctuation\">]</span><span class=\"token punctuation\">[</span><span class=\"token number\">0</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">==</span> n<span class=\"token operator\">+</span><span class=\"token number\">1</span><span class=\"token punctuation\">:</span>\n                    <span class=\"token keyword\">if</span> grid<span class=\"token punctuation\">[</span>next_y<span class=\"token punctuation\">]</span><span class=\"token punctuation\">[</span>next_x<span class=\"token punctuation\">]</span><span class=\"token punctuation\">[</span><span class=\"token number\">0</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">==</span> n<span class=\"token operator\">+</span><span class=\"token number\">1</span><span class=\"token punctuation\">:</span>\n                        grid<span class=\"token punctuation\">[</span>next_y<span class=\"token punctuation\">]</span><span class=\"token punctuation\">[</span>next_x<span class=\"token punctuation\">]</span> <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> k<span class=\"token operator\">+</span><span class=\"token number\">1</span><span class=\"token punctuation\">]</span>\n                    shark<span class=\"token punctuation\">[</span>n<span class=\"token punctuation\">]</span> <span class=\"token operator\">=</span> <span class=\"token punctuation\">(</span>next_x<span class=\"token punctuation\">,</span> next_y<span class=\"token punctuation\">)</span>\n                    cur_dir<span class=\"token punctuation\">[</span>n<span class=\"token punctuation\">]</span> <span class=\"token operator\">=</span> p\n                    <span class=\"token keyword\">break</span>\n\n<span class=\"token keyword\">def</span> <span class=\"token function\">check_collision</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">:</span>\n    <span class=\"token keyword\">global</span> num\n    <span class=\"token keyword\">for</span> i <span class=\"token keyword\">in</span> <span class=\"token builtin\">range</span><span class=\"token punctuation\">(</span>M<span class=\"token punctuation\">)</span><span class=\"token punctuation\">:</span>\n        <span class=\"token keyword\">if</span> shark<span class=\"token punctuation\">[</span>i<span class=\"token punctuation\">]</span> <span class=\"token operator\">==</span> <span class=\"token operator\">-</span><span class=\"token number\">1</span><span class=\"token punctuation\">:</span>\n            <span class=\"token keyword\">continue</span>\n        <span class=\"token keyword\">for</span> j <span class=\"token keyword\">in</span> <span class=\"token builtin\">range</span><span class=\"token punctuation\">(</span>i<span class=\"token operator\">+</span><span class=\"token number\">1</span><span class=\"token punctuation\">,</span> M<span class=\"token punctuation\">)</span><span class=\"token punctuation\">:</span>\n            <span class=\"token comment\"># 중복되는 위치에 있으면, 숫자가 큰 상어의 위치를 -1로 초기화하고 num -1</span>\n            <span class=\"token keyword\">if</span> shark<span class=\"token punctuation\">[</span>i<span class=\"token punctuation\">]</span> <span class=\"token operator\">==</span> shark<span class=\"token punctuation\">[</span>j<span class=\"token punctuation\">]</span><span class=\"token punctuation\">:</span>\n                shark<span class=\"token punctuation\">[</span>j<span class=\"token punctuation\">]</span> <span class=\"token operator\">=</span> <span class=\"token operator\">-</span><span class=\"token number\">1</span>\n                num <span class=\"token operator\">-=</span> <span class=\"token number\">1</span>\n\n<span class=\"token keyword\">for</span> i <span class=\"token keyword\">in</span> <span class=\"token builtin\">range</span><span class=\"token punctuation\">(</span>N<span class=\"token punctuation\">)</span><span class=\"token punctuation\">:</span>\n    <span class=\"token keyword\">for</span> j <span class=\"token keyword\">in</span> <span class=\"token builtin\">range</span><span class=\"token punctuation\">(</span>N<span class=\"token punctuation\">)</span><span class=\"token punctuation\">:</span>\n        <span class=\"token keyword\">if</span> grid<span class=\"token punctuation\">[</span>i<span class=\"token punctuation\">]</span><span class=\"token punctuation\">[</span>j<span class=\"token punctuation\">]</span> <span class=\"token operator\">!=</span> <span class=\"token number\">0</span><span class=\"token punctuation\">:</span>\n            grid<span class=\"token punctuation\">[</span>i<span class=\"token punctuation\">]</span><span class=\"token punctuation\">[</span>j<span class=\"token punctuation\">]</span> <span class=\"token operator\">=</span> <span class=\"token punctuation\">[</span>grid<span class=\"token punctuation\">[</span>i<span class=\"token punctuation\">]</span><span class=\"token punctuation\">[</span>j<span class=\"token punctuation\">]</span><span class=\"token punctuation\">,</span> k<span class=\"token punctuation\">]</span>\n            shark<span class=\"token punctuation\">[</span>grid<span class=\"token punctuation\">[</span>i<span class=\"token punctuation\">]</span><span class=\"token punctuation\">[</span>j<span class=\"token punctuation\">]</span><span class=\"token punctuation\">[</span><span class=\"token number\">0</span><span class=\"token punctuation\">]</span><span class=\"token operator\">-</span><span class=\"token number\">1</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">=</span> <span class=\"token punctuation\">(</span>j<span class=\"token punctuation\">,</span> i<span class=\"token punctuation\">)</span>\n\n<span class=\"token keyword\">while</span><span class=\"token punctuation\">(</span>num <span class=\"token operator\">></span> <span class=\"token number\">1</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">:</span>\n    <span class=\"token keyword\">if</span><span class=\"token punctuation\">(</span>count <span class=\"token operator\">>=</span> <span class=\"token number\">1000</span> <span class=\"token keyword\">and</span> num <span class=\"token operator\">></span> <span class=\"token number\">1</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">:</span>\n        count <span class=\"token operator\">=</span> <span class=\"token operator\">-</span><span class=\"token number\">1</span>\n        <span class=\"token keyword\">break</span>\n    count <span class=\"token operator\">+=</span> <span class=\"token number\">1</span>\n    copy_grid <span class=\"token operator\">=</span> copy<span class=\"token punctuation\">.</span>deepcopy<span class=\"token punctuation\">(</span>grid<span class=\"token punctuation\">)</span>\n    <span class=\"token keyword\">for</span> i <span class=\"token keyword\">in</span> <span class=\"token builtin\">range</span><span class=\"token punctuation\">(</span>M<span class=\"token punctuation\">)</span><span class=\"token punctuation\">:</span>\n        <span class=\"token keyword\">if</span> shark<span class=\"token punctuation\">[</span>i<span class=\"token punctuation\">]</span> <span class=\"token operator\">!=</span> <span class=\"token operator\">-</span><span class=\"token number\">1</span><span class=\"token punctuation\">:</span>\n            move_shark<span class=\"token punctuation\">(</span>copy_grid<span class=\"token punctuation\">,</span> i<span class=\"token punctuation\">,</span> shark<span class=\"token punctuation\">[</span>i<span class=\"token punctuation\">]</span><span class=\"token punctuation\">[</span><span class=\"token number\">0</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">,</span> shark<span class=\"token punctuation\">[</span>i<span class=\"token punctuation\">]</span><span class=\"token punctuation\">[</span><span class=\"token number\">1</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">)</span>\n    update_grid<span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span>\n    check_collision<span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span>\n<span class=\"token keyword\">print</span><span class=\"token punctuation\">(</span>count<span class=\"token punctuation\">)</span></code></pre></div>\n</details>\n<hr>\n<h2 id=\"-review\" style=\"position:relative;\"><a href=\"#-review\" aria-label=\" review permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>📝 Review</h2>\n<p>문제에서 주어진대로만 구현하면 돼서 구현에 크게 문제는 없었지만 시간이 조오금 걸렸다<br>\n시간을 어떻게 줄이면서 풀지는 차근차근 문제 많이 풀어보면서 생각해봐야지,,</p>\n<div class=\"table-of-contents\">\n<ul>\n<li><a href=\"#%EB%AC%B8%EC%A0%9C\">문제</a></li>\n<li><a href=\"#%EC%9E%85%EB%A0%A5\">입력</a></li>\n<li><a href=\"#%EC%B6%9C%EB%A0%A5\">출력</a></li>\n<li><a href=\"#-algorithm\">🔍 Algorithm</a></li>\n<li><a href=\"#-logic\">💻 Logic</a></li>\n<li><a href=\"#-code\">🧩 Code</a></li>\n<li><a href=\"#-review\">📝 Review</a></li>\n</ul>\n</div>","frontmatter":{"date":"January 16, 2022","title":"[BOJ] 19237번: 어른 상어 (Python)","categories":"Algorithm","author":"JFe","emoji":"💻"},"fields":{"slug":"/boj-19237/"}},"prev":{"id":"4475dbda-1c0f-5799-8d9b-3398b37ce40a","html":"<h2 id=\"문제\" style=\"position:relative;\"><a href=\"#%EB%AC%B8%EC%A0%9C\" aria-label=\"문제 permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>문제</h2>\n<p><a href=\"https://www.acmicpc.net/problem/20057\">https://www.acmicpc.net/problem/20057</a></p>\n<p>마법사 상어가 토네이도를 배웠고, 오늘은 토네이도를 크기가 N×N인 격자로 나누어진 모래밭에서 연습하려고 한다. 위치 (r, c)는 격자의 r행 c열을 의미하고, A[r][c]는 (r, c)에 있는 모래의 양을 의미한다.</p>\n<p>토네이도를 시전하면 격자의 가운데 칸부터 토네이도의 이동이 시작된다. 토네이도는 한 번에 한 칸 이동한다. 다음은 N = 7인 경우 토네이도의 이동이다.<br>\n<span\n      class=\"gatsby-resp-image-wrapper\"\n      style=\"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 720px; \"\n    >\n      <span\n    class=\"gatsby-resp-image-background-image\"\n    style=\"padding-bottom: 25.555555555555554%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAFCAYAAABFA8wzAAAACXBIWXMAAA7DAAAOwwHHb6hkAAAAYElEQVQY06WOOwoAIRBDvf8R/ZXqoK2IIBOZAZtl2S0MPFIEHjF4CTNrr7VQa1Vaa8rZTj9jvoRjDFhrFeccvPd3wt47YoxIKWkL10J5JsjLEMKdcM6p70opICLknH+FG3ZWhwwrjvb5AAAAAElFTkSuQmCC'); background-size: cover; display: block;\"\n  ></span>\n  <img\n        class=\"gatsby-resp-image-image\"\n        alt=\"20057-tornado.png\"\n        title=\"20057-tornado.png\"\n        src=\"/static/20c186d3fa52637c4d56603d76534c90/37523/20057-tornado.png\"\n        srcset=\"/static/20c186d3fa52637c4d56603d76534c90/e9ff0/20057-tornado.png 180w,\n/static/20c186d3fa52637c4d56603d76534c90/f21e7/20057-tornado.png 360w,\n/static/20c186d3fa52637c4d56603d76534c90/37523/20057-tornado.png 720w,\n/static/20c186d3fa52637c4d56603d76534c90/302a4/20057-tornado.png 1080w,\n/static/20c186d3fa52637c4d56603d76534c90/75a80/20057-tornado.png 1134w\"\n        sizes=\"(max-width: 720px) 100vw, 720px\"\n        style=\"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;\"\n        loading=\"lazy\"\n        decoding=\"async\"\n      />\n    </span><br>\n토네이도가 한 칸 이동할 때마다 모래는 다음과 같이 일정한 비율로 흩날리게 된다.<br>\n<span\n      class=\"gatsby-resp-image-wrapper\"\n      style=\"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 720px; \"\n    >\n      <span\n    class=\"gatsby-resp-image-background-image\"\n    style=\"padding-bottom: 23.333333333333332%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAFCAYAAABFA8wzAAAACXBIWXMAAA7DAAAOwwHHb6hkAAAAZklEQVQY06WQUQrAIAxDvf8x1SKCiigqVDBDv7YxEGZ+WkL7CBH40BhjTWZGKQUxRqSUUGtF7/1x85bYAUMIMMbAOYec8/J+A1tr0FpDKQUp5Up6BJzP3nsQEay15wnvHU7Y3HcdXoFwicStkW3dAAAAAElFTkSuQmCC'); background-size: cover; display: block;\"\n  ></span>\n  <img\n        class=\"gatsby-resp-image-image\"\n        alt=\"20057-sand.png\"\n        title=\"20057-sand.png\"\n        src=\"/static/d2e1ed3115ef1c33a2d1ff44227602ff/37523/20057-sand.png\"\n        srcset=\"/static/d2e1ed3115ef1c33a2d1ff44227602ff/e9ff0/20057-sand.png 180w,\n/static/d2e1ed3115ef1c33a2d1ff44227602ff/f21e7/20057-sand.png 360w,\n/static/d2e1ed3115ef1c33a2d1ff44227602ff/37523/20057-sand.png 720w,\n/static/d2e1ed3115ef1c33a2d1ff44227602ff/302a4/20057-sand.png 1080w,\n/static/d2e1ed3115ef1c33a2d1ff44227602ff/33c9c/20057-sand.png 1133w\"\n        sizes=\"(max-width: 720px) 100vw, 720px\"\n        style=\"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;\"\n        loading=\"lazy\"\n        decoding=\"async\"\n      />\n    </span><br>\n토네이도가 x에서 y로 이동하면, y의 모든 모래가 비율과 α가 적혀있는 칸으로 이동한다. 비율이 적혀있는 칸으로 이동하는 모래의 양은 y에 있는 모래의 해당 비율만큼이고, 계산에서 소수점 아래는 버린다. α로 이동하는 모래의 양은 비율이 적혀있는 칸으로 이동하지 않은 남은 모래의 양과 같다. 모래가 이미 있는 칸으로 모래가 이동하면, 모래의 양은 더해진다. 위의 그림은 토네이도가 왼쪽으로 이동할 때이고, 다른 방향으로 이동하는 경우는 위의 그림을 해당 방향으로 회전하면 된다.</p>\n<p>토네이도는 (1, 1)까지 이동한 뒤 소멸한다. 모래가 격자의 밖으로 이동할 수도 있다. 토네이도가 소멸되었을 때, 격자의 밖으로 나간 모래의 양을 구해보자.</p>\n<hr>\n<h2 id=\"입력\" style=\"position:relative;\"><a href=\"#%EC%9E%85%EB%A0%A5\" aria-label=\"입력 permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>입력</h2>\n<p>첫째 줄에 격자의 크기 N이 주어진다. 둘째 줄부터 N개의 줄에는 격자의 각 칸에 있는 모래가 주어진다. r번째 줄에서 c번째 주어지는 정수는 A[r][c] 이다.</p>\n<hr>\n<h2 id=\"출력\" style=\"position:relative;\"><a href=\"#%EC%B6%9C%EB%A0%A5\" aria-label=\"출력 permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>출력</h2>\n<p>격자의 밖으로 나간 모래의 양을 출력한다.</p>\n<hr>\n<h2 id=\"-algorithm\" style=\"position:relative;\"><a href=\"#-algorithm\" aria-label=\" algorithm permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>🔍 Algorithm</h2>\n<p><strong>시뮬레이션</strong></p>\n<h2 id=\"-logic\" style=\"position:relative;\"><a href=\"#-logic\" aria-label=\" logic permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>💻 Logic</h2>\n<div class=\"gatsby-highlight\" data-language=\"python\"><pre class=\"language-python\"><code class=\"language-python\"><span class=\"token keyword\">def</span> <span class=\"token function\">move_tornado</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">:</span>\n    x<span class=\"token punctuation\">,</span> y <span class=\"token operator\">=</span> N<span class=\"token operator\">//</span><span class=\"token number\">2</span><span class=\"token punctuation\">,</span> N<span class=\"token operator\">//</span><span class=\"token number\">2</span>\n    count <span class=\"token operator\">=</span> <span class=\"token number\">0</span>\n    <span class=\"token keyword\">while</span> <span class=\"token boolean\">True</span><span class=\"token punctuation\">:</span>\n        <span class=\"token comment\"># 좌, 하, 우, 상 순서로 반복</span>\n        <span class=\"token keyword\">for</span> d <span class=\"token keyword\">in</span> <span class=\"token builtin\">range</span><span class=\"token punctuation\">(</span><span class=\"token number\">4</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">:</span>\n            <span class=\"token comment\"># 좌 or 우 경우에는 count +1</span>\n            <span class=\"token keyword\">if</span> d<span class=\"token operator\">%</span><span class=\"token number\">2</span> <span class=\"token operator\">==</span> <span class=\"token number\">0</span><span class=\"token punctuation\">:</span>\n                count <span class=\"token operator\">+=</span> <span class=\"token number\">1</span>\n            <span class=\"token comment\"># count 만큼 해당 방향으로 이동 반복</span>\n            <span class=\"token keyword\">for</span> _ <span class=\"token keyword\">in</span> <span class=\"token builtin\">range</span><span class=\"token punctuation\">(</span>count<span class=\"token punctuation\">)</span><span class=\"token punctuation\">:</span>\n                x<span class=\"token punctuation\">,</span> y <span class=\"token operator\">=</span> x<span class=\"token operator\">+</span>dx<span class=\"token punctuation\">[</span>d<span class=\"token punctuation\">]</span><span class=\"token punctuation\">,</span> y<span class=\"token operator\">+</span>dy<span class=\"token punctuation\">[</span>d<span class=\"token punctuation\">]</span>\n                move_sand<span class=\"token punctuation\">(</span>x<span class=\"token punctuation\">,</span> y<span class=\"token punctuation\">,</span> d<span class=\"token punctuation\">)</span>\n                <span class=\"token comment\"># 0, 0 에서 멈춤</span>\n                <span class=\"token keyword\">if</span> x <span class=\"token operator\">==</span> <span class=\"token number\">0</span> <span class=\"token keyword\">and</span> y <span class=\"token operator\">==</span> <span class=\"token number\">0</span><span class=\"token punctuation\">:</span> <span class=\"token keyword\">return</span></code></pre></div>\n<ul>\n<li>토네이도 이동 함수\n<ul>\n<li><strong>좌, 하, 우, 상 순서로 반복</strong><br>\n1, 1, 2, 2, 3, 3, … 규칙으로 이동하는 칸 수가 좌 or 우에서 늘어나기 때문에<br>\n<strong>좌 or 우</strong> 경우에는 <code class=\"language-text\">count</code> <strong>+1</strong></li>\n<li><strong>count 만큼 해당 방향으로 이동 반복</strong><br>\n다음 위치 계산해서 <code class=\"language-text\">move_sand</code> 함수 실행하고<br>\n<strong>0, 0</strong> 위치인 경우에는 <strong>return</strong></li>\n</ul>\n</li>\n</ul>\n<hr>\n<div class=\"gatsby-highlight\" data-language=\"python\"><pre class=\"language-python\"><code class=\"language-python\"><span class=\"token keyword\">def</span> <span class=\"token function\">move_sand</span><span class=\"token punctuation\">(</span>x<span class=\"token punctuation\">,</span> y<span class=\"token punctuation\">,</span> d<span class=\"token punctuation\">)</span><span class=\"token punctuation\">:</span>\n    <span class=\"token keyword\">global</span> result\n    sand <span class=\"token operator\">=</span> A<span class=\"token punctuation\">[</span>y<span class=\"token punctuation\">]</span><span class=\"token punctuation\">[</span>x<span class=\"token punctuation\">]</span>\n    <span class=\"token comment\"># 주어진 규칙대로 모래 흩날림</span>\n    A<span class=\"token punctuation\">[</span>y<span class=\"token punctuation\">]</span><span class=\"token punctuation\">[</span>x<span class=\"token punctuation\">]</span> <span class=\"token operator\">-=</span> cal_moved_sand<span class=\"token punctuation\">(</span>x<span class=\"token operator\">+</span>dx<span class=\"token punctuation\">[</span>d<span class=\"token punctuation\">]</span><span class=\"token operator\">*</span><span class=\"token number\">2</span><span class=\"token punctuation\">,</span> y<span class=\"token operator\">+</span>dy<span class=\"token punctuation\">[</span>d<span class=\"token punctuation\">]</span><span class=\"token operator\">*</span><span class=\"token number\">2</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0.05</span><span class=\"token punctuation\">,</span> sand<span class=\"token punctuation\">)</span>\n    A<span class=\"token punctuation\">[</span>y<span class=\"token punctuation\">]</span><span class=\"token punctuation\">[</span>x<span class=\"token punctuation\">]</span> <span class=\"token operator\">-=</span> cal_moved_sand<span class=\"token punctuation\">(</span>x<span class=\"token operator\">+</span>dx<span class=\"token punctuation\">[</span>d<span class=\"token punctuation\">]</span><span class=\"token operator\">+</span>dx<span class=\"token punctuation\">[</span><span class=\"token punctuation\">(</span>d<span class=\"token operator\">+</span><span class=\"token number\">3</span><span class=\"token punctuation\">)</span><span class=\"token operator\">%</span><span class=\"token number\">4</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">,</span> y<span class=\"token operator\">+</span>dy<span class=\"token punctuation\">[</span>d<span class=\"token punctuation\">]</span><span class=\"token operator\">+</span>dy<span class=\"token punctuation\">[</span><span class=\"token punctuation\">(</span>d<span class=\"token operator\">+</span><span class=\"token number\">3</span><span class=\"token punctuation\">)</span><span class=\"token operator\">%</span><span class=\"token number\">4</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0.1</span><span class=\"token punctuation\">,</span> sand<span class=\"token punctuation\">)</span>\n    A<span class=\"token punctuation\">[</span>y<span class=\"token punctuation\">]</span><span class=\"token punctuation\">[</span>x<span class=\"token punctuation\">]</span> <span class=\"token operator\">-=</span> cal_moved_sand<span class=\"token punctuation\">(</span>x<span class=\"token operator\">+</span>dx<span class=\"token punctuation\">[</span>d<span class=\"token punctuation\">]</span><span class=\"token operator\">+</span>dx<span class=\"token punctuation\">[</span><span class=\"token punctuation\">(</span>d<span class=\"token operator\">+</span><span class=\"token number\">1</span><span class=\"token punctuation\">)</span><span class=\"token operator\">%</span><span class=\"token number\">4</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">,</span> y<span class=\"token operator\">+</span>dy<span class=\"token punctuation\">[</span>d<span class=\"token punctuation\">]</span><span class=\"token operator\">+</span>dy<span class=\"token punctuation\">[</span><span class=\"token punctuation\">(</span>d<span class=\"token operator\">+</span><span class=\"token number\">1</span><span class=\"token punctuation\">)</span><span class=\"token operator\">%</span><span class=\"token number\">4</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0.1</span><span class=\"token punctuation\">,</span> sand<span class=\"token punctuation\">)</span>\n    A<span class=\"token punctuation\">[</span>y<span class=\"token punctuation\">]</span><span class=\"token punctuation\">[</span>x<span class=\"token punctuation\">]</span> <span class=\"token operator\">-=</span> cal_moved_sand<span class=\"token punctuation\">(</span>x<span class=\"token operator\">+</span>dx<span class=\"token punctuation\">[</span><span class=\"token punctuation\">(</span>d<span class=\"token operator\">+</span><span class=\"token number\">3</span><span class=\"token punctuation\">)</span><span class=\"token operator\">%</span><span class=\"token number\">4</span><span class=\"token punctuation\">]</span><span class=\"token operator\">*</span><span class=\"token number\">2</span><span class=\"token punctuation\">,</span> y<span class=\"token operator\">+</span>dy<span class=\"token punctuation\">[</span><span class=\"token punctuation\">(</span>d<span class=\"token operator\">+</span><span class=\"token number\">3</span><span class=\"token punctuation\">)</span><span class=\"token operator\">%</span><span class=\"token number\">4</span><span class=\"token punctuation\">]</span><span class=\"token operator\">*</span><span class=\"token number\">2</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0.02</span><span class=\"token punctuation\">,</span> sand<span class=\"token punctuation\">)</span>\n    A<span class=\"token punctuation\">[</span>y<span class=\"token punctuation\">]</span><span class=\"token punctuation\">[</span>x<span class=\"token punctuation\">]</span> <span class=\"token operator\">-=</span> cal_moved_sand<span class=\"token punctuation\">(</span>x<span class=\"token operator\">+</span>dx<span class=\"token punctuation\">[</span><span class=\"token punctuation\">(</span>d<span class=\"token operator\">+</span><span class=\"token number\">3</span><span class=\"token punctuation\">)</span><span class=\"token operator\">%</span><span class=\"token number\">4</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">,</span> y<span class=\"token operator\">+</span>dy<span class=\"token punctuation\">[</span><span class=\"token punctuation\">(</span>d<span class=\"token operator\">+</span><span class=\"token number\">3</span><span class=\"token punctuation\">)</span><span class=\"token operator\">%</span><span class=\"token number\">4</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0.07</span><span class=\"token punctuation\">,</span> sand<span class=\"token punctuation\">)</span>\n    A<span class=\"token punctuation\">[</span>y<span class=\"token punctuation\">]</span><span class=\"token punctuation\">[</span>x<span class=\"token punctuation\">]</span> <span class=\"token operator\">-=</span> cal_moved_sand<span class=\"token punctuation\">(</span>x<span class=\"token operator\">+</span>dx<span class=\"token punctuation\">[</span><span class=\"token punctuation\">(</span>d<span class=\"token operator\">+</span><span class=\"token number\">1</span><span class=\"token punctuation\">)</span><span class=\"token operator\">%</span><span class=\"token number\">4</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">,</span> y<span class=\"token operator\">+</span>dy<span class=\"token punctuation\">[</span><span class=\"token punctuation\">(</span>d<span class=\"token operator\">+</span><span class=\"token number\">1</span><span class=\"token punctuation\">)</span><span class=\"token operator\">%</span><span class=\"token number\">4</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0.07</span><span class=\"token punctuation\">,</span> sand<span class=\"token punctuation\">)</span>\n    A<span class=\"token punctuation\">[</span>y<span class=\"token punctuation\">]</span><span class=\"token punctuation\">[</span>x<span class=\"token punctuation\">]</span> <span class=\"token operator\">-=</span> cal_moved_sand<span class=\"token punctuation\">(</span>x<span class=\"token operator\">+</span>dx<span class=\"token punctuation\">[</span><span class=\"token punctuation\">(</span>d<span class=\"token operator\">+</span><span class=\"token number\">1</span><span class=\"token punctuation\">)</span><span class=\"token operator\">%</span><span class=\"token number\">4</span><span class=\"token punctuation\">]</span><span class=\"token operator\">*</span><span class=\"token number\">2</span><span class=\"token punctuation\">,</span> y<span class=\"token operator\">+</span>dy<span class=\"token punctuation\">[</span><span class=\"token punctuation\">(</span>d<span class=\"token operator\">+</span><span class=\"token number\">1</span><span class=\"token punctuation\">)</span><span class=\"token operator\">%</span><span class=\"token number\">4</span><span class=\"token punctuation\">]</span><span class=\"token operator\">*</span><span class=\"token number\">2</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0.02</span><span class=\"token punctuation\">,</span> sand<span class=\"token punctuation\">)</span>\n    A<span class=\"token punctuation\">[</span>y<span class=\"token punctuation\">]</span><span class=\"token punctuation\">[</span>x<span class=\"token punctuation\">]</span> <span class=\"token operator\">-=</span> cal_moved_sand<span class=\"token punctuation\">(</span>x<span class=\"token operator\">+</span>dx<span class=\"token punctuation\">[</span><span class=\"token punctuation\">(</span>d<span class=\"token operator\">+</span><span class=\"token number\">2</span><span class=\"token punctuation\">)</span><span class=\"token operator\">%</span><span class=\"token number\">4</span><span class=\"token punctuation\">]</span><span class=\"token operator\">+</span>dx<span class=\"token punctuation\">[</span><span class=\"token punctuation\">(</span>d<span class=\"token operator\">+</span><span class=\"token number\">3</span><span class=\"token punctuation\">)</span><span class=\"token operator\">%</span><span class=\"token number\">4</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">,</span> y<span class=\"token operator\">+</span>dy<span class=\"token punctuation\">[</span><span class=\"token punctuation\">(</span>d<span class=\"token operator\">+</span><span class=\"token number\">2</span><span class=\"token punctuation\">)</span><span class=\"token operator\">%</span><span class=\"token number\">4</span><span class=\"token punctuation\">]</span><span class=\"token operator\">+</span>dy<span class=\"token punctuation\">[</span><span class=\"token punctuation\">(</span>d<span class=\"token operator\">+</span><span class=\"token number\">3</span><span class=\"token punctuation\">)</span><span class=\"token operator\">%</span><span class=\"token number\">4</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0.01</span><span class=\"token punctuation\">,</span> sand<span class=\"token punctuation\">)</span>\n    A<span class=\"token punctuation\">[</span>y<span class=\"token punctuation\">]</span><span class=\"token punctuation\">[</span>x<span class=\"token punctuation\">]</span> <span class=\"token operator\">-=</span> cal_moved_sand<span class=\"token punctuation\">(</span>x<span class=\"token operator\">+</span>dx<span class=\"token punctuation\">[</span><span class=\"token punctuation\">(</span>d<span class=\"token operator\">+</span><span class=\"token number\">2</span><span class=\"token punctuation\">)</span><span class=\"token operator\">%</span><span class=\"token number\">4</span><span class=\"token punctuation\">]</span><span class=\"token operator\">+</span>dx<span class=\"token punctuation\">[</span><span class=\"token punctuation\">(</span>d<span class=\"token operator\">+</span><span class=\"token number\">1</span><span class=\"token punctuation\">)</span><span class=\"token operator\">%</span><span class=\"token number\">4</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">,</span> y<span class=\"token operator\">+</span>dy<span class=\"token punctuation\">[</span><span class=\"token punctuation\">(</span>d<span class=\"token operator\">+</span><span class=\"token number\">2</span><span class=\"token punctuation\">)</span><span class=\"token operator\">%</span><span class=\"token number\">4</span><span class=\"token punctuation\">]</span><span class=\"token operator\">+</span>dy<span class=\"token punctuation\">[</span><span class=\"token punctuation\">(</span>d<span class=\"token operator\">+</span><span class=\"token number\">1</span><span class=\"token punctuation\">)</span><span class=\"token operator\">%</span><span class=\"token number\">4</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0.01</span><span class=\"token punctuation\">,</span> sand<span class=\"token punctuation\">)</span>\n    <span class=\"token comment\"># 알파 계산</span>\n    <span class=\"token keyword\">if</span> <span class=\"token number\">0</span> <span class=\"token operator\">&lt;=</span> x<span class=\"token operator\">+</span>dx<span class=\"token punctuation\">[</span>d<span class=\"token punctuation\">]</span> <span class=\"token operator\">&lt;</span> N <span class=\"token keyword\">and</span> <span class=\"token number\">0</span> <span class=\"token operator\">&lt;=</span> y<span class=\"token operator\">+</span>dy<span class=\"token punctuation\">[</span>d<span class=\"token punctuation\">]</span> <span class=\"token operator\">&lt;</span> N<span class=\"token punctuation\">:</span>\n        A<span class=\"token punctuation\">[</span>y<span class=\"token operator\">+</span>dy<span class=\"token punctuation\">[</span>d<span class=\"token punctuation\">]</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">[</span>x<span class=\"token operator\">+</span>dx<span class=\"token punctuation\">[</span>d<span class=\"token punctuation\">]</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">+=</span> A<span class=\"token punctuation\">[</span>y<span class=\"token punctuation\">]</span><span class=\"token punctuation\">[</span>x<span class=\"token punctuation\">]</span>\n    <span class=\"token keyword\">else</span><span class=\"token punctuation\">:</span>\n        result <span class=\"token operator\">+=</span> A<span class=\"token punctuation\">[</span>y<span class=\"token punctuation\">]</span><span class=\"token punctuation\">[</span>x<span class=\"token punctuation\">]</span>\n    A<span class=\"token punctuation\">[</span>y<span class=\"token punctuation\">]</span><span class=\"token punctuation\">[</span>x<span class=\"token punctuation\">]</span> <span class=\"token operator\">=</span> <span class=\"token number\">0</span></code></pre></div>\n<ul>\n<li>모래 이동 함수<br>\n문제에 주어진 규칙대로 모래 흩날림<br>\n각 위치마다 <code class=\"language-text\">cal_moved_sand</code> 함수 실행</li>\n</ul>\n<hr>\n<div class=\"gatsby-highlight\" data-language=\"python\"><pre class=\"language-python\"><code class=\"language-python\"><span class=\"token keyword\">def</span> <span class=\"token function\">cal_moved_sand</span><span class=\"token punctuation\">(</span>next_x<span class=\"token punctuation\">,</span> next_y<span class=\"token punctuation\">,</span> percent<span class=\"token punctuation\">,</span> sand<span class=\"token punctuation\">)</span><span class=\"token punctuation\">:</span>\n    <span class=\"token keyword\">global</span> result\n    <span class=\"token comment\"># boundary 안인지 밖인지 확인</span>\n    <span class=\"token keyword\">if</span> <span class=\"token number\">0</span> <span class=\"token operator\">&lt;=</span> next_x <span class=\"token operator\">&lt;</span> N <span class=\"token keyword\">and</span> <span class=\"token number\">0</span> <span class=\"token operator\">&lt;=</span> next_y <span class=\"token operator\">&lt;</span> N<span class=\"token punctuation\">:</span>\n        A<span class=\"token punctuation\">[</span>next_y<span class=\"token punctuation\">]</span><span class=\"token punctuation\">[</span>next_x<span class=\"token punctuation\">]</span> <span class=\"token operator\">+=</span> <span class=\"token builtin\">int</span><span class=\"token punctuation\">(</span>percent <span class=\"token operator\">*</span> sand<span class=\"token punctuation\">)</span>\n    <span class=\"token keyword\">else</span><span class=\"token punctuation\">:</span>\n        result <span class=\"token operator\">+=</span> <span class=\"token builtin\">int</span><span class=\"token punctuation\">(</span>percent <span class=\"token operator\">*</span> sand<span class=\"token punctuation\">)</span>\n    <span class=\"token keyword\">return</span> <span class=\"token builtin\">int</span><span class=\"token punctuation\">(</span>percent <span class=\"token operator\">*</span> sand<span class=\"token punctuation\">)</span></code></pre></div>\n<ul>\n<li>이동한 모래 계산 함수</li>\n</ul>\n<hr>\n<h2 id=\"-code\" style=\"position:relative;\"><a href=\"#-code\" aria-label=\" code permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>🧩 Code</h2>\n<details><summary>전체 코드 확인</summary>\n<div class=\"gatsby-highlight\" data-language=\"python\"><pre class=\"language-python\"><code class=\"language-python\"><span class=\"token keyword\">import</span> sys\nN <span class=\"token operator\">=</span> <span class=\"token builtin\">int</span><span class=\"token punctuation\">(</span>sys<span class=\"token punctuation\">.</span>stdin<span class=\"token punctuation\">.</span>readline<span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span>\nA <span class=\"token operator\">=</span> <span class=\"token punctuation\">[</span><span class=\"token punctuation\">[</span><span class=\"token builtin\">int</span><span class=\"token punctuation\">(</span>x<span class=\"token punctuation\">)</span> <span class=\"token keyword\">for</span> x <span class=\"token keyword\">in</span> sys<span class=\"token punctuation\">.</span>stdin<span class=\"token punctuation\">.</span>readline<span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">.</span>split<span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">]</span><span class=\"token keyword\">for</span> _ <span class=\"token keyword\">in</span> <span class=\"token builtin\">range</span><span class=\"token punctuation\">(</span>N<span class=\"token punctuation\">)</span><span class=\"token punctuation\">]</span>\n<span class=\"token comment\"># 좌, 하, 우, 상</span>\ndx <span class=\"token operator\">=</span> <span class=\"token punctuation\">[</span><span class=\"token operator\">-</span><span class=\"token number\">1</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0</span><span class=\"token punctuation\">,</span> <span class=\"token number\">1</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0</span><span class=\"token punctuation\">]</span>\ndy <span class=\"token operator\">=</span> <span class=\"token punctuation\">[</span><span class=\"token number\">0</span><span class=\"token punctuation\">,</span> <span class=\"token number\">1</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0</span><span class=\"token punctuation\">,</span> <span class=\"token operator\">-</span><span class=\"token number\">1</span><span class=\"token punctuation\">]</span>\nresult <span class=\"token operator\">=</span> <span class=\"token number\">0</span>\n\n<span class=\"token keyword\">def</span> <span class=\"token function\">cal_moved_sand</span><span class=\"token punctuation\">(</span>next_x<span class=\"token punctuation\">,</span> next_y<span class=\"token punctuation\">,</span> percent<span class=\"token punctuation\">,</span> sand<span class=\"token punctuation\">)</span><span class=\"token punctuation\">:</span>\n    <span class=\"token keyword\">global</span> result\n    <span class=\"token comment\"># boundary 안인지 밖인지 확인</span>\n    <span class=\"token keyword\">if</span> <span class=\"token number\">0</span> <span class=\"token operator\">&lt;=</span> next_x <span class=\"token operator\">&lt;</span> N <span class=\"token keyword\">and</span> <span class=\"token number\">0</span> <span class=\"token operator\">&lt;=</span> next_y <span class=\"token operator\">&lt;</span> N<span class=\"token punctuation\">:</span>\n        A<span class=\"token punctuation\">[</span>next_y<span class=\"token punctuation\">]</span><span class=\"token punctuation\">[</span>next_x<span class=\"token punctuation\">]</span> <span class=\"token operator\">+=</span> <span class=\"token builtin\">int</span><span class=\"token punctuation\">(</span>percent <span class=\"token operator\">*</span> sand<span class=\"token punctuation\">)</span>\n    <span class=\"token keyword\">else</span><span class=\"token punctuation\">:</span>\n        result <span class=\"token operator\">+=</span> <span class=\"token builtin\">int</span><span class=\"token punctuation\">(</span>percent <span class=\"token operator\">*</span> sand<span class=\"token punctuation\">)</span>\n    <span class=\"token keyword\">return</span> <span class=\"token builtin\">int</span><span class=\"token punctuation\">(</span>percent <span class=\"token operator\">*</span> sand<span class=\"token punctuation\">)</span>\n\n<span class=\"token keyword\">def</span> <span class=\"token function\">move_sand</span><span class=\"token punctuation\">(</span>x<span class=\"token punctuation\">,</span> y<span class=\"token punctuation\">,</span> d<span class=\"token punctuation\">)</span><span class=\"token punctuation\">:</span>\n    <span class=\"token keyword\">global</span> result\n    sand <span class=\"token operator\">=</span> A<span class=\"token punctuation\">[</span>y<span class=\"token punctuation\">]</span><span class=\"token punctuation\">[</span>x<span class=\"token punctuation\">]</span>\n    <span class=\"token comment\"># 주어진 규칙대로 모래 흩날림</span>\n    A<span class=\"token punctuation\">[</span>y<span class=\"token punctuation\">]</span><span class=\"token punctuation\">[</span>x<span class=\"token punctuation\">]</span> <span class=\"token operator\">-=</span> cal_moved_sand<span class=\"token punctuation\">(</span>x<span class=\"token operator\">+</span>dx<span class=\"token punctuation\">[</span>d<span class=\"token punctuation\">]</span><span class=\"token operator\">*</span><span class=\"token number\">2</span><span class=\"token punctuation\">,</span> y<span class=\"token operator\">+</span>dy<span class=\"token punctuation\">[</span>d<span class=\"token punctuation\">]</span><span class=\"token operator\">*</span><span class=\"token number\">2</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0.05</span><span class=\"token punctuation\">,</span> sand<span class=\"token punctuation\">)</span>\n    A<span class=\"token punctuation\">[</span>y<span class=\"token punctuation\">]</span><span class=\"token punctuation\">[</span>x<span class=\"token punctuation\">]</span> <span class=\"token operator\">-=</span> cal_moved_sand<span class=\"token punctuation\">(</span>x<span class=\"token operator\">+</span>dx<span class=\"token punctuation\">[</span>d<span class=\"token punctuation\">]</span><span class=\"token operator\">+</span>dx<span class=\"token punctuation\">[</span><span class=\"token punctuation\">(</span>d<span class=\"token operator\">+</span><span class=\"token number\">3</span><span class=\"token punctuation\">)</span><span class=\"token operator\">%</span><span class=\"token number\">4</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">,</span> y<span class=\"token operator\">+</span>dy<span class=\"token punctuation\">[</span>d<span class=\"token punctuation\">]</span><span class=\"token operator\">+</span>dy<span class=\"token punctuation\">[</span><span class=\"token punctuation\">(</span>d<span class=\"token operator\">+</span><span class=\"token number\">3</span><span class=\"token punctuation\">)</span><span class=\"token operator\">%</span><span class=\"token number\">4</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0.1</span><span class=\"token punctuation\">,</span> sand<span class=\"token punctuation\">)</span>\n    A<span class=\"token punctuation\">[</span>y<span class=\"token punctuation\">]</span><span class=\"token punctuation\">[</span>x<span class=\"token punctuation\">]</span> <span class=\"token operator\">-=</span> cal_moved_sand<span class=\"token punctuation\">(</span>x<span class=\"token operator\">+</span>dx<span class=\"token punctuation\">[</span>d<span class=\"token punctuation\">]</span><span class=\"token operator\">+</span>dx<span class=\"token punctuation\">[</span><span class=\"token punctuation\">(</span>d<span class=\"token operator\">+</span><span class=\"token number\">1</span><span class=\"token punctuation\">)</span><span class=\"token operator\">%</span><span class=\"token number\">4</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">,</span> y<span class=\"token operator\">+</span>dy<span class=\"token punctuation\">[</span>d<span class=\"token punctuation\">]</span><span class=\"token operator\">+</span>dy<span class=\"token punctuation\">[</span><span class=\"token punctuation\">(</span>d<span class=\"token operator\">+</span><span class=\"token number\">1</span><span class=\"token punctuation\">)</span><span class=\"token operator\">%</span><span class=\"token number\">4</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0.1</span><span class=\"token punctuation\">,</span> sand<span class=\"token punctuation\">)</span>\n    A<span class=\"token punctuation\">[</span>y<span class=\"token punctuation\">]</span><span class=\"token punctuation\">[</span>x<span class=\"token punctuation\">]</span> <span class=\"token operator\">-=</span> cal_moved_sand<span class=\"token punctuation\">(</span>x<span class=\"token operator\">+</span>dx<span class=\"token punctuation\">[</span><span class=\"token punctuation\">(</span>d<span class=\"token operator\">+</span><span class=\"token number\">3</span><span class=\"token punctuation\">)</span><span class=\"token operator\">%</span><span class=\"token number\">4</span><span class=\"token punctuation\">]</span><span class=\"token operator\">*</span><span class=\"token number\">2</span><span class=\"token punctuation\">,</span> y<span class=\"token operator\">+</span>dy<span class=\"token punctuation\">[</span><span class=\"token punctuation\">(</span>d<span class=\"token operator\">+</span><span class=\"token number\">3</span><span class=\"token punctuation\">)</span><span class=\"token operator\">%</span><span class=\"token number\">4</span><span class=\"token punctuation\">]</span><span class=\"token operator\">*</span><span class=\"token number\">2</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0.02</span><span class=\"token punctuation\">,</span> sand<span class=\"token punctuation\">)</span>\n    A<span class=\"token punctuation\">[</span>y<span class=\"token punctuation\">]</span><span class=\"token punctuation\">[</span>x<span class=\"token punctuation\">]</span> <span class=\"token operator\">-=</span> cal_moved_sand<span class=\"token punctuation\">(</span>x<span class=\"token operator\">+</span>dx<span class=\"token punctuation\">[</span><span class=\"token punctuation\">(</span>d<span class=\"token operator\">+</span><span class=\"token number\">3</span><span class=\"token punctuation\">)</span><span class=\"token operator\">%</span><span class=\"token number\">4</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">,</span> y<span class=\"token operator\">+</span>dy<span class=\"token punctuation\">[</span><span class=\"token punctuation\">(</span>d<span class=\"token operator\">+</span><span class=\"token number\">3</span><span class=\"token punctuation\">)</span><span class=\"token operator\">%</span><span class=\"token number\">4</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0.07</span><span class=\"token punctuation\">,</span> sand<span class=\"token punctuation\">)</span>\n    A<span class=\"token punctuation\">[</span>y<span class=\"token punctuation\">]</span><span class=\"token punctuation\">[</span>x<span class=\"token punctuation\">]</span> <span class=\"token operator\">-=</span> cal_moved_sand<span class=\"token punctuation\">(</span>x<span class=\"token operator\">+</span>dx<span class=\"token punctuation\">[</span><span class=\"token punctuation\">(</span>d<span class=\"token operator\">+</span><span class=\"token number\">1</span><span class=\"token punctuation\">)</span><span class=\"token operator\">%</span><span class=\"token number\">4</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">,</span> y<span class=\"token operator\">+</span>dy<span class=\"token punctuation\">[</span><span class=\"token punctuation\">(</span>d<span class=\"token operator\">+</span><span class=\"token number\">1</span><span class=\"token punctuation\">)</span><span class=\"token operator\">%</span><span class=\"token number\">4</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0.07</span><span class=\"token punctuation\">,</span> sand<span class=\"token punctuation\">)</span>\n    A<span class=\"token punctuation\">[</span>y<span class=\"token punctuation\">]</span><span class=\"token punctuation\">[</span>x<span class=\"token punctuation\">]</span> <span class=\"token operator\">-=</span> cal_moved_sand<span class=\"token punctuation\">(</span>x<span class=\"token operator\">+</span>dx<span class=\"token punctuation\">[</span><span class=\"token punctuation\">(</span>d<span class=\"token operator\">+</span><span class=\"token number\">1</span><span class=\"token punctuation\">)</span><span class=\"token operator\">%</span><span class=\"token number\">4</span><span class=\"token punctuation\">]</span><span class=\"token operator\">*</span><span class=\"token number\">2</span><span class=\"token punctuation\">,</span> y<span class=\"token operator\">+</span>dy<span class=\"token punctuation\">[</span><span class=\"token punctuation\">(</span>d<span class=\"token operator\">+</span><span class=\"token number\">1</span><span class=\"token punctuation\">)</span><span class=\"token operator\">%</span><span class=\"token number\">4</span><span class=\"token punctuation\">]</span><span class=\"token operator\">*</span><span class=\"token number\">2</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0.02</span><span class=\"token punctuation\">,</span> sand<span class=\"token punctuation\">)</span>\n    A<span class=\"token punctuation\">[</span>y<span class=\"token punctuation\">]</span><span class=\"token punctuation\">[</span>x<span class=\"token punctuation\">]</span> <span class=\"token operator\">-=</span> cal_moved_sand<span class=\"token punctuation\">(</span>x<span class=\"token operator\">+</span>dx<span class=\"token punctuation\">[</span><span class=\"token punctuation\">(</span>d<span class=\"token operator\">+</span><span class=\"token number\">2</span><span class=\"token punctuation\">)</span><span class=\"token operator\">%</span><span class=\"token number\">4</span><span class=\"token punctuation\">]</span><span class=\"token operator\">+</span>dx<span class=\"token punctuation\">[</span><span class=\"token punctuation\">(</span>d<span class=\"token operator\">+</span><span class=\"token number\">3</span><span class=\"token punctuation\">)</span><span class=\"token operator\">%</span><span class=\"token number\">4</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">,</span> y<span class=\"token operator\">+</span>dy<span class=\"token punctuation\">[</span><span class=\"token punctuation\">(</span>d<span class=\"token operator\">+</span><span class=\"token number\">2</span><span class=\"token punctuation\">)</span><span class=\"token operator\">%</span><span class=\"token number\">4</span><span class=\"token punctuation\">]</span><span class=\"token operator\">+</span>dy<span class=\"token punctuation\">[</span><span class=\"token punctuation\">(</span>d<span class=\"token operator\">+</span><span class=\"token number\">3</span><span class=\"token punctuation\">)</span><span class=\"token operator\">%</span><span class=\"token number\">4</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0.01</span><span class=\"token punctuation\">,</span> sand<span class=\"token punctuation\">)</span>\n    A<span class=\"token punctuation\">[</span>y<span class=\"token punctuation\">]</span><span class=\"token punctuation\">[</span>x<span class=\"token punctuation\">]</span> <span class=\"token operator\">-=</span> cal_moved_sand<span class=\"token punctuation\">(</span>x<span class=\"token operator\">+</span>dx<span class=\"token punctuation\">[</span><span class=\"token punctuation\">(</span>d<span class=\"token operator\">+</span><span class=\"token number\">2</span><span class=\"token punctuation\">)</span><span class=\"token operator\">%</span><span class=\"token number\">4</span><span class=\"token punctuation\">]</span><span class=\"token operator\">+</span>dx<span class=\"token punctuation\">[</span><span class=\"token punctuation\">(</span>d<span class=\"token operator\">+</span><span class=\"token number\">1</span><span class=\"token punctuation\">)</span><span class=\"token operator\">%</span><span class=\"token number\">4</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">,</span> y<span class=\"token operator\">+</span>dy<span class=\"token punctuation\">[</span><span class=\"token punctuation\">(</span>d<span class=\"token operator\">+</span><span class=\"token number\">2</span><span class=\"token punctuation\">)</span><span class=\"token operator\">%</span><span class=\"token number\">4</span><span class=\"token punctuation\">]</span><span class=\"token operator\">+</span>dy<span class=\"token punctuation\">[</span><span class=\"token punctuation\">(</span>d<span class=\"token operator\">+</span><span class=\"token number\">1</span><span class=\"token punctuation\">)</span><span class=\"token operator\">%</span><span class=\"token number\">4</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0.01</span><span class=\"token punctuation\">,</span> sand<span class=\"token punctuation\">)</span>\n    <span class=\"token comment\"># 알파 계산</span>\n    <span class=\"token keyword\">if</span> <span class=\"token number\">0</span> <span class=\"token operator\">&lt;=</span> x<span class=\"token operator\">+</span>dx<span class=\"token punctuation\">[</span>d<span class=\"token punctuation\">]</span> <span class=\"token operator\">&lt;</span> N <span class=\"token keyword\">and</span> <span class=\"token number\">0</span> <span class=\"token operator\">&lt;=</span> y<span class=\"token operator\">+</span>dy<span class=\"token punctuation\">[</span>d<span class=\"token punctuation\">]</span> <span class=\"token operator\">&lt;</span> N<span class=\"token punctuation\">:</span>\n        A<span class=\"token punctuation\">[</span>y<span class=\"token operator\">+</span>dy<span class=\"token punctuation\">[</span>d<span class=\"token punctuation\">]</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">[</span>x<span class=\"token operator\">+</span>dx<span class=\"token punctuation\">[</span>d<span class=\"token punctuation\">]</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">+=</span> A<span class=\"token punctuation\">[</span>y<span class=\"token punctuation\">]</span><span class=\"token punctuation\">[</span>x<span class=\"token punctuation\">]</span>\n    <span class=\"token keyword\">else</span><span class=\"token punctuation\">:</span>\n        result <span class=\"token operator\">+=</span> A<span class=\"token punctuation\">[</span>y<span class=\"token punctuation\">]</span><span class=\"token punctuation\">[</span>x<span class=\"token punctuation\">]</span>\n    A<span class=\"token punctuation\">[</span>y<span class=\"token punctuation\">]</span><span class=\"token punctuation\">[</span>x<span class=\"token punctuation\">]</span> <span class=\"token operator\">=</span> <span class=\"token number\">0</span>\n\n<span class=\"token keyword\">def</span> <span class=\"token function\">move_tornado</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">:</span>\n    x<span class=\"token punctuation\">,</span> y <span class=\"token operator\">=</span> N<span class=\"token operator\">//</span><span class=\"token number\">2</span><span class=\"token punctuation\">,</span> N<span class=\"token operator\">//</span><span class=\"token number\">2</span>\n    count <span class=\"token operator\">=</span> <span class=\"token number\">0</span>\n    <span class=\"token keyword\">while</span> <span class=\"token boolean\">True</span><span class=\"token punctuation\">:</span>\n        <span class=\"token comment\"># 좌, 하, 우, 상 순서로 반복</span>\n        <span class=\"token keyword\">for</span> d <span class=\"token keyword\">in</span> <span class=\"token builtin\">range</span><span class=\"token punctuation\">(</span><span class=\"token number\">4</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">:</span>\n            <span class=\"token comment\"># 좌 or 우 경우에는 count +1</span>\n            <span class=\"token keyword\">if</span> d<span class=\"token operator\">%</span><span class=\"token number\">2</span> <span class=\"token operator\">==</span> <span class=\"token number\">0</span><span class=\"token punctuation\">:</span>\n                count <span class=\"token operator\">+=</span> <span class=\"token number\">1</span>\n            <span class=\"token comment\"># count 만큼 해당 방향으로 이동 반복</span>\n            <span class=\"token keyword\">for</span> _ <span class=\"token keyword\">in</span> <span class=\"token builtin\">range</span><span class=\"token punctuation\">(</span>count<span class=\"token punctuation\">)</span><span class=\"token punctuation\">:</span>\n                x<span class=\"token punctuation\">,</span> y <span class=\"token operator\">=</span> x<span class=\"token operator\">+</span>dx<span class=\"token punctuation\">[</span>d<span class=\"token punctuation\">]</span><span class=\"token punctuation\">,</span> y<span class=\"token operator\">+</span>dy<span class=\"token punctuation\">[</span>d<span class=\"token punctuation\">]</span>\n                move_sand<span class=\"token punctuation\">(</span>x<span class=\"token punctuation\">,</span> y<span class=\"token punctuation\">,</span> d<span class=\"token punctuation\">)</span>\n                <span class=\"token comment\"># 0, 0 에서 멈춤</span>\n                <span class=\"token keyword\">if</span> x <span class=\"token operator\">==</span> <span class=\"token number\">0</span> <span class=\"token keyword\">and</span> y <span class=\"token operator\">==</span> <span class=\"token number\">0</span><span class=\"token punctuation\">:</span> <span class=\"token keyword\">return</span>\n\nmove_tornado<span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span>\n<span class=\"token keyword\">print</span><span class=\"token punctuation\">(</span>result<span class=\"token punctuation\">)</span></code></pre></div>\n</details>\n<hr>\n<h2 id=\"-review\" style=\"position:relative;\"><a href=\"#-review\" aria-label=\" review permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>📝 Review</h2>\n<p>문제 보고 어렵지 않게 규칙을 찾을 수 있어서 쉽게 구현할 수 있었다.<br>\n주어진 규칙대로 구현은 쉬웠지만 원래 이런 문제인건지 코드는 안예쁨,,</p>\n<div class=\"table-of-contents\">\n<ul>\n<li><a href=\"#%EB%AC%B8%EC%A0%9C\">문제</a></li>\n<li><a href=\"#%EC%9E%85%EB%A0%A5\">입력</a></li>\n<li><a href=\"#%EC%B6%9C%EB%A0%A5\">출력</a></li>\n<li><a href=\"#-algorithm\">🔍 Algorithm</a></li>\n<li><a href=\"#-logic\">💻 Logic</a></li>\n<li><a href=\"#-code\">🧩 Code</a></li>\n<li><a href=\"#-review\">📝 Review</a></li>\n</ul>\n</div>","frontmatter":{"date":"January 23, 2022","title":"[BOJ] 20057번: 마법사 상어와 토네이도 (Python)","categories":"Algorithm","author":"JFe","emoji":"💻"},"fields":{"slug":"/boj-20057/"}},"site":{"siteMetadata":{"siteUrl":"https://jfelog.netlify.app","comments":{"utterances":{"repo":"Go-Jaecheol/Jfe_Blog"}}}}},"pageContext":{"slug":"/boj-20056/","nextSlug":"/boj-19237/","prevSlug":"/boj-20057/"}},
    "staticQueryHashes": ["1073350324","1956554647","2938748437"]}