<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>웹 개발자가 되고 싶어요 </title>
    <link>https://devyj.tistory.com/</link>
    <description></description>
    <language>ko</language>
    <pubDate>Thu, 4 Jun 2026 23:23:19 +0900</pubDate>
    <generator>TISTORY</generator>
    <ttl>100</ttl>
    <managingEditor>Dev_YooJin</managingEditor>
    <image>
      <title>웹 개발자가 되고 싶어요 </title>
      <url>https://tistory1.daumcdn.net/tistory/2860739/attach/9522c01392c8490e957611644769678b</url>
      <link>https://devyj.tistory.com</link>
    </image>
    <item>
      <title>모의 테스트 1 - 자릿수 더하기</title>
      <link>https://devyj.tistory.com/27</link>
      <description>&lt;p&gt;&lt;/p&gt;
&lt;p&gt;출저 &lt;i class=&quot;fa fa-caret-right&quot; aria-hidden=&quot;true&quot;&gt;&lt;/i&gt;&amp;nbsp;
&lt;a href=&quot;https://programmers.co.kr/tryouts/1467/challenges/3526?language=java&quot; target=&quot;_blank&quot; class=&quot;tx-link&quot; style=&quot;font-size: 16px;&quot;&gt; 프로그래머스 모의테스트 &lt;/a&gt;&lt;/p&gt;
&lt;br /&gt;

&lt;h2&gt;문제&lt;/h2&gt;

&lt;p&gt; 자연수 N이 주어지면, N의 각 자릿수의 합을 구해서 return 하는 solution 함수를 만들어 주세요.&lt;/p&gt;&lt;p&gt;예를들어 N = 123이면 1 + 2 + 3 = 6을 return 하면 됩니다.&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;제한사항
N의 범위 : 100,000,000 이하의 자연수&lt;/p&gt;
&lt;br /&gt;
&lt;h2&gt;풀이&lt;/h2&gt;

&lt;pre class=&quot;line-numbers&quot;&gt;&lt;code class=&quot;language-java&quot;&gt;
public class Solution {
	public int solution(int n) {
		int answer = 0;
        
        while (n &amp;gt; 0) {
            answer += n % 10;
            n /= 10;
        }
        
		return answer;
	}
}&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;</description>
      <category>알고리즘/프로그래머스</category>
      <author>Dev_YooJin</author>
      <guid isPermaLink="true">https://devyj.tistory.com/27</guid>
      <comments>https://devyj.tistory.com/27#entry27comment</comments>
      <pubDate>Sat, 20 Jan 2018 01:10:09 +0900</pubDate>
    </item>
    <item>
      <title>Javascript .attr()과 .prop()의 차이점</title>
      <link>https://devyj.tistory.com/26</link>
      <description>&lt;p style=&quot;text-align: center; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 700px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/99CE833C5A61DB3917&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F99CE833C5A61DB3917&quot; width=&quot;700&quot; height=&quot;306&quot; filename=&quot;jstips-animation.gif&quot; filemime=&quot;image/gif&quot;/&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;jQuery 1.6버전 이전에는 attr() 만으로 가능하던 처리를 1.6 업데이트로 attr()과 prop() 으로 나뉘어졌다. JQuery UI 의 Dialog 에서 checkbox 에 대한 버그가 존재했다. checkbox 의 체크를 없을 때에는 상관이 없으나, 체크를 다시 할 때 체크가 되지 않는 문제가 (특정조건에서) 발생했다.&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;h2&gt;
.attr()과 .prop()는 무엇이 다른가?&lt;/h2&gt;&lt;ul style=&quot;list-style-type: disc;&quot;&gt;&lt;li&gt;.&lt;span style=&quot;font-size: 12pt;&quot;&gt;attr()는 HTML의 속성을 취급&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;.prop()는 JavaScript 프로파티을 취급&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p&gt;
&lt;b&gt;실제로 속성이란 무엇입니까?&amp;nbsp;&lt;/b&gt;&lt;/p&gt;&lt;blockquote class=&quot;tx-quote-tistory&quot;&gt;&lt;p&gt;&amp;nbsp;속성은 HTML 요소에 대한 추가 정보를 전달하며 name = &quot;value&quot;쌍으로 제공됩니다. HTML 요소의 속성을 설정하고 소스 코드를 작성하는 동안 HTML 요소를 정의 할 수 있습니다. 간단한 예제는 다음과 같습니다.&lt;/p&gt;&lt;/blockquote&gt;
&lt;pre class=&quot;line-numbers&quot;&gt;&lt;code class=&quot;language-markup&quot;&gt;
&amp;lt;input id=&quot;hanq&quot; type=&quot;text&quot; value=&quot;java&quot;/&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;여기서 &quot;type&quot;, &quot;value&quot;, &quot;id&quot;는 입력 요소의 속성입니다. &lt;/p&gt;
&lt;p&gt;&lt;b&gt;프로퍼티란 무엇입니까?&lt;/b&gt;&lt;/p&gt;
&lt;blockquote class=&quot;tx-quote-tistory&quot;&gt;&lt;p&gt;프로퍼티는 HTML DOM 트리의 특성을 나타냅니다. 일단 브라우저가 사용자의 HTML 코드를 파싱하면 해당 DOM 노드가 생성되어 객체가되므로 프로퍼티가 있습니다.
위의 경우 브라우저가 입력을 렌더링하면 align, alt, autofocus, baseURI 등의 다른 속성이 추가됩니다. &lt;br /&gt;
이후 attr()은 html 페이지에서 정의한대로의 요소의 값을 제공합니다. 하지만 attr()은 요소의 현재 상태의 원래 값을 제공하므로 javascript / jquery를 통해 수정 된 요소의 값을 가져 오는 데 prop()를 사용하는 것이 좋습니다. &lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;h2&gt; 예제 모음 &lt;/h2&gt;

