{"data":{"site":{"siteMetadata":{"title":"lastrites2018","author":"lastrites2018","siteUrl":"https://lastrites2018.netlify.com","comment":{"disqusShortName":"","utterances":"lastrites2018/gatsby-first-blog"},"sponsor":{"buyMeACoffeeId":""}}},"markdownRemark":{"id":"a91c9a8a-3225-5283-9db3-b86f81c9c1b0","excerpt":"letterCapitalize 문제를 풀어나간 생각 흐름을 그대로 적어보았습니다. 크롬 개발자 도구를 사용해서 풀어나갔어요. -> 아침에 일어나서 다시 생각해보니, 이렇게 어렵게 풀 이유가 없었음;; for문 한번이면 충분했고… 맨 처음 바꿔주고, 공백 다음에 문자열이 올 경우에만 대문자로 바꿔주면 되었을텐데. 술 먹은 날 새벽 코딩의 한계… 2.","html":"<ol>\n<li>\n<p>letterCapitalize 문제를 풀어나간 생각 흐름을 그대로 적어보았습니다.</p>\n<p>크롬 개발자 도구를 사용해서 풀어나갔어요.</p>\n<p>-> 아침에 일어나서 다시 생각해보니, 이렇게 어렵게 풀 이유가 없었음;; for문 한번이면 충분했고… 맨 처음 바꿔주고, 공백 다음에 문자열이 올 경우에만 대문자로 바꿔주면 되었을텐데. 술 먹은 날 새벽 코딩의 한계…</p>\n<div class=\"gatsby-highlight\" data-language=\"javascript\"><pre class=\"language-javascript\"><code class=\"language-javascript\"><span class=\"token comment\">// 수정버전</span>\n<span class=\"token keyword\">function</span> <span class=\"token function\">letterCapitalize</span><span class=\"token punctuation\">(</span>str<span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n <span class=\"token keyword\">var</span> capitalizeStr <span class=\"token operator\">=</span> <span class=\"token string\">''</span>\n\n <span class=\"token keyword\">for</span> <span class=\"token punctuation\">(</span><span class=\"token keyword\">var</span> i <span class=\"token operator\">=</span> <span class=\"token number\">0</span><span class=\"token punctuation\">;</span> i <span class=\"token operator\">&lt;</span> str<span class=\"token punctuation\">.</span>length<span class=\"token punctuation\">;</span> i<span class=\"token operator\">++</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n   <span class=\"token keyword\">if</span> <span class=\"token punctuation\">(</span><span class=\"token punctuation\">(</span>str<span class=\"token punctuation\">[</span>i <span class=\"token operator\">-</span> <span class=\"token number\">1</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">===</span> undefined <span class=\"token operator\">||</span> str<span class=\"token punctuation\">[</span>i <span class=\"token operator\">-</span> <span class=\"token number\">1</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">===</span> <span class=\"token string\">' '</span><span class=\"token punctuation\">)</span> <span class=\"token operator\">&amp;&amp;</span> str<span class=\"token punctuation\">[</span>i<span class=\"token punctuation\">]</span> <span class=\"token operator\">!==</span> <span class=\"token string\">' '</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n     capitalizeStr <span class=\"token operator\">+=</span> str<span class=\"token punctuation\">[</span>i<span class=\"token punctuation\">]</span><span class=\"token punctuation\">.</span><span class=\"token function\">toUpperCase</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span>\n   <span class=\"token punctuation\">}</span> <span class=\"token keyword\">else</span> <span class=\"token punctuation\">{</span>\n     capitalizeStr <span class=\"token operator\">+=</span> str<span class=\"token punctuation\">[</span>i<span class=\"token punctuation\">]</span>\n   <span class=\"token punctuation\">}</span>\n <span class=\"token punctuation\">}</span>\n\n <span class=\"token keyword\">return</span> capitalizeStr\n<span class=\"token punctuation\">}</span></code></pre></div>\n</li>\n</ol>\n<div class=\"gatsby-highlight\" data-language=\"javascript\"><pre class=\"language-javascript\"><code class=\"language-javascript\"><span class=\"token comment\">// 술 먹은 버전;</span>\n<span class=\"token comment\">/*\nletterCapitalize 함수를 작성합니다.\n\nstring이 input으로 주어지면, 각 단어의 첫 번째 글자를 대문자로 만들어 리턴합니다.\n단어 사이는 공백이 있을 수 있습니다.\n\nletterCapitalize(\"hello world\");        // => \"Hello World\"\nletterCapitalize(\"javascript is sexy\")  // => \"Javascript Is Sexy\"\nletterCapitalize(\"keep   the spaces  \") // => \"Keep   The Spaces  \"\n\n*/</span>\n\n풀이 진행과정\n\n<span class=\"token comment\">//초안은 지인에게 말로 설명함.</span>\n\n<span class=\"token comment\">//말로 설명했던, 즉 슈도 코드를 코드로 구현.</span>\n<span class=\"token comment\">//아래 코드는 스스로에게 하는 말이기에 반말로 서술.</span>\n<span class=\"token keyword\">function</span> <span class=\"token function\">letterCapitalize</span><span class=\"token punctuation\">(</span>str<span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n\t<span class=\"token keyword\">var</span> string <span class=\"token operator\">=</span> <span class=\"token string\">''</span><span class=\"token punctuation\">;</span>\n\t<span class=\"token keyword\">var</span> stringArr <span class=\"token operator\">=</span> <span class=\"token punctuation\">[</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">;</span>\n\n    <span class=\"token keyword\">for</span> <span class=\"token punctuation\">(</span><span class=\"token keyword\">var</span> i<span class=\"token operator\">=</span><span class=\"token number\">0</span><span class=\"token punctuation\">;</span> i<span class=\"token operator\">&lt;</span>str<span class=\"token punctuation\">.</span>length<span class=\"token punctuation\">;</span> i<span class=\"token operator\">++</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n        string <span class=\"token operator\">+=</span> str<span class=\"token punctuation\">[</span>i<span class=\"token punctuation\">]</span><span class=\"token punctuation\">;</span>\n        <span class=\"token keyword\">if</span> <span class=\"token punctuation\">(</span>str<span class=\"token punctuation\">[</span>i<span class=\"token operator\">+</span><span class=\"token number\">1</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">===</span> <span class=\"token string\">' '</span> <span class=\"token operator\">||</span> str<span class=\"token punctuation\">[</span>i<span class=\"token operator\">+</span><span class=\"token number\">1</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">===</span> undefined<span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n            <span class=\"token comment\">// 슈도 코드엔 없었던 코드화 해주면서 추가된 undefined 조건.</span>\n            <span class=\"token comment\">// 문장이 끝날 경우에 push 처리가 실행 안 된다는 게 생각남.</span>\n            stringArr<span class=\"token punctuation\">.</span><span class=\"token function\">push</span><span class=\"token punctuation\">(</span>string<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n            string <span class=\"token operator\">=</span> <span class=\"token string\">''</span><span class=\"token punctuation\">;</span>\n        <span class=\"token punctuation\">}</span>\n    <span class=\"token punctuation\">}</span>\n\n    <span class=\"token keyword\">for</span> <span class=\"token punctuation\">(</span><span class=\"token keyword\">var</span> k<span class=\"token operator\">=</span><span class=\"token number\">0</span><span class=\"token punctuation\">;</span> k<span class=\"token operator\">&lt;</span>stringArr<span class=\"token punctuation\">.</span>length<span class=\"token punctuation\">;</span> k<span class=\"token operator\">++</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n        <span class=\"token keyword\">if</span> <span class=\"token punctuation\">(</span>stringArr<span class=\"token punctuation\">[</span>k<span class=\"token punctuation\">]</span><span class=\"token punctuation\">.</span><span class=\"token function\">indexOf</span><span class=\"token punctuation\">(</span><span class=\"token string\">' '</span><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> <span class=\"token punctuation\">{</span>\n            stringArr<span class=\"token punctuation\">[</span>k<span class=\"token punctuation\">]</span> <span class=\"token operator\">=</span> stringArr<span class=\"token punctuation\">[</span>k<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><span class=\"token function\">toUpperclass</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"token comment\">//생각해보니 배열 하나기에 indexOf를 쓸 수 없지 않나?. 곧 바로 다시 생각해보니 문자열에도 indexOf를 쓸 수 있음.</span>\n        <span class=\"token punctuation\">}</span>\n    <span class=\"token punctuation\">}</span>\n\n    <span class=\"token keyword\">return</span> stringArr<span class=\"token punctuation\">;</span>\n\n<span class=\"token punctuation\">}</span>\n\n<span class=\"token comment\">// 만들었으니 문제에 제시되었던 예를 넣어서 실험해보자</span>\n<span class=\"token function\">letterCapitalize</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"hello world\"</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"token comment\">// 잉 에러?</span>\n<span class=\"token constant\">VM3338</span><span class=\"token punctuation\">:</span><span class=\"token number\">17</span> Uncaught TypeError<span class=\"token punctuation\">:</span> stringArr<span class=\"token punctuation\">[</span>k<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>toUpperclass is not a <span class=\"token keyword\">function</span>\n    at <span class=\"token function\">letterCapitalize</span> <span class=\"token punctuation\">(</span><span class=\"token operator\">&lt;</span>anonymous<span class=\"token operator\">></span><span class=\"token punctuation\">:</span><span class=\"token number\">17</span><span class=\"token punctuation\">:</span><span class=\"token number\">44</span><span class=\"token punctuation\">)</span>\n    at <span class=\"token operator\">&lt;</span>anonymous<span class=\"token operator\">></span><span class=\"token punctuation\">:</span><span class=\"token number\">1</span><span class=\"token punctuation\">:</span><span class=\"token number\">1</span>\nletterCapitalize @ <span class=\"token constant\">VM3338</span><span class=\"token punctuation\">:</span><span class=\"token number\">17</span>\n<span class=\"token punctuation\">(</span>anonymous<span class=\"token punctuation\">)</span> @ <span class=\"token constant\">VM3340</span><span class=\"token punctuation\">:</span><span class=\"token number\">1</span>\n\n<span class=\"token comment\">// 뭐지? 대문자로 만들어주는 함수를 잘못 썼나? mdn에 쳐보자.</span>\n<span class=\"token comment\">// 쳐봤더니 toUpperclass가 아니라 toUpperCase였던것.</span>\n\n<span class=\"token keyword\">function</span> <span class=\"token function\">letterCapitalize</span><span class=\"token punctuation\">(</span>str<span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n\t<span class=\"token keyword\">var</span> string <span class=\"token operator\">=</span> <span class=\"token string\">''</span><span class=\"token punctuation\">;</span>\n\t<span class=\"token keyword\">var</span> stringArr <span class=\"token operator\">=</span> <span class=\"token punctuation\">[</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">;</span>\n\n    <span class=\"token keyword\">for</span> <span class=\"token punctuation\">(</span><span class=\"token keyword\">var</span> i<span class=\"token operator\">=</span><span class=\"token number\">0</span><span class=\"token punctuation\">;</span> i<span class=\"token operator\">&lt;</span>str<span class=\"token punctuation\">.</span>length<span class=\"token punctuation\">;</span> i<span class=\"token operator\">++</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n        string <span class=\"token operator\">+=</span> str<span class=\"token punctuation\">[</span>i<span class=\"token punctuation\">]</span><span class=\"token punctuation\">;</span>\n        <span class=\"token keyword\">if</span> <span class=\"token punctuation\">(</span>str<span class=\"token punctuation\">[</span>i<span class=\"token operator\">+</span><span class=\"token number\">1</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">===</span> <span class=\"token string\">' '</span> <span class=\"token operator\">||</span> str<span class=\"token punctuation\">[</span>i<span class=\"token operator\">+</span><span class=\"token number\">1</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">===</span> undefined<span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n            stringArr<span class=\"token punctuation\">.</span><span class=\"token function\">push</span><span class=\"token punctuation\">(</span>string<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n            string <span class=\"token operator\">=</span> <span class=\"token string\">''</span><span class=\"token punctuation\">;</span>\n        <span class=\"token punctuation\">}</span>\n    <span class=\"token punctuation\">}</span>\n\n    <span class=\"token keyword\">for</span> <span class=\"token punctuation\">(</span><span class=\"token keyword\">var</span> k<span class=\"token operator\">=</span><span class=\"token number\">0</span><span class=\"token punctuation\">;</span> k<span class=\"token operator\">&lt;</span>stringArr<span class=\"token punctuation\">.</span>length<span class=\"token punctuation\">;</span> k<span class=\"token operator\">++</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n        <span class=\"token keyword\">if</span> <span class=\"token punctuation\">(</span>stringArr<span class=\"token punctuation\">[</span>k<span class=\"token punctuation\">]</span><span class=\"token punctuation\">.</span><span class=\"token function\">indexOf</span><span class=\"token punctuation\">(</span><span class=\"token string\">' '</span><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> <span class=\"token punctuation\">{</span>\n            stringArr<span class=\"token punctuation\">[</span>k<span class=\"token punctuation\">]</span> <span class=\"token operator\">=</span> stringArr<span class=\"token punctuation\">[</span>k<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><span class=\"token function\">toUpperCase</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n            <span class=\"token comment\">//toUpperCase로 수정해줌.</span>\n        <span class=\"token punctuation\">}</span>\n    <span class=\"token punctuation\">}</span>\n\n    <span class=\"token keyword\">return</span> stringArr<span class=\"token punctuation\">;</span>\n\n<span class=\"token punctuation\">}</span>\n<span class=\"token function\">letterCapitalize</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"hello world\"</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"token punctuation\">(</span><span class=\"token number\">2</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">[</span><span class=\"token string\">\"H\"</span><span class=\"token punctuation\">,</span> <span class=\"token string\">\" world\"</span><span class=\"token punctuation\">]</span>\n<span class=\"token comment\">//잉? 왜 H만 대문자지? 나머지 문자열은 어디갔어?</span>\n\n<span class=\"token keyword\">function</span> <span class=\"token function\">letterCapitalize</span><span class=\"token punctuation\">(</span>str<span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n\t<span class=\"token keyword\">var</span> string <span class=\"token operator\">=</span> <span class=\"token string\">''</span><span class=\"token punctuation\">;</span>\n\t<span class=\"token keyword\">var</span> stringArr <span class=\"token operator\">=</span> <span class=\"token punctuation\">[</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">;</span>\n\n    <span class=\"token keyword\">for</span> <span class=\"token punctuation\">(</span><span class=\"token keyword\">var</span> i<span class=\"token operator\">=</span><span class=\"token number\">0</span><span class=\"token punctuation\">;</span> i<span class=\"token operator\">&lt;</span>str<span class=\"token punctuation\">.</span>length<span class=\"token punctuation\">;</span> i<span class=\"token operator\">++</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n        string <span class=\"token operator\">+=</span> str<span class=\"token punctuation\">[</span>i<span class=\"token punctuation\">]</span><span class=\"token punctuation\">;</span>\n        <span class=\"token keyword\">if</span> <span class=\"token punctuation\">(</span>str<span class=\"token punctuation\">[</span>i<span class=\"token operator\">+</span><span class=\"token number\">1</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">===</span> <span class=\"token string\">' '</span> <span class=\"token operator\">||</span> str<span class=\"token punctuation\">[</span>i<span class=\"token operator\">+</span><span class=\"token number\">1</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">===</span> undefined<span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n            stringArr<span class=\"token punctuation\">.</span><span class=\"token function\">push</span><span class=\"token punctuation\">(</span>string<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n            string <span class=\"token operator\">=</span> <span class=\"token string\">''</span><span class=\"token punctuation\">;</span>\n        <span class=\"token punctuation\">}</span>\n    <span class=\"token punctuation\">}</span>\n\n    <span class=\"token keyword\">for</span> <span class=\"token punctuation\">(</span><span class=\"token keyword\">var</span> k<span class=\"token operator\">=</span><span class=\"token number\">0</span><span class=\"token punctuation\">;</span> k<span class=\"token operator\">&lt;</span>stringArr<span class=\"token punctuation\">.</span>length<span class=\"token punctuation\">;</span> k<span class=\"token operator\">++</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n        <span class=\"token keyword\">if</span> <span class=\"token punctuation\">(</span>stringArr<span class=\"token punctuation\">[</span>k<span class=\"token punctuation\">]</span><span class=\"token punctuation\">.</span><span class=\"token function\">indexOf</span><span class=\"token punctuation\">(</span><span class=\"token string\">' '</span><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> <span class=\"token punctuation\">{</span>\n            stringArr<span class=\"token punctuation\">[</span>k<span class=\"token punctuation\">]</span> <span class=\"token operator\">=</span> stringArr<span class=\"token punctuation\">[</span>k<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><span class=\"token function\">toUpperCase</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span> <span class=\"token operator\">+</span> stringArr<span class=\"token punctuation\">[</span>k<span class=\"token punctuation\">]</span><span class=\"token punctuation\">.</span><span class=\"token function\">slice</span><span class=\"token punctuation\">(</span><span class=\"token number\">1</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n            <span class=\"token comment\">//다시 소스를 봤더니, 앞글자만 대문자 만들어주고 나머지 문자는 넣을 생각을 안 했네... slice로 잘라서 붙여주자!</span>\n        <span class=\"token punctuation\">}</span>\n    <span class=\"token punctuation\">}</span>\n\n    <span class=\"token keyword\">return</span> stringArr<span class=\"token punctuation\">;</span>\n\n<span class=\"token punctuation\">}</span>\n<span class=\"token function\">letterCapitalize</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"hello world\"</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"token punctuation\">(</span><span class=\"token number\">2</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">[</span><span class=\"token string\">\"Hello\"</span><span class=\"token punctuation\">,</span> <span class=\"token string\">\" world\"</span><span class=\"token punctuation\">]</span>\n<span class=\"token comment\">// 좋아. 앞글자 대문자로 만드는데는 성공했어. 그런데 왜 가운데 공백은 world랑 붙어있지?</span>\n\n<span class=\"token keyword\">function</span> <span class=\"token function\">letterCapitalize</span><span class=\"token punctuation\">(</span>str<span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n\t<span class=\"token keyword\">var</span> string <span class=\"token operator\">=</span> <span class=\"token string\">''</span><span class=\"token punctuation\">;</span>\n\t<span class=\"token keyword\">var</span> stringArr <span class=\"token operator\">=</span> <span class=\"token punctuation\">[</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">;</span>\n\n    <span class=\"token keyword\">for</span> <span class=\"token punctuation\">(</span><span class=\"token keyword\">var</span> i<span class=\"token operator\">=</span><span class=\"token number\">0</span><span class=\"token punctuation\">;</span> i<span class=\"token operator\">&lt;</span>str<span class=\"token punctuation\">.</span>length<span class=\"token punctuation\">;</span> i<span class=\"token operator\">++</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n        string <span class=\"token operator\">+=</span> str<span class=\"token punctuation\">[</span>i<span class=\"token punctuation\">]</span><span class=\"token punctuation\">;</span>\n        <span class=\"token keyword\">if</span> <span class=\"token punctuation\">(</span>str<span class=\"token punctuation\">[</span>i<span class=\"token operator\">+</span><span class=\"token number\">1</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">===</span> <span class=\"token string\">' '</span> <span class=\"token operator\">||</span> str<span class=\"token punctuation\">[</span>i<span class=\"token operator\">+</span><span class=\"token number\">1</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">===</span> undefined<span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n            stringArr<span class=\"token punctuation\">.</span><span class=\"token function\">push</span><span class=\"token punctuation\">(</span>string<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n            string <span class=\"token operator\">=</span> <span class=\"token string\">''</span><span class=\"token punctuation\">;</span>\n        <span class=\"token punctuation\">}</span>\n    <span class=\"token punctuation\">}</span>\n\tconsole<span class=\"token punctuation\">.</span><span class=\"token function\">log</span><span class=\"token punctuation\">(</span>stringArr<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n    <span class=\"token comment\">//뭐가 문제인지 확인하기 위해 콘솔로그를 찍어봄.</span>\n\n    <span class=\"token keyword\">for</span> <span class=\"token punctuation\">(</span><span class=\"token keyword\">var</span> k<span class=\"token operator\">=</span><span class=\"token number\">0</span><span class=\"token punctuation\">;</span> k<span class=\"token operator\">&lt;</span>stringArr<span class=\"token punctuation\">.</span>length<span class=\"token punctuation\">;</span> k<span class=\"token operator\">++</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n        <span class=\"token keyword\">if</span> <span class=\"token punctuation\">(</span>stringArr<span class=\"token punctuation\">[</span>k<span class=\"token punctuation\">]</span><span class=\"token punctuation\">.</span><span class=\"token function\">indexOf</span><span class=\"token punctuation\">(</span><span class=\"token string\">' '</span><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> <span class=\"token punctuation\">{</span>\n            stringArr<span class=\"token punctuation\">[</span>k<span class=\"token punctuation\">]</span> <span class=\"token operator\">=</span> stringArr<span class=\"token punctuation\">[</span>k<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><span class=\"token function\">toUpperCase</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span> <span class=\"token operator\">+</span> stringArr<span class=\"token punctuation\">[</span>k<span class=\"token punctuation\">]</span><span class=\"token punctuation\">.</span><span class=\"token function\">slice</span><span class=\"token punctuation\">(</span><span class=\"token number\">1</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n        <span class=\"token punctuation\">}</span>\n    <span class=\"token punctuation\">}</span>\n\n    <span class=\"token keyword\">return</span> stringArr<span class=\"token punctuation\">;</span>\n\n<span class=\"token punctuation\">}</span>\nundefined\n<span class=\"token function\">letterCapitalize</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"hello world\"</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"token punctuation\">(</span><span class=\"token number\">2</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">[</span><span class=\"token string\">\"hello\"</span><span class=\"token punctuation\">,</span> <span class=\"token string\">\" world\"</span><span class=\"token punctuation\">]</span> <span class=\"token comment\">//console.log 찍은 부분.</span>\n<span class=\"token punctuation\">(</span><span class=\"token number\">2</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">[</span><span class=\"token string\">\"Hello\"</span><span class=\"token punctuation\">,</span> <span class=\"token string\">\" world\"</span><span class=\"token punctuation\">]</span>\n<span class=\"token comment\">// 공백world 부분이 제대로 작동하지 않음. 왜냐하면 공백이 하나만 있을 경우를 생각하지 못했음.</span>\n<span class=\"token comment\">// 하나일 경우에 바로 뒤에 문자열이 나오기 때문에 push가 실행이 안 되고 계속 진행됨.</span>\n\n<span class=\"token comment\">// 어떻게든 공백이 하나일 경우에 잘라줘야 하는데, 이 경우엔 스스로(str[i])가 공백이고,</span>\n<span class=\"token comment\">// 다음(str[i+1])이 문자일 경우를 넣어주면 되지 않을까?</span>\n\n<span class=\"token keyword\">function</span> <span class=\"token function\">letterCapitalize</span><span class=\"token punctuation\">(</span>str<span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n\t<span class=\"token keyword\">var</span> string <span class=\"token operator\">=</span> <span class=\"token string\">''</span><span class=\"token punctuation\">;</span>\n\t<span class=\"token keyword\">var</span> stringArr <span class=\"token operator\">=</span> <span class=\"token punctuation\">[</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">;</span>\n\n    <span class=\"token keyword\">for</span> <span class=\"token punctuation\">(</span><span class=\"token keyword\">var</span> i<span class=\"token operator\">=</span><span class=\"token number\">0</span><span class=\"token punctuation\">;</span> i<span class=\"token operator\">&lt;</span>str<span class=\"token punctuation\">.</span>length<span class=\"token punctuation\">;</span> i<span class=\"token operator\">++</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n        string <span class=\"token operator\">+=</span> str<span class=\"token punctuation\">[</span>i<span class=\"token punctuation\">]</span><span class=\"token punctuation\">;</span>\n        <span class=\"token keyword\">if</span> <span class=\"token punctuation\">(</span>str<span class=\"token punctuation\">[</span>i<span class=\"token operator\">+</span><span class=\"token number\">1</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">===</span> <span class=\"token string\">' '</span> <span class=\"token operator\">||</span> str<span class=\"token punctuation\">[</span>i<span class=\"token operator\">+</span><span class=\"token number\">1</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">===</span> undefined <span class=\"token operator\">||</span> str<span class=\"token punctuation\">[</span>i<span class=\"token punctuation\">]</span> <span class=\"token operator\">===</span> <span class=\"token string\">' '</span> <span class=\"token operator\">&amp;&amp;</span> str<span class=\"token punctuation\">[</span>i<span class=\"token operator\">+</span><span class=\"token number\">1</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">!==</span> <span class=\"token string\">' '</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n            <span class=\"token comment\">//공백 한 글자 경우를 맞춰줌.</span>\n            stringArr<span class=\"token punctuation\">.</span><span class=\"token function\">push</span><span class=\"token punctuation\">(</span>string<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n            string <span class=\"token operator\">=</span> <span class=\"token string\">''</span><span class=\"token punctuation\">;</span>\n        <span class=\"token punctuation\">}</span>\n    <span class=\"token punctuation\">}</span>\n\tconsole<span class=\"token punctuation\">.</span><span class=\"token function\">log</span><span class=\"token punctuation\">(</span>stringArr<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\n    <span class=\"token keyword\">for</span> <span class=\"token punctuation\">(</span><span class=\"token keyword\">var</span> k<span class=\"token operator\">=</span><span class=\"token number\">0</span><span class=\"token punctuation\">;</span> k<span class=\"token operator\">&lt;</span>stringArr<span class=\"token punctuation\">.</span>length<span class=\"token punctuation\">;</span> k<span class=\"token operator\">++</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n        <span class=\"token keyword\">if</span> <span class=\"token punctuation\">(</span>stringArr<span class=\"token punctuation\">[</span>k<span class=\"token punctuation\">]</span><span class=\"token punctuation\">.</span><span class=\"token function\">indexOf</span><span class=\"token punctuation\">(</span><span class=\"token string\">' '</span><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> <span class=\"token punctuation\">{</span>\n            stringArr<span class=\"token punctuation\">[</span>k<span class=\"token punctuation\">]</span> <span class=\"token operator\">=</span> stringArr<span class=\"token punctuation\">[</span>k<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><span class=\"token function\">toUpperCase</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span> <span class=\"token operator\">+</span> stringArr<span class=\"token punctuation\">[</span>k<span class=\"token punctuation\">]</span><span class=\"token punctuation\">.</span><span class=\"token function\">slice</span><span class=\"token punctuation\">(</span><span class=\"token number\">1</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n        <span class=\"token punctuation\">}</span>\n    <span class=\"token punctuation\">}</span>\n\n    <span class=\"token keyword\">return</span> stringArr<span class=\"token punctuation\">;</span>\n\n\n<span class=\"token punctuation\">}</span>\n\n<span class=\"token function\">letterCapitalize</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"hello world\"</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"token punctuation\">(</span><span class=\"token number\">3</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">[</span><span class=\"token string\">\"hello\"</span><span class=\"token punctuation\">,</span> <span class=\"token string\">\" \"</span><span class=\"token punctuation\">,</span> <span class=\"token string\">\"world\"</span><span class=\"token punctuation\">]</span>\n<span class=\"token punctuation\">(</span><span class=\"token number\">3</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">[</span><span class=\"token string\">\"Hello\"</span><span class=\"token punctuation\">,</span> <span class=\"token string\">\" \"</span><span class=\"token punctuation\">,</span> <span class=\"token string\">\"World\"</span><span class=\"token punctuation\">]</span>\n<span class=\"token comment\">// 정상 작동하는걸로 보인다! 중간에 썼던 console를 정리해주고, join 해주면 될 것 같다...</span>\n\n<span class=\"token keyword\">function</span> <span class=\"token function\">letterCapitalize</span><span class=\"token punctuation\">(</span>str<span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n\t<span class=\"token keyword\">var</span> string <span class=\"token operator\">=</span> <span class=\"token string\">''</span><span class=\"token punctuation\">;</span>\n\t<span class=\"token keyword\">var</span> stringArr <span class=\"token operator\">=</span> <span class=\"token punctuation\">[</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">;</span>\n\n    <span class=\"token keyword\">for</span> <span class=\"token punctuation\">(</span><span class=\"token keyword\">var</span> i<span class=\"token operator\">=</span><span class=\"token number\">0</span><span class=\"token punctuation\">;</span> i<span class=\"token operator\">&lt;</span>str<span class=\"token punctuation\">.</span>length<span class=\"token punctuation\">;</span> i<span class=\"token operator\">++</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n        string <span class=\"token operator\">+=</span> str<span class=\"token punctuation\">[</span>i<span class=\"token punctuation\">]</span><span class=\"token punctuation\">;</span>\n        <span class=\"token keyword\">if</span> <span class=\"token punctuation\">(</span>str<span class=\"token punctuation\">[</span>i<span class=\"token operator\">+</span><span class=\"token number\">1</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">===</span> <span class=\"token string\">' '</span> <span class=\"token operator\">||</span> str<span class=\"token punctuation\">[</span>i<span class=\"token operator\">+</span><span class=\"token number\">1</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">===</span> undefined <span class=\"token operator\">||</span> str<span class=\"token punctuation\">[</span>i<span class=\"token punctuation\">]</span> <span class=\"token operator\">===</span> <span class=\"token string\">' '</span> <span class=\"token operator\">&amp;&amp;</span> str<span class=\"token punctuation\">[</span>i<span class=\"token operator\">+</span><span class=\"token number\">1</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">!==</span> <span class=\"token string\">' '</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n            stringArr<span class=\"token punctuation\">.</span><span class=\"token function\">push</span><span class=\"token punctuation\">(</span>string<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n            string <span class=\"token operator\">=</span> <span class=\"token string\">''</span><span class=\"token punctuation\">;</span>\n        <span class=\"token punctuation\">}</span>\n    <span class=\"token punctuation\">}</span>\n    <span class=\"token comment\">//콘솔로그 부분 정리함</span>\n\n    <span class=\"token keyword\">for</span> <span class=\"token punctuation\">(</span><span class=\"token keyword\">var</span> k<span class=\"token operator\">=</span><span class=\"token number\">0</span><span class=\"token punctuation\">;</span> k<span class=\"token operator\">&lt;</span>stringArr<span class=\"token punctuation\">.</span>length<span class=\"token punctuation\">;</span> k<span class=\"token operator\">++</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n        <span class=\"token keyword\">if</span> <span class=\"token punctuation\">(</span>stringArr<span class=\"token punctuation\">[</span>k<span class=\"token punctuation\">]</span><span class=\"token punctuation\">.</span><span class=\"token function\">indexOf</span><span class=\"token punctuation\">(</span><span class=\"token string\">' '</span><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> <span class=\"token punctuation\">{</span>\n            stringArr<span class=\"token punctuation\">[</span>k<span class=\"token punctuation\">]</span> <span class=\"token operator\">=</span> stringArr<span class=\"token punctuation\">[</span>k<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><span class=\"token function\">toUpperCase</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span> <span class=\"token operator\">+</span> stringArr<span class=\"token punctuation\">[</span>k<span class=\"token punctuation\">]</span><span class=\"token punctuation\">.</span><span class=\"token function\">slice</span><span class=\"token punctuation\">(</span><span class=\"token number\">1</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n        <span class=\"token punctuation\">}</span>\n    <span class=\"token punctuation\">}</span>\n\n    <span class=\"token keyword\">return</span> stringArr<span class=\"token punctuation\">.</span><span class=\"token function\">join</span><span class=\"token punctuation\">(</span><span class=\"token string\">''</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\t<span class=\"token comment\">//조인 해줌.</span>\n\n<span class=\"token punctuation\">}</span>\n<span class=\"token function\">letterCapitalize</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"hello world\"</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"token string\">\"Hello World\"</span>\n<span class=\"token comment\">// 작동함 다른 예제를 가져와보자</span>\n<span class=\"token function\">letterCapitalize</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"javascript is sexy\"</span><span class=\"token punctuation\">)</span>  <span class=\"token comment\">// => \"Javascript Is Sexy\"</span>\n<span class=\"token string\">\"Javascript Is Sexy\"</span>\n<span class=\"token comment\">//ok</span>\n\n<span class=\"token comment\">//그럼 대망의 마지막</span>\n\n<span class=\"token function\">letterCapitalize</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"keep   the spaces  \"</span><span class=\"token punctuation\">)</span> <span class=\"token comment\">// => \"Keep   The Spaces  \"</span>\n<span class=\"token string\">\"Keep   The Spaces  \"</span>\n<span class=\"token comment\">//완료!</span></code></pre></div>\n<p>2.</p>\n<div class=\"gatsby-highlight\" data-language=\"javascript\"><pre class=\"language-javascript\"><code class=\"language-javascript\"><span class=\"token comment\">/*\nmakeFib 함수를 작성합니다.\n\nmakeFib 함수는 클로저의 형태로 작성되며, 리턴된 함수가 호출될 때마다 피보나치 수열을 순차적으로 출력합니다.\n피보나치 수는 0과 1로 시작하며, 다음 피보나치 수는 바로 앞의 두 피보나치 수의 합이 됩니다.\n\n0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, ...\n\n이 함수는 recursive 혹은 iterative한 방법 중 어떤 방법으로든 구현할 수 있습니다.\n\n예제\n---\n\nvar fn = makeFib();\nfn(); // 0\nfn(); // 1\nfn(); // 1\nfn(); // 2\nfn(); // 3\nfn(); // 5\n\n*/</span>\n\n<span class=\"token keyword\">var</span> result <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>\n<span class=\"token keyword\">var</span> count <span class=\"token operator\">=</span> <span class=\"token operator\">-</span><span class=\"token number\">1</span>\n<span class=\"token keyword\">var</span> <span class=\"token function-variable function\">fn</span> <span class=\"token operator\">=</span> <span class=\"token keyword\">function</span> <span class=\"token function\">makeFib</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n  result<span class=\"token punctuation\">.</span><span class=\"token function\">push</span><span class=\"token punctuation\">(</span>result<span class=\"token punctuation\">[</span>result<span class=\"token punctuation\">.</span>length <span class=\"token operator\">-</span> <span class=\"token number\">1</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">+</span> result<span class=\"token punctuation\">[</span>result<span class=\"token punctuation\">.</span>length <span class=\"token operator\">-</span> <span class=\"token number\">2</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">)</span>\n  count <span class=\"token operator\">+=</span> <span class=\"token number\">1</span>\n  <span class=\"token keyword\">return</span> result<span class=\"token punctuation\">[</span>count<span class=\"token punctuation\">]</span>\n<span class=\"token punctuation\">}</span>\n<span class=\"token comment\">// 역시 이 문제도 머리로 생각했던 부분과 실제로 구현되면서 좀 달라진 부분들이 존재합니다. count 부분이 추가되었죠.</span>\n<span class=\"token comment\">// fn() 첫 시작이 0부터라는 걸 간과했더라구요. 어떻게 해결할까 하다가, index 개념의 카운트를 넣어주면 간단하지 않을까? 싶었습니다.</span>\n<span class=\"token comment\">// 막 깔끔하진 않지만 어쨌든 해결은 됐네요.</span>\n\n<span class=\"token comment\">// 위의 코드를 specrunner 조건에 맞게 수정한 버전.</span>\n<span class=\"token keyword\">function</span> <span class=\"token function\">makeFib</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n  <span class=\"token comment\">// your code here</span>\n  <span class=\"token keyword\">var</span> result <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>\n  <span class=\"token keyword\">var</span> count <span class=\"token operator\">=</span> <span class=\"token operator\">-</span><span class=\"token number\">1</span>\n  <span class=\"token keyword\">return</span> <span class=\"token keyword\">function</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n    result<span class=\"token punctuation\">.</span><span class=\"token function\">push</span><span class=\"token punctuation\">(</span>result<span class=\"token punctuation\">[</span>result<span class=\"token punctuation\">.</span>length <span class=\"token operator\">-</span> <span class=\"token number\">1</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">+</span> result<span class=\"token punctuation\">[</span>result<span class=\"token punctuation\">.</span>length <span class=\"token operator\">-</span> <span class=\"token number\">2</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">)</span>\n    count <span class=\"token operator\">+=</span> <span class=\"token number\">1</span>\n    <span class=\"token keyword\">return</span> result<span class=\"token punctuation\">[</span>count<span class=\"token punctuation\">]</span>\n  <span class=\"token punctuation\">}</span>\n<span class=\"token punctuation\">}</span></code></pre></div>","frontmatter":{"title":"IAT 2차 문제를 동료에게 설명하기","date":"September 05, 2018"}}},"pageContext":{"isCreatedByStatefulCreatePages":false,"slug":"/til/20180905 IAT 2차 문제/","previous":{"fields":{"slug":"/til/20180904-20180907 recursion challenge, recursion example/"},"frontmatter":{"title":"recursion challenge, recursion example","category":"TIL"}},"next":{"fields":{"slug":"/til/20180905 Git Command Patch Failed + JS Math + ES6/"},"frontmatter":{"title":"Git Command Patch Failed + JS Math + ES6","category":"TIL"}}}}