{"componentChunkName":"component---src-templates-blog-post-js","path":"/Algorithm/프로그래머스-단어변환-Python/","result":{"data":{"site":{"siteMetadata":{"title":"hyesungoh","author":"hyesungoh","siteUrl":"https://www.hyesungoh.xyz","comment":{"disqusShortName":"","utterances":"hyesungoh/blog"},"sponsor":{"buyMeACoffeeId":""}}},"markdownRemark":{"id":"8efb2d3a-1bc5-5e82-b4d1-d95709dbc857","excerpt":"두 개의 단어 begin, target과 단어의 집합 words가 있다. 한 번에 한 개의 알파벳만 바꿀 수 있으며, words에 있는 단어로만 변환할 수 있는 조건이 있을 때, 최소 몇 단계의 과정을 거쳐 begin을 traget으로 변환할 수 있는지 반환하는 문제. 모든 단어에 대해서 값을 비교하여 한개만 다른 것들을 모아 놓은 인접리스트 그래프를 만들었다. 그 후 단계를 저장하는 dist 역시 딕셔너리 자료형을 이용했으며 해당 값을 비교하여 bfs…","html":"<p>두 개의 단어 begin, target과 단어의 집합 words가 있다. 한 번에 한 개의 알파벳만 바꿀 수 있으며, words에 있는 단어로만 변환할 수 있는 조건이 있을 때, 최소 몇 단계의 과정을 거쳐 begin을 traget으로 변환할 수 있는지 반환하는 문제. 모든 단어에 대해서 값을 비교하여 한개만 다른 것들을 모아 놓은 인접리스트 그래프를 만들었다. 그 후 단계를 저장하는 dist 역시 딕셔너리 자료형을 이용했으며 해당 값을 비교하여 bfs 연산을 통해 값을 반환, 초기 설정된 값과 동일하거나 딕셔너리에 존재하지 않을 시 0을 반환하여 풀었다.</p>\n<div class=\"gatsby-highlight\" data-language=\"python\"><pre class=\"language-python\"><code class=\"language-python\"><span class=\"token keyword\">from</span> collections <span class=\"token keyword\">import</span> deque\n\n<span class=\"token keyword\">def</span> <span class=\"token function\">make_graph</span><span class=\"token punctuation\">(</span>graph<span class=\"token punctuation\">,</span> words<span class=\"token punctuation\">,</span> words_length<span class=\"token punctuation\">,</span> word_length<span class=\"token punctuation\">)</span><span class=\"token punctuation\">:</span>\n    <span class=\"token keyword\">for</span> word_index <span class=\"token keyword\">in</span> <span class=\"token builtin\">range</span><span class=\"token punctuation\">(</span>words_length<span class=\"token punctuation\">)</span><span class=\"token punctuation\">:</span>\n        <span class=\"token keyword\">for</span> compare_word_index <span class=\"token keyword\">in</span> <span class=\"token builtin\">range</span><span class=\"token punctuation\">(</span>words_length<span class=\"token punctuation\">)</span><span class=\"token punctuation\">:</span>\n            <span class=\"token keyword\">if</span> word_index <span class=\"token operator\">==</span> compare_word_index<span class=\"token punctuation\">:</span>\n                <span class=\"token keyword\">continue</span>\n\n            cnt <span class=\"token operator\">=</span> <span class=\"token number\">0</span>\n            word <span class=\"token operator\">=</span> words<span class=\"token punctuation\">[</span>word_index<span class=\"token punctuation\">]</span>\n            compare_word <span class=\"token operator\">=</span> words<span class=\"token punctuation\">[</span>compare_word_index<span class=\"token punctuation\">]</span>\n            <span class=\"token keyword\">for</span> index <span class=\"token keyword\">in</span> <span class=\"token builtin\">range</span><span class=\"token punctuation\">(</span>word_length<span class=\"token punctuation\">)</span><span class=\"token punctuation\">:</span>\n                <span class=\"token keyword\">if</span> word<span class=\"token punctuation\">[</span>index<span class=\"token punctuation\">]</span> <span class=\"token operator\">!=</span> compare_word<span class=\"token punctuation\">[</span>index<span class=\"token punctuation\">]</span><span class=\"token punctuation\">:</span>\n                    cnt <span class=\"token operator\">+=</span> <span class=\"token number\">1</span>\n\n                <span class=\"token keyword\">if</span> cnt <span class=\"token operator\">></span> <span class=\"token number\">1</span><span class=\"token punctuation\">:</span>\n                    <span class=\"token keyword\">break</span>\n            <span class=\"token keyword\">else</span><span class=\"token punctuation\">:</span>\n                graph<span class=\"token punctuation\">[</span>word<span class=\"token punctuation\">]</span><span class=\"token punctuation\">.</span>append<span class=\"token punctuation\">(</span>compare_word<span class=\"token punctuation\">)</span>\n                graph<span class=\"token punctuation\">[</span>compare_word<span class=\"token punctuation\">]</span><span class=\"token punctuation\">.</span>append<span class=\"token punctuation\">(</span>word<span class=\"token punctuation\">)</span>\n\n<span class=\"token keyword\">def</span> <span class=\"token function\">solution</span><span class=\"token punctuation\">(</span>begin<span class=\"token punctuation\">,</span> target<span class=\"token punctuation\">,</span> words<span class=\"token punctuation\">)</span><span class=\"token punctuation\">:</span>\n    words<span class=\"token punctuation\">.</span>append<span class=\"token punctuation\">(</span>begin<span class=\"token punctuation\">)</span>\n    word_length <span class=\"token operator\">=</span> <span class=\"token builtin\">len</span><span class=\"token punctuation\">(</span>begin<span class=\"token punctuation\">)</span>\n    words_length <span class=\"token operator\">=</span> <span class=\"token builtin\">len</span><span class=\"token punctuation\">(</span>words<span class=\"token punctuation\">)</span>\n    graph <span class=\"token operator\">=</span> <span class=\"token punctuation\">{</span>i<span class=\"token punctuation\">:</span> <span class=\"token punctuation\">[</span><span class=\"token punctuation\">]</span> <span class=\"token keyword\">for</span> i <span class=\"token keyword\">in</span> words<span class=\"token punctuation\">}</span>\n    dist <span class=\"token operator\">=</span> <span class=\"token punctuation\">{</span>i<span class=\"token punctuation\">:</span> words_length <span class=\"token operator\">+</span> <span class=\"token number\">1</span> <span class=\"token keyword\">for</span> i <span class=\"token keyword\">in</span> words<span class=\"token punctuation\">}</span>\n\n    make_graph<span class=\"token punctuation\">(</span>graph<span class=\"token punctuation\">,</span> words<span class=\"token punctuation\">,</span> words_length<span class=\"token punctuation\">,</span> word_length<span class=\"token punctuation\">)</span>\n\n    q <span class=\"token operator\">=</span> deque<span class=\"token punctuation\">(</span><span class=\"token punctuation\">[</span>begin<span class=\"token punctuation\">]</span><span class=\"token punctuation\">)</span>\n    dist<span class=\"token punctuation\">[</span>begin<span class=\"token punctuation\">]</span> <span class=\"token operator\">=</span> <span class=\"token number\">0</span>\n    <span class=\"token keyword\">while</span> q<span class=\"token punctuation\">:</span>\n        word_now <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\">for</span> word_next <span class=\"token keyword\">in</span> graph<span class=\"token punctuation\">[</span>word_now<span class=\"token punctuation\">]</span><span class=\"token punctuation\">:</span>\n            <span class=\"token keyword\">if</span> dist<span class=\"token punctuation\">[</span>word_next<span class=\"token punctuation\">]</span> <span class=\"token operator\">&lt;</span> dist<span class=\"token punctuation\">[</span>word_now<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 keyword\">continue</span>\n\n            dist<span class=\"token punctuation\">[</span>word_next<span class=\"token punctuation\">]</span> <span class=\"token operator\">=</span> dist<span class=\"token punctuation\">[</span>word_now<span class=\"token punctuation\">]</span> <span class=\"token operator\">+</span> <span class=\"token number\">1</span>\n            q<span class=\"token punctuation\">.</span>append<span class=\"token punctuation\">(</span>word_next<span class=\"token punctuation\">)</span>\n\n    <span class=\"token keyword\">if</span> target <span class=\"token keyword\">in</span> dist<span class=\"token punctuation\">:</span>\n        <span class=\"token keyword\">return</span> dist<span class=\"token punctuation\">[</span>target<span class=\"token punctuation\">]</span> <span class=\"token keyword\">if</span> dist<span class=\"token punctuation\">[</span>target<span class=\"token punctuation\">]</span> <span class=\"token operator\">!=</span> words_length <span class=\"token operator\">+</span> <span class=\"token number\">1</span> <span class=\"token keyword\">else</span> <span class=\"token number\">0</span>\n    <span class=\"token keyword\">else</span><span class=\"token punctuation\">:</span>\n        <span class=\"token keyword\">return</span> <span class=\"token number\">0</span></code></pre></div>","frontmatter":{"title":"프로그래머스-단어변환 - Python","date":"March 07, 2021"}}},"pageContext":{"slug":"/Algorithm/프로그래머스-단어변환-Python/","previous":{"fields":{"slug":"/Algorithm/BOJ-1946-Python/"},"frontmatter":{"title":"BOJ-1946 - Python","category":"Algorithm","draft":false}},"next":{"fields":{"slug":"/Algorithm/BOJ-17845-Python/"},"frontmatter":{"title":"BOJ-17845 - Python","category":"Algorithm","draft":false}}}},"staticQueryHashes":["3128451518","3290666882"]}