&lt;p&gt;&lt;b&gt;Style&lt;/b&gt;&lt;/p&gt;
&lt;pre class=&quot;line-numbers&quot;&gt;&lt;code class=&quot;language-markup&quot;&gt;
&amp;lt;input style=&quot;font:arial;&quot;/&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;ul style=&quot;list-style-type: disc;&quot;&gt;&lt;li&gt;.attr('style') - 일치 된 요소에 대한 인라인 스타일을 반환합니다. &quot;font:arial;&quot;&amp;nbsp;&lt;/li&gt;&lt;li&gt;.prop('style') - 스타일 선언 객체를 반환합니다. CSSStyleDeclaration&lt;/li&gt;&lt;/ul&gt;

&lt;p&gt;&lt;b&gt;Value&lt;/b&gt;&lt;/p&gt;
&lt;pre class=&quot;line-numbers&quot;&gt;&lt;code class=&quot;language-javascript&quot;&gt;
&amp;lt;input value=&quot;hello&quot; type=&quot;text&quot;/&amp;gt;   

$('input').prop('value', 'i changed the value');
&lt;/code&gt;&lt;/pre&gt;
&lt;ul style=&quot;list-style-type: disc;&quot;&gt;&lt;li&gt;.attr('value')&amp;nbsp; &amp;nbsp;- 'hello' 반환&lt;/li&gt;&lt;li&gt;.prop('value')&amp;nbsp;- 'i changed the value' 반환&lt;/li&gt;&lt;li&gt;하지만 value를 getter/setting 하기에는 .val() 메서드를 권장&lt;/li&gt;&lt;/ul&gt;

&lt;p&gt;&lt;b&gt;CheckBox&lt;/b&gt;&lt;/p&gt;
&lt;iframe width=&quot;100%&quot; height=&quot;230&quot; src=&quot;//jsfiddle.net/mompom/cL8m54t5/3/embedded/js,html,result/dark/&quot; allowpaymentrequest=&quot;&quot; allowfullscreen=&quot;allowfullscreen&quot; frameborder=&quot;0&quot;&gt;&lt;/iframe&gt;

&lt;p&gt;&lt;br /&gt;&lt;/p&gt;
&lt;h2&gt;.prop()가 선호되는 위치표 (.attr()도 여전히 사용 가능)&lt;/h2&gt;

&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;p style=&quot;text-align: center; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 402px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/99D20F4E5A62052723&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F99D20F4E5A62052723&quot; width=&quot;402&quot; height=&quot;369&quot; filename=&quot;gE0uq.png&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;h2&gt;요약&lt;/h2&gt;

&lt;ul style=&quot;list-style-type: disc;&quot;&gt;&lt;li&gt;


&lt;span style=&quot;font-size: 12pt;&quot;&gt;attr() -&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;HTML attribute 값이 모두 String 으로 넘어옴&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;&amp;nbsp;prop() - 자바스크립트의 프로퍼티 값이 넘어오기 때문에 boolean, date, function 등도 가져올 수 있음&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;.prop()는 .attr()&lt;/span&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;&amp;nbsp;보다 &lt;/span&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;약 2.5 배 빠름&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;

&lt;hr&gt;
참고한 사이트&amp;nbsp;&lt;div&gt;&lt;ul style=&quot;list-style-type: disc;&quot;&gt;&lt;li&gt;&lt;a href=&quot;http://blog.jquery.com/2011/05/10/jquery-1-6-1-rc-1-released/&quot; target=&quot;_blank&quot; class=&quot;tx-link&quot;&gt;jQuery document&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;</description>
      <category>Javascript</category>
      <author>Dev_YooJin</author>
      <guid isPermaLink="true">https://devyj.tistory.com/26</guid>
      <comments>https://devyj.tistory.com/26#entry26comment</comments>
      <pubDate>Fri, 19 Jan 2018 21:38:47 +0900</pubDate>
    </item>
    <item>
      <title>Javascript Scope (유효범위)</title>
      <link>https://devyj.tistory.com/25</link>
      <description>&lt;p style=&quot;text-align: center; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 700px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/9930F2365A61A0162E&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F9930F2365A61A0162E&quot; width=&quot;700&quot; height=&quot;306&quot; filename=&quot;jstips-animation.gif&quot; filemime=&quot;image/gif&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;Scope(유효범위)는 자바스크립트를 포함한 모든 프로그래밍 언어의 기본적인 개념으로 확실한 이해가 필요하다.
