{"componentChunkName":"component---src-templates-blog-post-js","path":"/Algorithm/BOJ-7562-Python/","result":{"data":{"site":{"siteMetadata":{"title":"hyesungoh","author":"hyesungoh","siteUrl":"https://www.hyesungoh.xyz","comment":{"disqusShortName":"","utterances":"hyesungoh/blog"},"sponsor":{"buyMeACoffeeId":""}}},"markdownRemark":{"id":"0f5c2b40-b8c7-5aea-932b-c6d6e945d0cd","excerpt":"체스 보드의 크기를 입력받은 후 나이트 말의 시작 좌표와 도착 좌표를 입력받는다. 최소 몇 번 말을 움직여야 도착 좌표까지 이동할 수 있는 지 출력하는 문제. 첫 풀이는 queue에 카운트를 넣으며, 2차원 배열은 방문 확인을 위해 사용하여 풀으며 두번째 풀이는 2차원 배열에 움직인 횟수를 저장하여 풀었다. 여러 방법으로 계속해서 풀었으나 틀렸습니다 결과를 받게되었는데 말이 갈 수 있는 방향을 저장해 놓은 배열이 잘못돼 있었다.","html":"<p>체스 보드의 크기를 입력받은 후 나이트 말의 시작 좌표와 도착 좌표를 입력받는다. 최소 몇 번 말을 움직여야 도착 좌표까지 이동할 수 있는 지 출력하는 문제. 첫 풀이는 queue에 카운트를 넣으며, 2차원 배열은 방문 확인을 위해 사용하여 풀으며 두번째 풀이는 2차원 배열에 움직인 횟수를 저장하여 풀었다. 여러 방법으로 계속해서 풀었으나 틀렸습니다 결과를 받게되었는데 말이 갈 수 있는 방향을 저장해 놓은 배열이 잘못돼 있었다.</p>\n<div class=\"gatsby-highlight\" data-language=\"python\"><pre class=\"language-python\"><code class=\"language-python\"><span class=\"token keyword\">from</span> collections <span class=\"token keyword\">import</span> deque\n<span class=\"token keyword\">import</span> sys\n<span class=\"token builtin\">input</span> <span class=\"token operator\">=</span> sys<span class=\"token punctuation\">.</span>stdin<span class=\"token punctuation\">.</span>readline\n\ndire <span class=\"token operator\">=</span> <span class=\"token punctuation\">[</span><span class=\"token punctuation\">[</span><span class=\"token number\">2</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 punctuation\">,</span> <span class=\"token comment\"># 상 좌</span>\n        <span class=\"token punctuation\">[</span><span class=\"token number\">2</span><span class=\"token punctuation\">,</span> <span class=\"token number\">1</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">,</span> <span class=\"token comment\"># 상 우</span>\n        <span class=\"token punctuation\">[</span><span class=\"token number\">1</span><span class=\"token punctuation\">,</span> <span class=\"token number\">2</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">,</span> <span class=\"token comment\"># 우 상</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 number\">2</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">,</span> <span class=\"token comment\"># 우 하</span>\n        <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\">1</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">,</span> <span class=\"token comment\"># 하 우</span>\n        <span class=\"token punctuation\">[</span><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\">1</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">,</span> <span class=\"token comment\"># 하 좌</span>\n        <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\">2</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">,</span> <span class=\"token comment\"># 좌 상</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 operator\">-</span><span class=\"token number\">2</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">]</span> <span class=\"token comment\"># 좌 하</span>\n\n\n<span class=\"token comment\"># def bfs(start, goal_y, goal_x):</span>\n<span class=\"token comment\">#     q = deque()</span>\n<span class=\"token comment\">#     q.append(start + [0])</span>\n<span class=\"token comment\">#     while q:</span>\n<span class=\"token comment\">#         now_y, now_x, cnt = q.popleft()</span>\n<span class=\"token comment\">#</span>\n<span class=\"token comment\">#         if now_y == goal_y and now_x == goal_x:</span>\n<span class=\"token comment\">#             return cnt</span>\n<span class=\"token comment\">#</span>\n<span class=\"token comment\">#         for dire_y, dire_x in dire:</span>\n<span class=\"token comment\">#             next_y = now_y + dire_y</span>\n<span class=\"token comment\">#             next_x = now_x + dire_x</span>\n<span class=\"token comment\">#             if 0 &lt;= next_y &lt; size and 0 &lt;= next_x &lt; size:</span>\n<span class=\"token comment\">#                 if not board[next_y][next_x]:</span>\n<span class=\"token comment\">#                     q.append([next_y, next_x, cnt+1])</span>\n<span class=\"token comment\">#                     board[next_y][next_x] = True</span>\n<span class=\"token comment\"># t = int(input())</span>\n<span class=\"token comment\"># for _ in range(t):</span>\n<span class=\"token comment\">#     size = int(input())</span>\n<span class=\"token comment\">#     board = [[False for _ in range(size)] for _ in range(size)]</span>\n<span class=\"token comment\">#     start_y, start_x = map(int, input().split())</span>\n<span class=\"token comment\">#     goal_y, goal_x = map(int, input().split())</span>\n<span class=\"token comment\">#</span>\n<span class=\"token comment\">#     ans = bfs([start_y, start_x], goal_y, goal_x)</span>\n<span class=\"token comment\">#     print(ans)</span>\n\n\n<span class=\"token keyword\">def</span> <span class=\"token function\">bfs</span><span class=\"token punctuation\">(</span>start_y<span class=\"token punctuation\">,</span> start_x<span class=\"token punctuation\">,</span> goal_y<span class=\"token punctuation\">,</span> goal_x<span class=\"token punctuation\">)</span><span class=\"token punctuation\">:</span>\n    q <span class=\"token operator\">=</span> deque<span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span>\n    q<span class=\"token punctuation\">.</span>append<span class=\"token punctuation\">(</span><span class=\"token punctuation\">[</span>start_y<span class=\"token punctuation\">,</span> start_x<span class=\"token punctuation\">]</span><span class=\"token punctuation\">)</span>\n    board<span class=\"token punctuation\">[</span>start_y<span class=\"token punctuation\">]</span><span class=\"token punctuation\">[</span>start_x<span class=\"token punctuation\">]</span> <span class=\"token operator\">=</span> <span class=\"token number\">1</span>\n\n    <span class=\"token keyword\">while</span> q<span class=\"token punctuation\">:</span>\n        now_y<span class=\"token punctuation\">,</span> now_x <span class=\"token operator\">=</span> q<span class=\"token punctuation\">.</span>popleft<span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span>\n\n        <span class=\"token keyword\">if</span> now_y <span class=\"token operator\">==</span> goal_y <span class=\"token keyword\">and</span> now_x <span class=\"token operator\">==</span> goal_x<span class=\"token punctuation\">:</span>\n            <span class=\"token keyword\">return</span> board<span class=\"token punctuation\">[</span>now_y<span class=\"token punctuation\">]</span><span class=\"token punctuation\">[</span>now_x<span class=\"token punctuation\">]</span> <span class=\"token operator\">-</span> <span class=\"token number\">1</span>\n\n        <span class=\"token keyword\">for</span> dire_y<span class=\"token punctuation\">,</span> dire_x <span class=\"token keyword\">in</span> dire<span class=\"token punctuation\">:</span>\n            next_y <span class=\"token operator\">=</span> now_y <span class=\"token operator\">+</span> dire_y\n            next_x <span class=\"token operator\">=</span> now_x <span class=\"token operator\">+</span> dire_x\n            <span class=\"token keyword\">if</span> <span class=\"token number\">0</span> <span class=\"token operator\">&lt;=</span> next_y <span class=\"token operator\">&lt;</span> size <span class=\"token keyword\">and</span> <span class=\"token number\">0</span> <span class=\"token operator\">&lt;=</span> next_x <span class=\"token operator\">&lt;</span> size<span class=\"token punctuation\">:</span>\n                <span class=\"token keyword\">if</span> board<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                    q<span class=\"token punctuation\">.</span>append<span class=\"token punctuation\">(</span><span class=\"token punctuation\">[</span>next_y<span class=\"token punctuation\">,</span> next_x<span class=\"token punctuation\">]</span><span class=\"token punctuation\">)</span>\n                    board<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> board<span class=\"token punctuation\">[</span>now_y<span class=\"token punctuation\">]</span><span class=\"token punctuation\">[</span>now_x<span class=\"token punctuation\">]</span> <span class=\"token operator\">+</span> <span class=\"token number\">1</span>\n\nt <span class=\"token operator\">=</span> <span class=\"token builtin\">int</span><span class=\"token punctuation\">(</span><span class=\"token builtin\">input</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</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>t<span class=\"token punctuation\">)</span><span class=\"token punctuation\">:</span>\n    size <span class=\"token operator\">=</span> <span class=\"token builtin\">int</span><span class=\"token punctuation\">(</span><span class=\"token builtin\">input</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span>\n    board <span class=\"token operator\">=</span> <span class=\"token punctuation\">[</span><span class=\"token punctuation\">[</span><span class=\"token number\">0</span> <span class=\"token keyword\">for</span> _ <span class=\"token keyword\">in</span> <span class=\"token builtin\">range</span><span class=\"token punctuation\">(</span>size<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>size<span class=\"token punctuation\">)</span><span class=\"token punctuation\">]</span>\n    start_y<span class=\"token punctuation\">,</span> start_x <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> <span class=\"token builtin\">input</span><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>\n    goal_y<span class=\"token punctuation\">,</span> goal_x <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> <span class=\"token builtin\">input</span><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>\n\n    <span class=\"token keyword\">if</span> start_y <span class=\"token operator\">==</span> goal_y <span class=\"token keyword\">and</span> start_x <span class=\"token operator\">==</span> goal_x<span class=\"token punctuation\">:</span>\n        <span class=\"token keyword\">print</span><span class=\"token punctuation\">(</span><span class=\"token number\">0</span><span class=\"token punctuation\">)</span>\n        <span class=\"token keyword\">continue</span>\n\n    ans <span class=\"token operator\">=</span> bfs<span class=\"token punctuation\">(</span>start_y<span class=\"token punctuation\">,</span> start_x<span class=\"token punctuation\">,</span> goal_y<span class=\"token punctuation\">,</span> goal_x<span class=\"token punctuation\">)</span>\n    <span class=\"token keyword\">print</span><span class=\"token punctuation\">(</span>ans<span class=\"token punctuation\">)</span></code></pre></div>","frontmatter":{"title":"BOJ-7562 - Python","date":"December 10, 2020"}}},"pageContext":{"slug":"/Algorithm/BOJ-7562-Python/","previous":{"fields":{"slug":"/Algorithm/BOJ-11055-Python/"},"frontmatter":{"title":"BOJ-11055 - Python","category":"Algorithm","draft":false}},"next":{"fields":{"slug":"/Algorithm/BOJ-11722-Python/"},"frontmatter":{"title":"BOJ-11722 - Python","category":"Algorithm","draft":false}}}},"staticQueryHashes":["3128451518","3290666882"]}