Scope란 변수에의 접근성과 생존기간(life-cycle)을 의미한다. 달리 말하자면 변수가 가지고 있는 참조 범위를 의미한다.&amp;nbsp;&lt;/p&gt;&lt;p&gt;Javascript의 Scope 종류는 다음과 같다.&lt;/p&gt;&lt;ul style=&quot;list-style-type: disc;&quot;&gt;&lt;li&gt;

전역 Scope (Global scope)
코드 어디에서든지 참조할 수 있다.&amp;nbsp;&lt;/li&gt;&lt;li&gt;지역 Scope (Local scope or Function-level scope)
정의된 함수 내에서만 참조할 수 있다.&amp;nbsp;&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;p&gt;모든 변수는 Scope를 갖는다.&amp;nbsp;&lt;/p&gt;

&lt;ul style=&quot;list-style-type: disc;&quot;&gt;&lt;li&gt;전역 변수 (Global variable)
전역 Scope를 갖는 변수.&amp;nbsp;&lt;/li&gt;&lt;li&gt;지역 변수 (Local variable)
지역 Scope를 갖는 변수&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;h2&gt;JavaScript 유효범위의 특징 &lt;/h2&gt;&lt;p&gt;JavaScript 유효범위만의 특징을 크게 분류하여 나열하면 다음과 같습니다.&lt;/p&gt;&lt;ul style=&quot;list-style-type: disc;&quot;&gt;&lt;li&gt;

함수 단위의 유효범위 (function-level scope)&lt;/li&gt;&lt;li&gt;변수명 중복 허용&lt;/li&gt;&lt;li&gt;암묵적 전역 (implied globals)&lt;/li&gt;&lt;li&gt;Lexical scoping (Static scoping)&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;h2&gt;Function-Level Scope&lt;/h2&gt;&lt;p&gt;C-family language는 block-level scope를 사용한다. block-level scope란 code block({ … })내에서 유효한 scope를 의미한다. &lt;/p&gt;&lt;p&gt;하지만 자바스크립트는 function-level scope를 사용한다. function-level scope란 함수 코드 블럭 내에서 선언된 변수는 함수 코드 블럭 내에서만 유효하고 함수 외부에서는 유효하지 않다(참조할 수 없다)는 것이다.
&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;i&gt;단, ECMAScript 6에서 도입된 &lt;strike&gt;let &lt;/strike&gt;keyword를 사용하면 block-level scope를 사용할 수 있다. &lt;/i&gt;&lt;/p&gt;

&lt;pre class=&quot;line-numbers&quot;&gt;&lt;code class=&quot;language-javascript&quot;&gt;
var x = 0;
{
  var x = 1;
  console.log(x); // 1
}
  console.log(x); // 1

let y = 0;
{
  let y = 1;
  console.log(y); // 1
}
  console.log(y); // 0&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;h2&gt;변수명 중복 허용&lt;/h2&gt;
&lt;p&gt;글로벌 영역에 변수를 선언하면 이 변수는 어느 곳에서든지 참조할 수 있는 global scope를 갖는 전역 변수가 된다. 전역 변수는 &lt;strike style=&quot;&quot;&gt;전역 객체(Global Object) window&lt;/strike&gt;의 프로퍼티이다. &lt;/p&gt;
&lt;pre class=&quot;line-numbers&quot;&gt;&lt;code class=&quot;language-javascript&quot;&gt;
var global = 'global';

function foo() {
  var local = 'local';
  console.log(global);
  console.log(local);
}
foo();

console.log(global);
console.log(local); // Uncaught ReferenceError: local is not defined
&lt;/code&gt;&lt;/pre&gt;


&lt;p&gt;
변수 global는 함수 영역 밖의 글로벌 영역에서 선언되었다. 자바스크립트는 타 언어와는 달리 특별한 시작점이 없어서 위 코드와 같이 글로벌 영역에 변수나 함수를 선언하기 쉽다.
&lt;/p&gt;&lt;p&gt;전역 변수의 사용은 변수명의 중복 등 여러 문제를 발생시키므로 가급적 사용을 억제하여야 한다. &lt;/p&gt;
&lt;pre class=&quot;line-numbers&quot;&gt;&lt;code class=&quot;language-javascript&quot;&gt;
// x.js
function foo () {
  // var i = 0;
  i = 0;
  // ...
}

// y.js
for(var i = 0; i &amp;lt; 5; i++) {
  foo();
  console.log(i);
}
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;2개의 파일로 분리된 자바스크립트 코드가 있다고 가정한다.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;x.js와 y.js에 모두 변수 i와 존재한다. 이는 의도되지 않은 것이다. HTML에서 이 2개의 자바스크립트 파일을 로드하여 사용하면 변수 i는 중복된다.  &lt;/p&gt;

&lt;pre class=&quot;line-numbers&quot;&gt;&lt;code class=&quot;language-markup&quot;&gt;
&amp;lt;!DOCTYPE html&amp;gt;
&amp;lt;html&amp;gt;
&amp;lt;body&amp;gt;
  &amp;lt;script src='x.js'&amp;gt;
  &amp;lt;script src='y.js'&amp;gt;
&amp;lt;/body&amp;gt;
&amp;lt;/html&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;x.js의 변수 i는 var 키워드를 사용하지 않았으므로 암묵적으로 전역 변수화 되고 y.js의 변수 i는 전역변수이다. 이때 자바스크립트는 변수명의 중복을 허용하므로 어떠한 에러 메시지도 발생시키지 않는다. 따라서 무한 반복 상태에 빠지게 된다.&amp;nbsp;
&lt;/p&gt;&lt;p&gt;이와 같이 전역변수의 무분별한 사용은 무척 위험하다. &lt;b&gt;전역변수를 반드시 사용하여야 할 이유를 찾지 못한다면 지역변수를 사용하여야 한다. 변수의 범위인 스코프는 좁을수록 좋다.&amp;nbsp;&lt;/b&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;코드가 길어지면 변수명의 중복이 발생하기 쉬워 예기치 못한 이상 동작의 원인이 되기 쉬우며, 전역변수는 지역변수보다 탐색에 걸리는 시간이 더 길다.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;h2&gt;암묵적 전역 (implied globals)&lt;/h2&gt;&lt;p&gt;아래의 foo 함수 내 변수 x에 1을 할당하였다. 하지만 foo 함수 내에는 변수 x가 존재하지 않는다. 따라서 상위 지역(아래 예제의 경우 전역)에서 변수 x를 찾고 존재하지 않으면 변수 x를 &lt;strike&gt;암묵적으로 전역변수&lt;/strike&gt;로 선언한다.&lt;/p&gt;
&lt;pre class=&quot;line-numbers&quot;&gt;&lt;code class=&quot;language-javascript&quot;&gt;
function foo() {
  x = 1;   // Throws a ReferenceError in &quot;use strict&quot; mode
  var y = 2;
}

foo();

console.log(x); // 1
console.log(y); // ReferenceError: y is not defined
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;의도하지 않게 전역변수가 되었다면 혼란의 여지가 있으므로 var keyword는 반드시 사용하자. &lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;h2&gt;
Lexical scoping (Static scoping)&lt;/h2&gt;&lt;p&gt;자바스크립트는 함수가 선언된 시점에서의 유효범위를 갖는다. 예제의 함수 bar가 어떤 상황에서 호출될 지 선언 시점에서는 알 수 없다.&lt;/p&gt;
&lt;pre class=&quot;line-numbers&quot;&gt;&lt;code class=&quot;language-javascript&quot;&gt;
var i = 5;

function foo() {
  var i = 10;
  bar();
}

function bar() { // 선언된 시점에서의 scope를 갖는다!
  console.log(i);
}

foo(); // ?
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;
&lt;hr&gt;
참고한 사이트&lt;ul style=&quot;list-style-type: disc;&quot;&gt;&lt;li&gt;poiemaweb - &lt;a href=&quot;http://poiemaweb.com/js-scope&quot; target=&quot;_blank&quot; class=&quot;tx-link&quot;&gt;javascript scope&lt;/a&gt;&lt;/li&gt;&lt;li&gt;nextree - &lt;a href=&quot;http://www.nextree.co.kr/p7363/&quot; target=&quot;_blank&quot; class=&quot;tx-link&quot;&gt;javascript scope 이해&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;</description>
      <category>Javascript</category>
      <author>Dev_YooJin</author>
      <guid isPermaLink="true">https://devyj.tistory.com/25</guid>
      <comments>https://devyj.tistory.com/25#entry25comment</comments>
      <pubDate>Fri, 19 Jan 2018 01:36:54 +0900</pubDate>
    </item>
    <item>
      <title>[Level 2] 콜라츠 추측</title>
      <link>https://devyj.tistory.com/23</link>
      <description>&lt;p&gt;&lt;/p&gt;
&lt;p&gt;출저 &lt;i class=&quot;fa fa-caret-right&quot; aria-hidden=&quot;true&quot;&gt;&lt;/i&gt;&amp;nbsp;
&lt;a href=&quot;https://programmers.co.kr/learn/challenge_codes/13&quot; target=&quot;_blank&quot; class=&quot;tx-link&quot; style=&quot;font-size: 16px;&quot;&gt; https://programmers.co.kr/learn/challenge_codes/13&lt;/a&gt;&lt;/p&gt;
&lt;br /&gt;

&lt;h2&gt;문제&lt;/h2&gt;

&lt;p&gt;1937년 Collatz란 사람에 의해 제기된 이 추측은, 입력된 수가 짝수라면 2로 나누고, 홀수라면 3을 곱하고 1을 더한 다음, 결과로 나온 수에 같은 작업을 1이 될 때까지 반복할 경우 모든 수가 1이 된다는 추측입니다. 예를 들어, 입력된 수가 6이라면 6→3→10→5→16→8→4→2→1 이 되어 총 8번 만에 1이 됩니다. collatz 함수를 만들어 입력된 수가 몇 번 만에 1이 되는지 반환해 주세요. 단, 500번을 반복해도 1이 되지 않는다면 –1을 반환해 주세요. &lt;/p&gt;
&lt;br /&gt;
&lt;h2&gt;풀이&lt;/h2&gt;

&lt;pre class=&quot;line-numbers&quot;&gt;&lt;code class=&quot;language-java&quot;&gt;
class Collatz {
	public int collatz(int num) {
		int answer = 0;

		while (num &gt; 1) {

			if (num % 2 == 0) {
				num = num / 2;
			} else {
				if (num * 3 + 1 &lt; 0) return -1;
				num = num * 3 + 1;
			}
			answer++;
			if (answer == 500) {
				answer = -1;
				break;
			}
		}

		return answer;
	}

	public static void main(String[] args) {
		Collatz c = new Collatz();
		int ex = 6;
		System.out.println(c.collatz(ex));
	}
}&lt;/code&gt;&lt;/pre&gt;
&lt;br /&gt;
&lt;h2&gt;다른 사람들의 풀이&lt;/h2&gt;

&lt;pre class=&quot;line-numbers&quot;&gt;&lt;code class=&quot;language-java&quot;&gt;
class Collatz {
    public int collatz(int num) {
    long n = (long)num;
    for(int i =0; i&lt;500; i++){      
      if(n==1) return i;
      n = (n%2==0) ? n/2 : n*3+1;            
    }
    return -1;
  }
    // 아래는 테스트로 출력해 보기 위한 코드입니다.
    public static void main(String[] args) {
        Collatz c = new Collatz();
        int ex = 6;
        System.out.println(c.collatz(ex));
    }
}&lt;/code&gt;&lt;/pre&gt;</description>
      <category>알고리즘/프로그래머스</category>
      <author>Dev_YooJin</author>
      <guid isPermaLink="true">https://devyj.tistory.com/23</guid>
      <comments>https://devyj.tistory.com/23#entry23comment</comments>
      <pubDate>Tue, 16 Jan 2018 16:08:59 +0900</pubDate>
    </item>
    <item>
      <title>[Level 2] 정수 내림차순으로 배치하기</title>
      <link>https://devyj.tistory.com/22</link>
      <description>&lt;p&gt;&lt;/p&gt;
&lt;p&gt;출저 &lt;i class=&quot;fa fa-caret-right&quot; aria-hidden=&quot;true&quot;&gt;&lt;/i&gt;&amp;nbsp;
&lt;a href=&quot;https://programmers.co.kr/learn/challenge_codes/118&quot; target=&quot;_blank&quot; class=&quot;tx-link&quot; style=&quot;font-size: 16px;&quot;&gt; https://programmers.co.kr/learn/challenge_codes/118&lt;/a&gt;&lt;/p&gt;
&lt;br /&gt;

&lt;h2&gt;문제&lt;/h2&gt;

&lt;p&gt; everseInt 메소드는 int형 n을 매개변수로 입력받습니다.
n에 나타나는 숫자를 큰것부터 작은 순으로 정렬한 새로운 정수를 리턴해주세요.
예를들어 n이 118372면 873211을 리턴하면 됩니다.
n은 양의 정수입니다.&lt;/p&gt;
&lt;br /&gt;
&lt;h2&gt;풀이&lt;/h2&gt;

&lt;pre class=&quot;line-numbers&quot;&gt;&lt;code class=&quot;language-java&quot;&gt;
import java.util.Arrays;
import java.util.Collections;

public class ReverseInt {
    public int reverseInt(int n){

    String[] arr = (Integer.toString(n)).split(&quot;&quot;);

    Arrays.sort(arr, Collections.reverseOrder());

    return Integer.parseInt(String.join(&quot;&quot;, arr));
    }

    public static void  main(String[] args){
        ReverseInt ri = new ReverseInt();
        System.out.println(ri.reverseInt(118372));
    }
}&lt;/code&gt;&lt;/pre&gt;</description>
      <category>알고리즘/프로그래머스</category>
      <author>Dev_YooJin</author>
      <guid isPermaLink="true">https://devyj.tistory.com/22</guid>
      <comments>https://devyj.tistory.com/22#entry22comment</comments>
      <pubDate>Tue, 16 Jan 2018 16:05:37 +0900</pubDate>
    </item>
    <item>
      <title>[Level 1] 서울에서 김서방 찾기</title>
      <link>https://devyj.tistory.com/21</link>
      <description>&lt;p&gt;&lt;/p&gt;
&lt;p&gt;출저 &lt;i class=&quot;fa fa-caret-right&quot; aria-hidden=&quot;true&quot;&gt;&lt;/i&gt;&amp;nbsp;
&lt;a href=&quot;https://programmers.co.kr/learn/challenge_codes/106&quot; target=&quot;_blank&quot; class=&quot;tx-link&quot; style=&quot;font-size: 16px;&quot;&gt; https://programmers.co.kr/learn/challenge_codes/106&lt;/a&gt;&lt;/p&gt;
&lt;br /&gt;

&lt;h2&gt;문제&lt;/h2&gt;

&lt;p&gt; findKim 함수(메소드)는 String형 배열 seoul을 매개변수로 받습니다.&lt;br /&gt;

seoul의 element중 Kim의 위치 x를 찾아, 김서방은 x에 있다는 String을 반환하세요.
seoul에 Kim은 오직 한 번만 나타나며 잘못된 값이 입력되는 경우는 없습니다.&lt;/p&gt;
&lt;br /&gt;
&lt;h2&gt;풀이&lt;/h2&gt;

&lt;pre class=&quot;line-numbers&quot;&gt;&lt;code class=&quot;language-java&quot;&gt;
public class FindKim {
	public String findKim(String[] seoul){
		//x에 김서방의 위치를 저장하세요.
		int x = 0;
    
		for (int i = 0; i &amp;lt; seoul.length; i++) {
			if(seoul[i] == &quot;Kim&quot;) {
				x = i;
				break;
			}
		}
		
		return &quot;김서방은 &quot;+ x + &quot;에 있다&quot;;
	}
	
	// 실행을 위한 테스트코드입니다.
	public static void main(String[] args) {
		FindKim kim = new FindKim();
		String[] names = {&quot;Queen&quot;, &quot;Tod&quot;,&quot;Kim&quot;};
		System.out.println(kim.findKim(names));
	}
}&lt;/code&gt;&lt;/pre&gt;
&lt;br /&gt;
&lt;h2&gt;다른 사람들의 풀이&lt;/h2&gt;

&lt;pre class=&quot;line-numbers&quot;&gt;&lt;code class=&quot;language-java&quot;&gt;
import java.util.Arrays;

public class FindKim {
    public String findKim(String[] seoul){
        //x에 김서방의 위치를 저장하세요.
        int x = Arrays.asList(seoul).indexOf(&quot;Kim&quot;);

        return &quot;김서방은 &quot;+ x + &quot;에 있다&quot;;
    }

    // 실행을 위한 테스트코드입니다.
    public static void main(String[] args) {
        FindKim kim = new FindKim();
        String[] names = {&quot;Queen&quot;, &quot;Tod&quot;,&quot;Kim&quot;};
        System.out.println(kim.findKim(names));
    }
}&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;p&gt;&lt;/p&gt;</description>
      <category>알고리즘/프로그래머스</category>
      <author>Dev_YooJin</author>
      <guid isPermaLink="true">https://devyj.tistory.com/21</guid>
      <comments>https://devyj.tistory.com/21#entry21comment</comments>
      <pubDate>Mon, 15 Jan 2018 21:35:37 +0900</pubDate>
    </item>
    <item>
      <title>[Level 1] 피보나치 수</title>
      <link>https://devyj.tistory.com/20</link>
      <description>&lt;p&gt;&lt;p&gt;출저 &lt;i class=&quot;fa fa-caret-right&quot; aria-hidden=&quot;true&quot;&gt;&lt;/i&gt;&amp;nbsp;
&lt;a href=&quot;https://programmers.co.kr/learn/challenge_codes/4&quot; target=&quot;_blank&quot; class=&quot;tx-link&quot; style=&quot;font-size: 16px;&quot;&gt; https://programmers.co.kr/learn/challenge_codes/4&lt;/a&gt;&lt;/p&gt;
&lt;br /&gt;

&lt;h2&gt;문제&lt;/h2&gt;

&lt;p&gt;피보나치 수는 F(0) = 0, F(1) = 1일 때, 2 이상의 n에 대하여 F(n) = F(n-1) + F(n-2) 가 적용되는 점화식입니다. 2 이상의 n이 입력되었을 때, fibonacci 함수를 제작하여 n번째 피보나치 수를 반환해 주세요. 예를 들어 n = 3이라면 2를 반환해주면 됩니다. &lt;/p&gt;
&lt;br /&gt;
&lt;h2&gt;풀이&lt;/h2&gt;

&lt;pre class=&quot;line-numbers&quot;&gt;&lt;code class=&quot;language-java&quot;&gt;
class Fibonacci {
	public long fibonacci(int num) {
		long answer = 0;

		if (num &lt;= 1)
			return num;
		else
			answer = fibonacci(num-1) + fibonacci(num-2);
		return answer;

	}

	// 아래는 테스트로 출력해 보기 위한 코드입니다.
	public static void main(String[] args) {
		Fibonacci c = new Fibonacci();
		int testCase = 3;
		System.out.println(c.fibonacci(testCase));
	}
}&lt;/code&gt;&lt;/pre&gt;
&lt;br /&gt;
&lt;h2&gt;다른 사람들의 풀이&lt;/h2&gt;

&lt;pre class=&quot;line-numbers&quot;&gt;&lt;code class=&quot;language-java&quot;&gt;
class Fibonacci {
    public long fibonacci(int num) {
        long answer = 0;
    long[] dp = new long[num+1];
    dp[0]=0;dp[1]=1;

    for(int i = 2 ; i&lt;=num;i++){
      dp[i] = dp[i-1]+dp[i-2];
    }

        return dp[num];
    }

  // 아래는 테스트로 출력해 보기 위한 코드입니다.
    public static void main(String[] args) {
        Fibonacci c = new Fibonacci();
        int testCase = 3;
        System.out.println(c.fibonacci(testCase));
    }
}&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;/p&gt;</description>
      <category>알고리즘/프로그래머스</category>
      <author>Dev_YooJin</author>
      <guid isPermaLink="true">https://devyj.tistory.com/20</guid>
      <comments>https://devyj.tistory.com/20#entry20comment</comments>
      <pubDate>Mon, 15 Jan 2018 21:33:24 +0900</pubDate>
    </item>
    <item>
      <title>[Level 1] 평균 구하기</title>
      <link>https://devyj.tistory.com/19</link>
      <description>&lt;p&gt;&lt;p&gt;출저 &lt;i class=&quot;fa fa-caret-right&quot; aria-hidden=&quot;true&quot;&gt;&lt;/i&gt;&amp;nbsp;
&lt;a href=&quot;https://programmers.co.kr/learn/challenge_codes/127&quot; target=&quot;_blank&quot; class=&quot;tx-link&quot; style=&quot;font-size: 16px;&quot;&gt; https://programmers.co.kr/learn/challenge_codes/127&lt;/a&gt;&lt;/p&gt;
&lt;br /&gt;

&lt;h2&gt;문제&lt;/h2&gt;

&lt;p&gt;함수를 완성해서 매개변수 array의 평균값을 return하도록 만들어 보세요.
어떠한 크기의 array가 와도 평균값을 구할 수 있어야 합니다.&lt;/p&gt;
&lt;br /&gt;
&lt;h2&gt;풀이&lt;/h2&gt;

&lt;pre class=&quot;line-numbers&quot;&gt;&lt;code class=&quot;language-java&quot;&gt;
public class GetMean {
	public int getMean(int[] array) {
		int sum = 0;
    
		for (int e : array) {
			sum += e;
		}
    
		return sum / array.length;
	}

    public static void main(String[] args) {
        int x[] = {5, 4, 3};
        GetMean getMean = new GetMean();
        
        System.out.println(&quot;평균값 : &quot; + getMean.getMean(x));
    }
}&lt;/code&gt;&lt;/pre&gt;</description>
      <category>알고리즘/프로그래머스</category>
      <author>Dev_YooJin</author>
      <guid isPermaLink="true">https://devyj.tistory.com/19</guid>
      <comments>https://devyj.tistory.com/19#entry19comment</comments>
      <pubDate>Mon, 15 Jan 2018 21:10:25 +0900</pubDate>
    </item>
    <item>
      <title>[Level 1] 나누어 떨어지는 숫자 배열</title>
      <link>https://devyj.tistory.com/18</link>
      <description>&lt;p&gt;&lt;/p&gt;&lt;p&gt;출저 &lt;i class=&quot;fa fa-caret-right&quot; aria-hidden=&quot;true&quot;&gt;&lt;/i&gt;&amp;nbsp;
&lt;a href=&quot;https://programmers.co.kr/learn/challenge_codes/89&quot; target=&quot;_blank&quot; class=&quot;tx-link&quot; style=&quot;font-size: 16px;&quot;&gt; https://programmers.co.kr/learn/challenge_codes/89&lt;/a&gt;&lt;/p&gt;
&lt;br /&gt;

&lt;h2&gt;문제&lt;/h2&gt;

&lt;p&gt;divisible 메소드는 int형 배열 array와 int divisor를 매개변수로 받습니다.
array의 각 element 중 divisor로 나누어 떨어지는 값만 포함하는 새로운 배열을 만들어서 반환하도록 divisible에 코드를 작성해 보세요.

예를들어 array가 {5, 9, 7, 10}이고 divisor가 5이면 {5, 10}을 리턴해야 합니다. &lt;/p&gt;
&lt;br /&gt;
&lt;h2&gt;풀이&lt;/h2&gt;

&lt;pre class=&quot;line-numbers&quot;&gt;&lt;code class=&quot;language-java&quot;&gt;
import java.util.Arrays;
import java.util.ArrayList;

class Divisible {
	public int[] divisible(int[] array, int divisor) {
		
	    ArrayList&lt;integer&gt; divArray  = new ArrayList&lt;integer&gt;();
			//ret에 array에 포함된 정수중, divisor로 나누어 떨어지는 숫자를 순서대로 넣으세요.
	    int arrLen = array.length;
	    for (int i = 0; i &amp;lt; arrLen; i++) {
	    	if (array[i] % divisor == 0) {
	    		divArray.add(array[i]);
	    	}
	    }
	      
	    int[] ret 	= new int[divArray.size()];
	    int retLen 	= ret.length;
	    
	    for(int i=0; i &amp;lt; retLen; i++) {
	        ret[i] = divArray.get(i).intValue();      
	      }
	    
	    return ret;
    }
	
	public static void main(String[] args) {
		Divisible div = new Divisible();
		int[] array = {5, 9, 7, 10};
		System.out.println( Arrays.toString ( div.divisible(array, 5) ));
	}
}&lt;/integer&gt;&lt;/integer&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;br /&gt;
&lt;h2&gt;다른 사람들의 풀이&lt;/h2&gt;

&lt;pre class=&quot;line-numbers&quot;&gt;&lt;code class=&quot;language-java&quot;&gt;
import java.util.Arrays;

class Divisible {
    public int[] divisible(int[] array, int divisor) {
        //ret에 array에 포함된 정수중, divisor로 나누어 떨어지는 숫자를 순서대로 넣으세요.
        return Arrays.stream(array).filter(factor -&amp;gt; factor % divisor == 0).toArray();
    }
    // 아래는 테스트로 출력해 보기 위한 코드입니다.
    public static void main(String[] args) {
        Divisible div = new Divisible();
        int[] array = {5, 9, 7, 10};
        System.out.println( Arrays.toString( div.divisible(array, 5) ));
    }
}
 &lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;p&gt;&lt;/p&gt;</description>
      <category>알고리즘/프로그래머스</category>
      <author>Dev_YooJin</author>
      <guid isPermaLink="true">https://devyj.tistory.com/18</guid>
      <comments>https://devyj.tistory.com/18#entry18comment</comments>
      <pubDate>Mon, 15 Jan 2018 21:02:46 +0900</pubDate>
    </item>
    <item>
      <title>[Level 1] 삼각형 출력하기</title>
      <link>https://devyj.tistory.com/17</link>
      <description>&lt;p&gt;&lt;/p&gt;
&lt;p&gt;출저 &lt;i class=&quot;fa fa-caret-right&quot; aria-hidden=&quot;true&quot;&gt;&lt;/i&gt;&amp;nbsp;
&lt;a href=&quot;https://programmers.co.kr/learn/challenge_codes/103&quot; target=&quot;_blank&quot; class=&quot;tx-link&quot; style=&quot;font-size: 16px;&quot;&gt; https://programmers.co.kr/learn/challenge_codes/103&lt;/a&gt;&lt;/p&gt;
&lt;br /&gt;

&lt;h2&gt;문제&lt;/h2&gt;

&lt;p&gt; printTriangle 메소드는 양의 정수 num을 매개변수로 입력받습니다.
다음을 참고해 *(별)로 높이가 num인 삼각형을 문자열로 리턴하는 printTriangle 메소드를 완성하세요
printTriangle이 return하는 String은 개행문자('\n')로 끝나야 합니다.&lt;br /&gt;
&lt;br /&gt;
높이가 3일때
&lt;br /&gt;
*&lt;br /&gt;
**&lt;br /&gt;
***&lt;br /&gt;
높이가 5일때
&lt;br /&gt;
*&lt;br /&gt;
**&lt;br /&gt;
***&lt;br /&gt;
****&lt;br /&gt;
*****&lt;/p&gt;
&lt;br /&gt;
&lt;h2&gt;풀이&lt;/h2&gt;

&lt;pre class=&quot;line-numbers&quot;&gt;&lt;code class=&quot;language-java&quot;&gt;
public class PrintTriangle {
	public String printTriangle(int num){
		String star		= &quot;*&quot;;
	    String nextLine = &quot;\n&quot;;
	    StringBuffer sb = new StringBuffer();
	    
	    for (int i = 0; i &amp;lt; num; i++) { 
	      for (int j = 0; j &amp;lt;= i; j++) { 
	        sb.append(star);
	    	}
	      sb.append(nextLine);
	    }
		return sb.toString();		
	}

	public static void main(String[] args) {
		PrintTriangle pt = new PrintTriangle();
		
		System.out.println(pt.printTriangle(3));
	}
}
 &lt;/code&gt;&lt;/pre&gt;
&lt;br /&gt;
&lt;h2&gt;다른 사람들의 풀이&lt;/h2&gt;

&lt;pre class=&quot;line-numbers&quot;&gt;&lt;code class=&quot;language-java&quot;&gt;
public class PrintTriangle {
    public String printTriangle(int num){
    String result = &quot;&quot;;
        String stars = &quot;*&quot;;
        for(int i = 0; i &lt; num; ++i) {
            result += stars+&quot;\n&quot;;
            stars += &quot;*&quot;;
        }
        return result;
    }

    // 아래는 테스트로 출력해 보기 위한 코드입니다.
    public static void main(String[] args) {
        PrintTriangle pt = new PrintTriangle();
        System.out.println( pt.printTriangle(3) );
    }
}&lt;/code&gt;&lt;/pre&gt;</description>
      <category>알고리즘/프로그래머스</category>
      <author>Dev_YooJin</author>
      <guid isPermaLink="true">https://devyj.tistory.com/17</guid>
      <comments>https://devyj.tistory.com/17#entry17comment</comments>
      <pubDate>Mon, 15 Jan 2018 20:52:40 +0900</pubDate>
    </item>
  </channel>
</rss>