<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>이파닭 IT</title>
    <link>https://padacklee.tistory.com/</link>
    <description></description>
    <language>ko</language>
    <pubDate>Tue, 18 Aug 2026 17:35:06 +0900</pubDate>
    <generator>TISTORY</generator>
    <ttl>100</ttl>
    <managingEditor>이파댥</managingEditor>
    <image>
      <title>이파닭 IT</title>
      <url>https://tistory1.daumcdn.net/tistory/7044563/attach/0c0c36eef2eb424b8e659197b6a83654</url>
      <link>https://padacklee.tistory.com</link>
    </image>
    <item>
      <title>VUE 에서 setup() 이란?</title>
      <link>https://padacklee.tistory.com/113</link>
      <description>&lt;div&gt;
&lt;div data-message-model-slug=&quot;gpt-4o-mini&quot; data-message-id=&quot;17e1d15b-66d1-47aa-ac6b-b0cb04fe233c&quot; data-message-author-role=&quot;assistant&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;setup() 은 Vue 3에서 도입된 &lt;b&gt;Composition API &lt;/b&gt;의 핵심 기능 중 하나다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Composition API 는 기존의 &lt;b&gt;Options API&lt;/b&gt;(즉, data, methods, computed, watch, created, mounted 등) 방식 대신, 기능별로 코드가 더 유연하게 구성되도록 돕는 새로운 방식이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;setup()은 컴포넌트의 &lt;b&gt;초기화&lt;/b&gt; 및 &lt;b&gt;반응성&lt;/b&gt; 상태를 정의하는데 사용한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;setup()은 &lt;b&gt;컴포넌트가 생성되기 전에&lt;/b&gt; 실행되며, 컴포넌트의 &lt;b&gt;data&lt;/b&gt;, &lt;b&gt;methods&lt;/b&gt;, &lt;b&gt;computed&lt;/b&gt; 등을 정의하는 대신, &lt;b&gt;반응형 상태와 기능을 정의하는 새로운 방법&lt;/b&gt;을 제공한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1024&quot; data-origin-height=&quot;425&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/rB3Nr/btsLTIAcRny/FdgIQJ24E8UCOAkKO2Eh1K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/rB3Nr/btsLTIAcRny/FdgIQJ24E8UCOAkKO2Eh1K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/rB3Nr/btsLTIAcRny/FdgIQJ24E8UCOAkKO2Eh1K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FrB3Nr%2FbtsLTIAcRny%2FFdgIQJ24E8UCOAkKO2Eh1K%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1024&quot; height=&quot;425&quot; data-origin-width=&quot;1024&quot; data-origin-height=&quot;425&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;1. setup()의 기본 사용법&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;setup()은 컴포넌트가 인스턴스화될 때 가장 먼저 호출됨.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 함수는 &lt;b&gt;props&lt;/b&gt;와 &lt;b&gt;context&lt;/b&gt;(특히 attrs, slots, emit)를 매개변수로 받으며, 반환값으로는 컴포넌트에서 사용될 &lt;b&gt;데이터&lt;/b&gt;와 &lt;b&gt;메서드&lt;/b&gt; 등을 반환함.&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
&lt;pre id=&quot;code_1737438551171&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import { ref, computed } from 'vue';

export default {
  setup(props) {
    // 반응형 상태 생성 (reactive state)
    const count = ref(0);
    
    // computed 값 생성
    const doubledCount = computed(() =&amp;gt; count.value * 2);
    
    // 메서드 생성
    const increment = () =&amp;gt; {
      count.value++;
    };
    
    // setup에서 반환한 값은 템플릿에서 사용할 수 있음
    return {
      count,
      doubledCount,
      increment
    };
  }
};&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;2. setup()의 주요 특징&lt;/h2&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;1. &lt;b&gt;반응형 상태 관리&lt;/b&gt; (ref와 reactive)&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;ref는 기본 자료형을 반응형으로 만들 때 사용함.&lt;/li&gt;
&lt;li&gt;reactive는 객체나 배열을 반응형으로 만들 때 사용함.&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1737438566786&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import { ref, reactive } from 'vue';

export default {
  setup() {
    // ref로 기본값을 반응형 상태로 만듦
    const count = ref(0);
    
    // reactive로 객체를 반응형 상태로 만듦
    const user = reactive({ name: 'John', age: 30 });
    
    return { count, user };
  }
};&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;2. &lt;b&gt;컴포넌트 내의 메서드와 속성 정의&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;setup()에서는 **methods**와 **computed**처럼, 메서드와 계산된 값을 직접 정의하여 반환함.&lt;/p&gt;
&lt;pre id=&quot;code_1737438578046&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import { ref, computed } from 'vue';

export default {
  setup() {
    const count = ref(0);

    const increment = () =&amp;gt; {
      count.value++;
    };

    const double = computed(() =&amp;gt; count.value * 2);

    return { count, increment, double };
  }
};&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;3. &lt;b&gt;props와 context 사용&lt;/b&gt;&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;props&lt;/b&gt;: 부모 컴포넌트로부터 전달된 데이터를 setup()에서 사용할 수 있음.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;context&lt;/b&gt;: attrs, slots, emit 등 컴포넌트의 컨텍스트 정보를 제공함.&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1737438589748&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import { defineProps, defineEmits } from 'vue';

export default {
  setup() {
    // props를 사용
    const props = defineProps();
    const emit = defineEmits();

    const sendEvent = () =&amp;gt; {
      emit('customEvent', 'Hello from setup!');
    };

    return { props, sendEvent };
  }
};&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;4. &lt;b&gt;setup()의 실행 시점&lt;/b&gt;&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;setup()은 컴포넌트 인스턴스가 &lt;b&gt;생성되기 전에&lt;/b&gt; 호출.&lt;br /&gt;이 시점에서 &lt;b&gt;data&lt;/b&gt;, &lt;b&gt;computed&lt;/b&gt;, &lt;b&gt;methods&lt;/b&gt; 등을 설정함.&lt;/li&gt;
&lt;li&gt;또한, **created**나 **mounted**와 같은 라이프사이클 훅을 사용할 수 없음. &lt;br /&gt;대신, Composition API에서는 onMounted, onCreated 등의 훅을 사용하여 이러한 기능을 처리.&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1737438601078&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import { onMounted } from 'vue';

export default {
  setup() {
    onMounted(() =&amp;gt; {
      console.log('컴포넌트가 마운트되었습니다!');
    });
  }
};&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div data-message-model-slug=&quot;gpt-4o-mini&quot; data-message-id=&quot;17e1d15b-66d1-47aa-ac6b-b0cb04fe233c&quot; data-message-author-role=&quot;assistant&quot;&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;3. setup()과 Options API의 차이점&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;Options API &lt;/b&gt;에서는 data, methods, computed 등을 객체로 정의하지만, &lt;b&gt;Composition API&lt;/b&gt;에서는 setup() 함수에서 &lt;b&gt;모든 상태와 기능을 관리&lt;/b&gt;하며, 훨씬 더 유연하게 코드 구조를 설정할 수 있음.&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;
&lt;li&gt;&lt;b&gt;&lt;/b&gt;&lt;b&gt;Options API&lt;/b&gt;&amp;nbsp;&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1737438690674&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;export default {
  data() {
    return { count: 0 };
  },
  methods: {
    increment() {
      this.count++;
    }
  }
};&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;Composition API&lt;/b&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1737438717815&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import { ref } from 'vue';

export default {
  setup() {
    const count = ref(0);

    const increment = () =&amp;gt; {
      count.value++;
    };

    return { count, increment };
  }
};&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;4. setup()의 장점&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;유연성&lt;/b&gt;: 다양한 로직을 기능별로 묶어서 관리할 수 있음. 여러 컴포넌트 간의 재사용 가능한 로직을 쉽게 추출하고 관리할 수 있음.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;타입스크립트와의 호환성&lt;/b&gt;: setup()은 타입스크립트와 매우 잘 호환되어, 타입 추론을 더 쉽게 할 수 있음.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;컴포넌트 간의 상태 관리&lt;/b&gt;: setup() 안에서 여러 상태를 모듈화하고 로직을 나누는 데 유리.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;5. 언제 setup()을 사용할까?&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;Composition API 사용을 선호할 때&lt;/b&gt;: 코드의 가독성, 재사용성, 유지보수성을 높이고 싶을 때 setup()을 사용.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;복잡한 상태와 로직을 다룰 때&lt;/b&gt;: 여러 개의 상태와 메서드가 엮여 있는 경우, setup()을 사용하여 코드를 더 깔끔하게 관리할 수 있음.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;타입스크립트를 사용할 때&lt;/b&gt;: setup()은 타입스크립트와 함께 사용할 때 더 많은 장점이 있음.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;결론&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;setup()은 Vue 3에서 컴포넌트를 더 유연하게 설계할 수 있게 도와주는 &lt;b&gt;Composition API &lt;/b&gt;의 핵심 함수.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;data, methods, computed 등 기존 옵션을 setup() 내부에서 선언하고 반환할 수 있어 코드의 모듈화와 재사용성을 크게 향상시킬 수 있음.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;</description>
      <category>VUE</category>
      <category>created</category>
      <category>mounted</category>
      <category>Setup</category>
      <category>Vue</category>
      <author>이파댥</author>
      <guid isPermaLink="true">https://padacklee.tistory.com/113</guid>
      <comments>https://padacklee.tistory.com/113#entry113comment</comments>
      <pubDate>Tue, 21 Jan 2025 14:56:27 +0900</pubDate>
    </item>
    <item>
      <title>CREATED MOUNTED 차이</title>
      <link>https://padacklee.tistory.com/112</link>
      <description>&lt;h2 id=&quot;created&quot; style=&quot;background-color: #ffffff; color: #212529; text-align: start;&quot; data-ke-size=&quot;size26&quot;&gt;created&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc; background-color: #ffffff; color: #212529; text-align: start;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;인스턴스가 작성된 후 동기적으로 호출&lt;/li&gt;
&lt;li&gt;부모, 자식 관계의 컴포넌트가 렌더링 될 때 mounted 보다 먼저 호출되며 부모, 자식 순으로 실행&lt;/li&gt;
&lt;li&gt;가상 DOM 을 건드릴 수 없습니다.&lt;br /&gt;($el 속성 사용 불가)&lt;/li&gt;
&lt;li&gt;created 에서는 컴포넌트의 데이터 초기화 및 서버 요청과 관련된 작업&lt;br /&gt;이 시점에서는 DOM에 접근할 수 없지만, &lt;b&gt;컴포넌트의 데이터와 메서드에 접근할 수 있기 때문에 데이터 관련 작업을 먼저 처리하고자 할 때&lt;/b&gt; 사용&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;mounted&quot; style=&quot;background-color: #ffffff; color: #212529; text-align: start;&quot; data-ke-size=&quot;size26&quot;&gt;mounted&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc; background-color: #ffffff; color: #212529; text-align: start;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;인스턴스가 마운트된 후 호출&lt;/li&gt;
&lt;li&gt;부모, 자식 관계의 컴포넌트가 렌더링 될 때 created 다음으로 호출되며 자식, 부모순으로 실행&lt;/li&gt;
&lt;li&gt;모든 자식 컴포넌트가 마운트되었음을 보장하지 않음&lt;br /&gt;(전체 화면내용이 렌더링될 때까지 기다리려면, mounted 내에&lt;span&gt;&amp;nbsp;&lt;/span&gt;vm.$nextTick를 사용)&lt;/li&gt;
&lt;li&gt;가상 DOM 을 건드릴 수 있습니다.&lt;br /&gt;($el 속성 사용 가능)&lt;/li&gt;
&lt;li&gt;mounted 에서는 &lt;b&gt;DOM이 완전히 렌더링된 후&lt;/b&gt; 호출되기 때문에 DOM 요소를 조작하거나, 외부 라이브러리와 상호작용할 때 사용&lt;br /&gt;jQuery, D3.js, Chart.js 같은 외부 라이브러리와 연동할 때 유용&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;537&quot; data-origin-height=&quot;629&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/c01GpU/btsLUZm8WEx/mk9qxYQ1aiHLJW26SCU0K1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/c01GpU/btsLUZm8WEx/mk9qxYQ1aiHLJW26SCU0K1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/c01GpU/btsLUZm8WEx/mk9qxYQ1aiHLJW26SCU0K1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fc01GpU%2FbtsLUZm8WEx%2Fmk9qxYQ1aiHLJW26SCU0K1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;537&quot; height=&quot;629&quot; data-origin-width=&quot;537&quot; data-origin-height=&quot;629&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;</description>
      <category>VUE</category>
      <category>created</category>
      <category>mounted</category>
      <category>Vue</category>
      <category>vue.js</category>
      <category>컴포넌트</category>
      <category>프론트엔드</category>
      <author>이파댥</author>
      <guid isPermaLink="true">https://padacklee.tistory.com/112</guid>
      <comments>https://padacklee.tistory.com/112#entry112comment</comments>
      <pubDate>Tue, 21 Jan 2025 14:43:31 +0900</pubDate>
    </item>
    <item>
      <title>HTTP 상태 코드 (100, 200, 300, 400, 500)</title>
      <link>https://padacklee.tistory.com/108</link>
      <description>&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;HTTP 상태 코드란 ?&lt;/span&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #1b1b1b; text-align: start;&quot;&gt;- HTTP 응답 상태 코드는 특정 HTTP 요청이 성공적으로 완료되었는지 알려줌&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #1b1b1b; text-align: start;&quot;&gt;- 응답은 5개의 그룹으로 나뉨 : 정보를 제공하는 응답, 성공적인 응답, 리다이렉트, 클라이언트 에러, 그리고 서버 에러&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100.814%; height: 292px;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot; data-ke-style=&quot;style13&quot;&gt;
&lt;tbody&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;width: 8.33335%; text-align: center; height: 20px;&quot;&gt;그룹&lt;/td&gt;
&lt;td style=&quot;width: 4.4574%; text-align: center; height: 20px;&quot;&gt;코드&lt;/td&gt;
&lt;td style=&quot;width: 15.5814%; text-align: center; height: 20px;&quot;&gt;상수&lt;/td&gt;
&lt;td style=&quot;width: 14.1087%; text-align: center; height: 20px;&quot;&gt;설명&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 8.33335%; text-align: center; height: 34px;&quot; rowspan=&quot;2&quot;&gt;정보 응답&lt;/td&gt;
&lt;td style=&quot;width: 4.4574%; text-align: center; height: 17px;&quot;&gt;100&lt;/td&gt;
&lt;td style=&quot;width: 15.5814%; text-align: center; height: 17px;&quot;&gt;Continue&lt;/td&gt;
&lt;td style=&quot;width: 14.1087%; text-align: center; height: 17px;&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #1b1b1b; text-align: start;&quot;&gt;지금까지의 상태가 괜찮으며 &lt;br /&gt;클라이언트가 계속해서 요청을 하거나 이미 요청을 완료한 경우에는 무시해도 되는 것을 알려줌&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 4.4574%; text-align: center; height: 17px;&quot;&gt;101&lt;/td&gt;
&lt;td style=&quot;width: 15.5814%; text-align: center; height: 17px;&quot;&gt;Switching&amp;nbsp;Protocol&lt;/td&gt;
&lt;td style=&quot;width: 14.1087%; text-align: center; height: 17px;&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #1b1b1b; text-align: start;&quot;&gt;클라이언트가 보낸&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;a style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; href=&quot;https://developer.mozilla.org/ko/docs/Web/HTTP/Headers/Upgrade&quot;&gt;Upgrade&lt;/a&gt;&lt;span style=&quot;background-color: #ffffff; color: #1b1b1b; text-align: start;&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;요청 헤더에 대한 응답에 들어감&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 8.33335%; text-align: center; height: 51px;&quot; rowspan=&quot;3&quot;&gt;성공응답&lt;/td&gt;
&lt;td style=&quot;width: 4.4574%; text-align: center; height: 17px;&quot;&gt;200&lt;/td&gt;
&lt;td style=&quot;width: 15.5814%; text-align: center; height: 17px;&quot;&gt;OK&lt;/td&gt;
&lt;td style=&quot;width: 14.1087%; text-align: center; height: 17px;&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #1b1b1b; text-align: start;&quot;&gt;요청이 성공적으로 됨&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 4.4574%; text-align: center; height: 17px;&quot;&gt;201&lt;/td&gt;
&lt;td style=&quot;width: 15.5814%; text-align: center; height: 17px;&quot;&gt;Created&lt;/td&gt;
&lt;td style=&quot;width: 14.1087%; text-align: center; height: 17px;&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #1b1b1b; text-align: start;&quot;&gt;요청이 성공적&lt;br /&gt;그 결과로 새로운 리소스가 생성&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 4.4574%; text-align: center; height: 17px;&quot;&gt;202&lt;/td&gt;
&lt;td style=&quot;width: 15.5814%; text-align: center; height: 17px;&quot;&gt;Accepted&lt;/td&gt;
&lt;td style=&quot;width: 14.1087%; text-align: center; height: 17px;&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #1b1b1b; text-align: start;&quot;&gt;요청을 수신하였지만 그에 응하여 행동할 수 없음&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 8.33335%; text-align: center; height: 68px;&quot; rowspan=&quot;4&quot;&gt;리다이렉션 메시지&lt;/td&gt;
&lt;td style=&quot;width: 4.4574%; text-align: center; height: 17px;&quot;&gt;300&lt;/td&gt;
&lt;td style=&quot;width: 15.5814%; text-align: center; height: 17px;&quot;&gt;Multiple&amp;nbsp;Choice&lt;/td&gt;
&lt;td style=&quot;width: 14.1087%; text-align: center; height: 17px;&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #1b1b1b; text-align: start;&quot;&gt;요청에 대해서 하나 이상의 응답이 가능&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 4.4574%; text-align: center; height: 17px;&quot;&gt;301&lt;/td&gt;
&lt;td style=&quot;width: 15.5814%; text-align: center; height: 17px;&quot;&gt;Moved&amp;nbsp;Permanently&lt;/td&gt;
&lt;td style=&quot;width: 14.1087%; text-align: center; height: 17px;&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #1b1b1b; text-align: start;&quot;&gt;요청한 리소스의 URI가 변경되었음을 의미&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 4.4574%; text-align: center; height: 17px;&quot;&gt;302&lt;/td&gt;
&lt;td style=&quot;width: 15.5814%; text-align: center; height: 17px;&quot;&gt;Found&lt;/td&gt;
&lt;td style=&quot;width: 14.1087%; text-align: center; height: 17px;&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #1b1b1b; text-align: start;&quot;&gt;요청한 리소스의 URI가 일시적으로 변경되었음을 의미&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 4.4574%; text-align: center; height: 17px;&quot;&gt;303&lt;/td&gt;
&lt;td style=&quot;width: 15.5814%; text-align: center; height: 17px;&quot;&gt;See&amp;nbsp;Other&lt;/td&gt;
&lt;td style=&quot;width: 14.1087%; text-align: center; height: 17px;&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #1b1b1b; text-align: start;&quot;&gt;서버가 클라이언트로 직접 보내는 응답&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 8.33335%; text-align: center; height: 68px;&quot; rowspan=&quot;4&quot;&gt;클라이언트 오류 응답&lt;/td&gt;
&lt;td style=&quot;width: 4.4574%; text-align: center; height: 17px;&quot;&gt;400&lt;/td&gt;
&lt;td style=&quot;width: 15.5814%; text-align: center; height: 17px;&quot;&gt;Bad&amp;nbsp;Request&lt;/td&gt;
&lt;td style=&quot;width: 14.1087%; text-align: center; height: 17px;&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #1b1b1b; text-align: start;&quot;&gt;잘못된 문법으로 인하여 서버가 요청을 이해할 수 없음을 의미&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 4.4574%; text-align: center; height: 17px;&quot;&gt;401&lt;/td&gt;
&lt;td style=&quot;width: 15.5814%; text-align: center; height: 17px;&quot;&gt;Unauthorized&lt;/td&gt;
&lt;td style=&quot;width: 14.1087%; text-align: center; height: 17px;&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #1b1b1b; text-align: start;&quot;&gt;비인증(unauthenticated) 을 의미.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 4.4574%; text-align: center; height: 17px;&quot;&gt;403&lt;/td&gt;
&lt;td style=&quot;width: 15.5814%; text-align: center; height: 17px;&quot;&gt;Forbidden&lt;/td&gt;
&lt;td style=&quot;width: 14.1087%; text-align: center; height: 17px;&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #1b1b1b; text-align: start;&quot;&gt;클라이언트는 콘텐츠에 접근할 권리를 가지고 있지 않음&lt;br /&gt;401과 다른 점은 서버가 클라이언트가 누구인지 알고 있음&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 4.4574%; text-align: center; height: 17px;&quot;&gt;404&lt;/td&gt;
&lt;td style=&quot;width: 15.5814%; text-align: center; height: 17px;&quot;&gt;Not&amp;nbsp;Found&lt;/td&gt;
&lt;td style=&quot;width: 14.1087%; text-align: center; height: 17px;&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #1b1b1b; text-align: start;&quot;&gt;서버는 요청받은 리소스를 찾을 수 없음 브라우저에서는 알려지지 않은 URL을 의미&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 8.33335%; text-align: center; height: 51px;&quot; rowspan=&quot;3&quot;&gt;서버 오류 응답&lt;/td&gt;
&lt;td style=&quot;width: 4.4574%; text-align: center; height: 17px;&quot;&gt;500&lt;/td&gt;
&lt;td style=&quot;width: 15.5814%; text-align: center; height: 17px;&quot;&gt;Internal&amp;nbsp;Server&amp;nbsp;Error&lt;/td&gt;
&lt;td style=&quot;width: 14.1087%; text-align: center; height: 17px;&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #1b1b1b; text-align: start;&quot;&gt;서버는 아직 처리 방법을 알 수 없음&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 4.4574%; text-align: center; height: 17px;&quot;&gt;501&lt;/td&gt;
&lt;td style=&quot;width: 15.5814%; text-align: center; height: 17px;&quot;&gt;Not&amp;nbsp;Implemented&lt;/td&gt;
&lt;td style=&quot;width: 14.1087%; text-align: center; height: 17px;&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #1b1b1b; text-align: start;&quot;&gt;요청 방법은 서버에서 지원되지 않으므로 처리할 수 없음&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 4.4574%; text-align: center; height: 17px;&quot;&gt;503&lt;/td&gt;
&lt;td style=&quot;width: 15.5814%; text-align: center; height: 17px;&quot;&gt;Service&amp;nbsp;Unavailable&lt;/td&gt;
&lt;td style=&quot;width: 14.1087%; text-align: center; height: 17px;&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #1b1b1b; text-align: start;&quot;&gt;서버가 요청을 처리할 준비가 되지 않음&amp;nbsp;&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;출처 및 참고하면 좋은 자료&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://developer.mozilla.org/ko/docs/Web/HTTP/Status&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://developer.mozilla.org/ko/docs/Web/HTTP/Status&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1724853087227&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;HTTP 상태 코드 - HTTP | MDN&quot; data-og-description=&quot;HTTP 응답 상태 코드는 특정 HTTP 요청이 성공적으로 완료되었는지 알려줍니다. 응답은 5개의 그룹으로 나누어집니다: 정보를 제공하는 응답, 성공적인 응답, 리다이렉트, 클라이언트 에러, 그리고&quot; data-og-host=&quot;developer.mozilla.org&quot; data-og-source-url=&quot;https://developer.mozilla.org/ko/docs/Web/HTTP/Status&quot; data-og-url=&quot;https://developer.mozilla.org/ko/docs/Web/HTTP/Status&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/bbseey/hyWVZoYHiY/HUuhSy8v9kM2EzLg9kIpS0/img.png?width=1920&amp;amp;height=1080&amp;amp;face=0_0_1920_1080&quot;&gt;&lt;a href=&quot;https://developer.mozilla.org/ko/docs/Web/HTTP/Status&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://developer.mozilla.org/ko/docs/Web/HTTP/Status&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/bbseey/hyWVZoYHiY/HUuhSy8v9kM2EzLg9kIpS0/img.png?width=1920&amp;amp;height=1080&amp;amp;face=0_0_1920_1080');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;HTTP 상태 코드 - HTTP | MDN&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;HTTP 응답 상태 코드는 특정 HTTP 요청이 성공적으로 완료되었는지 알려줍니다. 응답은 5개의 그룹으로 나누어집니다: 정보를 제공하는 응답, 성공적인 응답, 리다이렉트, 클라이언트 에러, 그리고&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;developer.mozilla.org&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>CS</category>
      <category>100</category>
      <category>101</category>
      <category>200</category>
      <category>202</category>
      <category>300</category>
      <category>400</category>
      <category>404</category>
      <category>500</category>
      <category>HTTP</category>
      <category>http상태코드</category>
      <author>이파댥</author>
      <guid isPermaLink="true">https://padacklee.tistory.com/108</guid>
      <comments>https://padacklee.tistory.com/108#entry108comment</comments>
      <pubDate>Wed, 28 Aug 2024 22:50:46 +0900</pubDate>
    </item>
    <item>
      <title>JAR 과 WAR 의 개념과 차이점</title>
      <link>https://padacklee.tistory.com/107</link>
      <description>&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #f89009;&quot;&gt;JAR 이란?&lt;/span&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- &lt;b&gt;JAR&lt;/b&gt;(Java ARchive) 파일은&lt;b&gt; Java 애플리케이션&lt;/b&gt;을 &lt;b&gt;배포&lt;/b&gt;하기위한 &lt;b&gt;압축된 파일&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 여러개의 클래스 파일, 메타데이터, 리소스(이미지, 텍스트 등)를 &lt;b&gt;하나의 파일로 묶어줌&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 주로 &lt;b&gt;독립 실행형&lt;/b&gt; (Java SE) 애플리케이션이 사용됨&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- &lt;b&gt;실행 가능한&lt;/b&gt; JAR 파일은 &lt;b&gt;'Main-Class'&lt;/b&gt; 가 지정된 'META-INF/MANIFEST.MF' 파일을 포함&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;background-color: #f6e199;&quot;&gt;* 사용 예시 *&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 간단한 콘솔 기반 Java 애플리케이션&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 독립적인 Java 도구 또는 라이브러리&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #f89009;&quot;&gt;WAR 이란?&lt;/span&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- &lt;b&gt;WAR&lt;/b&gt;(Web Application Archive) 파일은 &lt;b&gt;Java 웹 애플리케이션&lt;/b&gt;을 &lt;b&gt;배포&lt;/b&gt;하기 위한 &lt;b&gt;압축된 파일&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 웹 애플리케이션의 &lt;b&gt;모든 컴포넌트&lt;/b&gt;(서블릿, JSP 파일, HTML 파일, Java 클래스 등)를 &lt;b&gt;포함&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 웹 서버 또는 애플리케이션 &lt;b&gt;서버에서 실행&lt;/b&gt;되며, &lt;b&gt;서버의 컨테이너&lt;/b&gt;가 이를&lt;b&gt; 관리&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- &lt;b&gt;디렉토리 구조가 정해져&lt;/b&gt; 있어야 하며, 'WEB_INF' 폴더에 설정 파일(web.xml)과 클래스 파일이 위치&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;background-color: #f6e199;&quot;&gt;* 사용 예시 *&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- Java 웹 애플리케이션 ( EX. spring MVC, JSP 기반 애플리케이션)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 엔터프라이즈 포털 시스템&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #0593d3;&quot;&gt;JAR 과 WAR 의 차이점&lt;/span&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%; height: 120px;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot; data-ke-style=&quot;style15&quot;&gt;
&lt;tbody&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;width: 12.4419%; text-align: center; height: 20px;&quot;&gt;구분&lt;/td&gt;
&lt;td style=&quot;width: 30.9302%; text-align: center; height: 20px;&quot;&gt;JAR&lt;/td&gt;
&lt;td style=&quot;width: 31.6279%; text-align: center; height: 20px;&quot;&gt;WAR&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;width: 12.4419%; text-align: center; height: 20px;&quot;&gt;용도&lt;/td&gt;
&lt;td style=&quot;width: 30.9302%; text-align: center; height: 20px;&quot;&gt;독립 실행형 Java 애플리케이션&lt;/td&gt;
&lt;td style=&quot;width: 31.6279%; text-align: center; height: 20px;&quot;&gt;Java 웹 애플리케이션&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;width: 12.4419%; text-align: center; height: 20px;&quot;&gt;파일 구조&lt;/td&gt;
&lt;td style=&quot;width: 30.9302%; text-align: center; height: 20px;&quot;&gt;자유롭게 구성 가능&lt;/td&gt;
&lt;td style=&quot;width: 31.6279%; text-align: center; height: 20px;&quot;&gt;정해진 디렉토리 구조 (WEB-INF 등)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;width: 12.4419%; text-align: center; height: 20px;&quot;&gt;실행 환경&lt;/td&gt;
&lt;td style=&quot;width: 30.9302%; text-align: center; height: 20px;&quot;&gt;Java Virtual Machine(JVM)&lt;/td&gt;
&lt;td style=&quot;width: 31.6279%; text-align: center; height: 20px;&quot;&gt;웹 서버 또는 애플리케이션 서버&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;width: 12.4419%; text-align: center; height: 20px;&quot;&gt;실행 파일&lt;/td&gt;
&lt;td style=&quot;width: 30.9302%; text-align: center; height: 20px;&quot;&gt;가능(Main-Class 포함 시)&lt;/td&gt;
&lt;td style=&quot;width: 31.6279%; text-align: center; height: 20px;&quot;&gt;불가능(서버가 파일을 배포하고 실행)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;width: 12.4419%; text-align: center; height: 20px;&quot;&gt;확장자&lt;/td&gt;
&lt;td style=&quot;width: 30.9302%; text-align: center; height: 20px;&quot;&gt;.jar&lt;/td&gt;
&lt;td style=&quot;width: 31.6279%; text-align: center; height: 20px;&quot;&gt;.war&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;요약 및 정리&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- &lt;span style=&quot;background-color: #99cefa;&quot;&gt;JAR&lt;/span&gt; 은 주로 &lt;span style=&quot;background-color: #99cefa;&quot;&gt;독립적인 Java 애플리케이션을 위해 사용&lt;/span&gt;되며,&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &lt;span style=&quot;background-color: #9feec3;&quot;&gt;WAR&lt;/span&gt; 은 &lt;span style=&quot;background-color: #9feec3;&quot;&gt;Java 웹 애플리케이션을 배포하기 위해 사용&lt;/span&gt;됨&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 두 파일 형식은 각각의 목적과 구조에 따라 다르게 설계되었음&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 사용 시점과 환경에 맞는 파일 형식을 선택해야함&lt;/p&gt;</description>
      <category>기타</category>
      <category>jar</category>
      <category>java</category>
      <category>mvc</category>
      <category>War</category>
      <category>배포</category>
      <category>코딩</category>
      <author>이파댥</author>
      <guid isPermaLink="true">https://padacklee.tistory.com/107</guid>
      <comments>https://padacklee.tistory.com/107#entry107comment</comments>
      <pubDate>Tue, 27 Aug 2024 20:32:02 +0900</pubDate>
    </item>
    <item>
      <title>JPA 기초</title>
      <link>https://padacklee.tistory.com/106</link>
      <description>&lt;pre id=&quot;code_1724162396297&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;// WebConfig.java

package com.kh.config;

import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.CorsRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;

// 3000 포트와 연결하는 webConfig 설정
@Configuration
public class WebConfig implements WebMvcConfigurer{
	
	@Override
	public void addCorsMappings(CorsRegistry registry) {
		registry.addMapping(&quot;/**&quot;) // 3000 다음에 오는 api url 모두 허용
				.allowedOrigins(&quot;http://localhost:3000&quot;) // localhost:3000 주소 접속허용
				.allowedMethods(&quot;GET&quot;,&quot;POST&quot;,&quot;PUT&quot;,&quot;DELETE&quot;,&quot;OPTIONS&quot;) // httpMethod 와 기타 옵션 모두 허용
				.allowedHeaders(&quot;*&quot;); // 데이터, 이미지, 파일 다중파일등 모두 허용
	}
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;JPA 는 Mybatis 와 다른 점이 크게 mapper , xml 대신 repository 하나가 들어간다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그리고 DTO 의 모습도 다르다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1724162461159&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;// Chicken.java

package com.kh.dto;

import jakarta.persistence.Entity;
import jakarta.persistence.GeneratedValue;
import jakarta.persistence.GenerationType;
import jakarta.persistence.Id;
import lombok.Getter;
import lombok.Setter;

@Entity // MySQL 에 테이블이 존재하지 않으면 테이블 생성
@Getter
@Setter // lombok, jakarta 가 나오지 않음 -&amp;gt; build.gradle 에 spring 이나 lombok 관련된 설정이 있는지 확인
public class Chicken {
	
	@Id // primary key
	@GeneratedValue(strategy = GenerationType.IDENTITY) // Nextval 
	private int id;
	private String chickenName;
	private String description;
	private double price; // 소수점 고려
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;@Entity : MySQL 에 테이블이 존재하지 않으면 테이블 생성&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;@ID : primary key 지정&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;@GeneratedValue(strategy = GenerationType.IDENTITY) : 자동으로 숫자가 오르는 기능 (Nextval, sequence)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1724162611758&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;// ChickenRepository.java

package com.kh.repository;

import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;

import com.kh.dto.Chicken;

// repository 
// mybatis - mapper 이 두가지를 설정

// @Repository, @Mapper 는 interface 로 시작
@Repository
public interface ChickenRepository extends JpaRepository&amp;lt;Chicken, Integer&amp;gt; {
	// 전체보기 전체넣기 전체수정 전체삭제 와 같은 기본 기능은
	// JpaRepository 안에 모두 들어있음
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1724162637812&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;// application.properties

spring.application.name=JPA_chicken

server.port=9090

spring.datasource.url=jdbc:mysql://localhost:3306/KH_WORKBOOK
spring.datasource.username=root
spring.datasource.password=kh1234
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver

# MySQL 에 자동으로 테이블을 생성해주는 설정
spring.jpa.hibernate.ddl-auto=update

# SQL 이 자동으로 생성이되고 쿼리가 실행이 잘 되는지 보는 설정
spring.jpa.show-sql=true
# JPA 로 만들어진 쿼리가 보임

### DATA   Language

	# Definition
### DDL = CREATE DROP ALTER RENAME TRUNCATE

	# Control, Class, Checked
### DCL = GRANT REVOKE

	# Manipulation
### DML = INSERT UPDATE DELETE SELECT

	# Query
### DQL = SELECT&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;JPA 실습&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Java 백엔드&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://github.com/LeePaDack/Springboot-React/tree/main/JPA_chicken&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://github.com/LeePaDack/Springboot-React/tree/main/JPA_chicken&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1724162729936&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;object&quot; data-og-title=&quot;Springboot-React/JPA_chicken at main &amp;middot; LeePaDack/Springboot-React&quot; data-og-description=&quot;Contribute to LeePaDack/Springboot-React development by creating an account on GitHub.&quot; data-og-host=&quot;github.com&quot; data-og-source-url=&quot;https://github.com/LeePaDack/Springboot-React/tree/main/JPA_chicken&quot; data-og-url=&quot;https://github.com/LeePaDack/Springboot-React/tree/main/JPA_chicken&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/bsvVfy/hyWSgxtCiS/mY1KMkVsGH22oC6jkw6scK/img.png?width=1200&amp;amp;height=600&amp;amp;face=0_0_1200_600&quot;&gt;&lt;a href=&quot;https://github.com/LeePaDack/Springboot-React/tree/main/JPA_chicken&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://github.com/LeePaDack/Springboot-React/tree/main/JPA_chicken&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/bsvVfy/hyWSgxtCiS/mY1KMkVsGH22oC6jkw6scK/img.png?width=1200&amp;amp;height=600&amp;amp;face=0_0_1200_600');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;Springboot-React/JPA_chicken at main &amp;middot; LeePaDack/Springboot-React&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;Contribute to LeePaDack/Springboot-React development by creating an account on GitHub.&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;github.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;React 프론트엔드&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://github.com/LeePaDack/Springboot-React/tree/main/chicken-store&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://github.com/LeePaDack/Springboot-React/tree/main/chicken-store&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1724162781225&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;object&quot; data-og-title=&quot;Springboot-React/chicken-store at main &amp;middot; LeePaDack/Springboot-React&quot; data-og-description=&quot;Contribute to LeePaDack/Springboot-React development by creating an account on GitHub.&quot; data-og-host=&quot;github.com&quot; data-og-source-url=&quot;https://github.com/LeePaDack/Springboot-React/tree/main/chicken-store&quot; data-og-url=&quot;https://github.com/LeePaDack/Springboot-React/tree/main/chicken-store&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/OKQkn/hyWSpnEWhw/aaFEOkWk2K4rBJak0vt8M0/img.png?width=1200&amp;amp;height=600&amp;amp;face=0_0_1200_600&quot;&gt;&lt;a href=&quot;https://github.com/LeePaDack/Springboot-React/tree/main/chicken-store&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://github.com/LeePaDack/Springboot-React/tree/main/chicken-store&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/OKQkn/hyWSpnEWhw/aaFEOkWk2K4rBJak0vt8M0/img.png?width=1200&amp;amp;height=600&amp;amp;face=0_0_1200_600');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;Springboot-React/chicken-store at main &amp;middot; LeePaDack/Springboot-React&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;Contribute to LeePaDack/Springboot-React development by creating an account on GitHub.&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;github.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>기타</category>
      <category>java</category>
      <category>JPA</category>
      <category>mybatis</category>
      <category>springboot</category>
      <author>이파댥</author>
      <guid isPermaLink="true">https://padacklee.tistory.com/106</guid>
      <comments>https://padacklee.tistory.com/106#entry106comment</comments>
      <pubDate>Tue, 20 Aug 2024 23:06:29 +0900</pubDate>
    </item>
    <item>
      <title>삼각 달팽이</title>
      <link>https://padacklee.tistory.com/105</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;733&quot; data-origin-height=&quot;794&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/sHxwj/btsIVkIAOPF/HkCArYzkejOQTbwkR311F0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/sHxwj/btsIVkIAOPF/HkCArYzkejOQTbwkR311F0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/sHxwj/btsIVkIAOPF/HkCArYzkejOQTbwkR311F0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FsHxwj%2FbtsIVkIAOPF%2FHkCArYzkejOQTbwkR311F0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;733&quot; height=&quot;794&quot; data-origin-width=&quot;733&quot; data-origin-height=&quot;794&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;pre id=&quot;code_1722945493978&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;class Solution {
    public int[] solution(int n) {
        // 삼각형을 표현할 2 차원 배열과 채워넣을 숫자 선언
        int[][] triangle = new int[n][n];
        int v = 1; // v 는 채워넣을 숫자로 숫자를 triangle 에 기록할 때마다 1 씩 증가
        int x = 0; // 숫자 초기화 (0,0) 을 위해
        int y = 0;
        
        while (true) {
            // 아래로 이동하기
            while (true) {
                triangle[y][x] = v++; // 2 차원 배열은 y,x 로 생각해야함
                if (y + 1 == n || triangle[y + 1][x] != 0)
                    break;
                y += 1; // 아래로 진행하는 것은 y 값의 증가 때문이므로
            }
            // 오른쪽으로 이동할 수 있는 경우 반복문 탈출하도록 작성
            // 오른쪽으로 이동할 수 있을 때만 진행
            if (x + 1 == n || triangle[y][x + 1] != 0)
                break;
            x += 1;
            
            // 오른쪽으로 이동하기
            while(true) {
                triangle[y][x] = v++;
                if(x + 1 == n || triangle[y][x + 1] != 0)
                    break;
                x += 1;
            }
            if(triangle[y - 1][x - 1] != 0) 
                break;
            x -= 1;
            y -= 1;
            
            // 왼쪽으로 이동하기
            while(true) {
                triangle[y][x] = v++;
                if(triangle[y - 1][x - 1] != 0)
                    break;
                x -= 1;
                y -= 1;
            }
            if(y + 1 == n || triangle[y + 1][x] != 0)
                break;
            y += 1;
        }
        // 채운 숫자들을 1 차원 배열로 구성하여 반환
        // v 변수는 채워 넣은 마지막 숫자 + 1 이 있으므로  v - 1
        int[] result = new int[v - 1];
        
        // 2 차원 배열에서는 삼각형이 왼쪽으로 몰려 있는 직각 삼각형 모양으로 들어있다는 것을
        // 이용하여 이중 반복문으로 1 차원 배열에 숫자를 넣어줌
        int index = 0;
        for(int i = 0; i &amp;lt; n; i++){
            for(int j = 0; j &amp;lt;= i; j++){
                result[index++] = triangle[i][j];
            }
        }
        return result;
    }
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>코테/프로그래머스</category>
      <category>백준</category>
      <category>코테</category>
      <category>프로그래머스</category>
      <author>이파댥</author>
      <guid isPermaLink="true">https://padacklee.tistory.com/105</guid>
      <comments>https://padacklee.tistory.com/105#entry105comment</comments>
      <pubDate>Tue, 6 Aug 2024 20:58:23 +0900</pubDate>
    </item>
    <item>
      <title>교점에 별 만들기</title>
      <link>https://padacklee.tistory.com/104</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;725&quot; data-origin-height=&quot;326&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bxobAV/btsIUhXNKm4/sNijloMHEKHSwu71c6dgmk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bxobAV/btsIUhXNKm4/sNijloMHEKHSwu71c6dgmk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bxobAV/btsIUhXNKm4/sNijloMHEKHSwu71c6dgmk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbxobAV%2FbtsIUhXNKm4%2FsNijloMHEKHSwu71c6dgmk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;725&quot; height=&quot;326&quot; data-origin-width=&quot;725&quot; data-origin-height=&quot;326&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;729&quot; data-origin-height=&quot;757&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Dl1tv/btsIRdwoNS6/2wU1BfKYRWUwEfUqO068C0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Dl1tv/btsIRdwoNS6/2wU1BfKYRWUwEfUqO068C0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Dl1tv/btsIRdwoNS6/2wU1BfKYRWUwEfUqO068C0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FDl1tv%2FbtsIRdwoNS6%2F2wU1BfKYRWUwEfUqO068C0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;729&quot; height=&quot;757&quot; data-origin-width=&quot;729&quot; data-origin-height=&quot;757&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;738&quot; data-origin-height=&quot;783&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/lNrCz/btsITtj6RVz/3hOHs40tcbZv6toCR4bgU0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/lNrCz/btsITtj6RVz/3hOHs40tcbZv6toCR4bgU0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/lNrCz/btsITtj6RVz/3hOHs40tcbZv6toCR4bgU0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FlNrCz%2FbtsITtj6RVz%2F3hOHs40tcbZv6toCR4bgU0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;738&quot; height=&quot;783&quot; data-origin-width=&quot;738&quot; data-origin-height=&quot;783&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;737&quot; data-origin-height=&quot;773&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cLNivf/btsIRxg6Ot7/TxCHiU9xrt23ZUCJy2XKak/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cLNivf/btsIRxg6Ot7/TxCHiU9xrt23ZUCJy2XKak/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cLNivf/btsIRxg6Ot7/TxCHiU9xrt23ZUCJy2XKak/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcLNivf%2FbtsIRxg6Ot7%2FTxCHiU9xrt23ZUCJy2XKak%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;737&quot; height=&quot;773&quot; data-origin-width=&quot;737&quot; data-origin-height=&quot;773&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1722558277884&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import java.util.*;

public class Solution {
    
  private static class Point { // 좌표를 나타내는 클래스
    public final long x, y; 
    // final 사용해 불변성을 가지게 하고, 생성자로 초기화 할 수 있게 함

    private Point(long x, long y) {
      this.x = x;
      this.y = y;
    }
  }
    
    
  private Point intersection(long a1, long b1, long c1, long a2, long b2, long c2) { // 직선의 교점을 찾기 위한 메서드

    // x 값 = 교점 구하는 공식
    double x = (double) (b1 * c2 - b2 * c1) / (a1 * b2 - a2 * b1);
    // y 값 = 교점 구하는 공식
    double y = (double) (a2 * c1 - a1 * c2) / (a1 * b2 - a2 * b1);

    if (x % 1 != 0 || y % 1 != 0) // 만약 정수가 아니라면 
      return null; // null 값 반환해라

    return new Point((long) x, (long) y); // 위 if 문 통과시 x,y 교점 좌표 
  }

  private Point getMinimumPoint(List&amp;lt;Point&amp;gt; points) {
      // getMinimumPoint() 메서드는 
      // points 리스트 안 모든 Point 객체를 순회하면서 가장 작은
      // x, y 값을 찾고 그 값을 사용해 Point 객체 만들어 반환
    long x = Long.MAX_VALUE;
    // MAX_VALUE 란?
    // 데이터 타입이 표현할 수 있는 숫자의 범위 중 가장 큰 숫자와
    // 가장 큰 숫자의 값이 할당
    long y = Long.MAX_VALUE;
      
    // points 리스트 안 모든 Point 객체를 순회하면서 가장 작은
    // x, y 값을 찾고 그 값을 사용해 Point 객체 만들어 반환
    for (Point p : points) {
      if (p.x &amp;lt; x)
        x = p.x;
      if (p.y &amp;lt; y)
        y = p.y;
    }
    return new Point(x, y);
  }

  private Point getMaximumPoint(List&amp;lt;Point&amp;gt; points) {
      // getMaximumPoint() 메서드는 
      // points 리스트 안 모든 Point 객체를 순회하면서 가장 큰
      // x, y 값을 찾고 그 값을 사용해 Point 객체 만들어 반환
      
    long x = Long.MIN_VALUE;
    // MIN_VALUE 란?
    // 데이터 타입이 표현할 수 있는 숫자의 범위 중 가장 작은 숫자와
    // 가장 작은 숫자의 값이 할당
    long y = Long.MIN_VALUE;

    for (Point p : points) {
      if (p.x &amp;gt; x)
        x = p.x;
      if (p.y &amp;gt; y)
        y = p.y;
    }
    return new Point(x, y);
  }

  public String[] solution(int[][] line){
      // 정수 좌표일 때 Point 객체로 반환되므로
      // 좌표를 저장할 리스트를 만들고, 객체가 반환되었을 때만 리스트에 저장
    List&amp;lt;Point&amp;gt; points = new ArrayList&amp;lt;&amp;gt;();
    
    // 모든 직선 쌍에 대해 반복  
    for (int i = 0; i &amp;lt; line.length; i++) {
      for (int j = i + 1; j &amp;lt; line.length; j++){
        Point intersection = // 행렬 , 2 차원 배열은 열 행 인걸 인지하자
            intersection(line[i][0], line[i][1], line[i][2], 
                         line[j][0], line[j][1], line[j][2]);

        if (intersection != null) {
          points.add(intersection);
        }
      }
    }
    // 2 차원의 배열의 크기 구하기
    Point minimum = getMinimumPoint(points);
    Point maximum = getMaximumPoint(points);
    // 배열의 크기를 구해야 하기 때문에 + 1
    int width = (int) (maximum.x - minimum.x + 1);
    int height = (int) (maximum.y - minimum.y + 1);

    // 2 차원 배열 선언하고 초기화
    // 문자를 이용하여 각 좌표를 표시하기 때문에 char 자료형 사용해 2차원 배열 선언
    // ****** 2 차원 배열은 y 축 부터 접근함 *******
    char[][] arr = new char[height][width];

    for (char[] row : arr) {
      Arrays.fill(row, '.');
    }

    // 결정된 minimum, maximum 크기로
    // 좌표 변환과 변환된 좌표로 별 찍기
    for (Point p : points) {
      int x = (int) (p.x - minimum.x);
      int y = (int) (maximum.y - p.y);
      arr[y][x] = '*';
    }
    
    // String 배열로 반환하여 반환
    // String 배열을 선언한 후 2 차원 배열을 구성하는 1 차원 배열들은
    // String 으로 반환
    String[] result = new String[arr.length];
    for (int i = 0; i &amp;lt; result.length; i++) {
      result[i] = new String(arr[i]);
    }
    return result;
  }

}&lt;/code&gt;&lt;/pre&gt;</description>
      <category>코테/프로그래머스</category>
      <category>백준</category>
      <category>코테</category>
      <category>프로그래머스</category>
      <author>이파댥</author>
      <guid isPermaLink="true">https://padacklee.tistory.com/104</guid>
      <comments>https://padacklee.tistory.com/104#entry104comment</comments>
      <pubDate>Fri, 2 Aug 2024 09:25:03 +0900</pubDate>
    </item>
    <item>
      <title>replace() 와 replaceAll() 차이</title>
      <link>https://padacklee.tistory.com/103</link>
      <description>&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;replace() 와 replaceAll() 차이점&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;replace() 와 replaceAll() 은 인자값의 형태를 보면 알 수 있음&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;String &lt;span style=&quot;color: #009a87;&quot;&gt;replace&lt;/span&gt;(CharSequence target, CharSequence replacement)&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;String &lt;span style=&quot;color: #009a87;&quot;&gt;replaceAll&lt;/span&gt;(String regex, String replacement)&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;로 &lt;b&gt;CharSequence&lt;/b&gt;&lt;span&gt; 과&amp;nbsp;&lt;/span&gt;&lt;b&gt;&lt;span&gt;&lt;b&gt;String&amp;nbsp;&lt;/b&gt;&lt;/span&gt;&lt;/b&gt;&lt;span&gt;의 차이가 있음&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;또한 &lt;b&gt;regex&lt;/b&gt; 는 정규식&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;즉 &lt;b&gt;&lt;span style=&quot;color: #009a87;&quot;&gt;replaceAll()&amp;nbsp; &lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;은 정규식도 사용할 수 있음&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;div data-ke-type=&quot;moreLess&quot; data-text-more=&quot;더보기&quot; data-text-less=&quot;닫기&quot;&gt;&lt;a class=&quot;btn-toggle-moreless&quot;&gt;더보기&lt;/a&gt;
&lt;div class=&quot;moreless-content&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #009a87;&quot;&gt;replace 와 &lt;b&gt;&lt;span style=&quot;color: #009a87;&quot;&gt;replaceAll 의 공통적인 것&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #009a87;&quot;&gt;&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;1. 대상 문자열을 원하는 문자값으로 변환하는 함수&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;2. 첫번째 매개변수는 변환하고자 하는 대상이 될 문자열&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;3. 두번째 매개변수는 변환할 문자값&lt;/span&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;출처 및 참고자료&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://doitdoik.tistory.com/77&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://doitdoik.tistory.com/77&lt;/a&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>JAVA</category>
      <category>java</category>
      <category>replace</category>
      <category>replaceall</category>
      <author>이파댥</author>
      <guid isPermaLink="true">https://padacklee.tistory.com/103</guid>
      <comments>https://padacklee.tistory.com/103#entry103comment</comments>
      <pubDate>Wed, 31 Jul 2024 21:21:19 +0900</pubDate>
    </item>
    <item>
      <title>A 강조하기</title>
      <link>https://padacklee.tistory.com/102</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;733&quot; data-origin-height=&quot;793&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/V7mZw/btsISrmHsFm/34P7zwYFU11KzZW9l7KWyK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/V7mZw/btsISrmHsFm/34P7zwYFU11KzZW9l7KWyK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/V7mZw/btsISrmHsFm/34P7zwYFU11KzZW9l7KWyK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FV7mZw%2FbtsISrmHsFm%2F34P7zwYFU11KzZW9l7KWyK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;733&quot; height=&quot;793&quot; data-origin-width=&quot;733&quot; data-origin-height=&quot;793&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1722427100025&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;class Solution {
    public String solution(String myString) {
        myString = myString.toLowerCase(); // myString 을 다 소문자로 바꾸기
        myString = myString.replaceAll(&quot;a&quot;, &quot;A&quot;); // a 를 A 로 바꾸기
        return myString;
    }
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;755&quot; data-origin-height=&quot;329&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/J3OKj/btsITllJdQ8/syK9u9bNkkAkJkGKh8nS71/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/J3OKj/btsITllJdQ8/syK9u9bNkkAkJkGKh8nS71/img.png&quot; data-alt=&quot;다른 사람의 풀이&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/J3OKj/btsITllJdQ8/syK9u9bNkkAkJkGKh8nS71/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FJ3OKj%2FbtsITllJdQ8%2FsyK9u9bNkkAkJkGKh8nS71%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;755&quot; height=&quot;329&quot; data-origin-width=&quot;755&quot; data-origin-height=&quot;329&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;다른 사람의 풀이&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다른 사람의 풀이와 매우 흡사하게 풀었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다른점이 있다면 replaceAll 을 사용하였지만 다른 사람의 풀이는 replace 를 사용했다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그러므로 둘의 차이를 블로그에 올리고 올리게 된다면 밑에 링크를 달아두겠다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #f3c000;&quot;&gt;&lt;a style=&quot;color: #f3c000;&quot; href=&quot;https://padacklee.tistory.com/103&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;&lt;span style=&quot;background-color: #333333;&quot;&gt;2024.07.31 - [JAVA] - replace() 와 replaceAll() 차이&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>코테/프로그래머스</category>
      <category>백준</category>
      <category>코테</category>
      <category>프로그래머스</category>
      <author>이파댥</author>
      <guid isPermaLink="true">https://padacklee.tistory.com/102</guid>
      <comments>https://padacklee.tistory.com/102#entry102comment</comments>
      <pubDate>Wed, 31 Jul 2024 21:12:00 +0900</pubDate>
    </item>
    <item>
      <title>아이스 아메리카노</title>
      <link>https://padacklee.tistory.com/101</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;756&quot; data-origin-height=&quot;845&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bg2KXX/btsIScQbBwb/XhsNutEiIxtJRSmt1op6O1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bg2KXX/btsIScQbBwb/XhsNutEiIxtJRSmt1op6O1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bg2KXX/btsIScQbBwb/XhsNutEiIxtJRSmt1op6O1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbg2KXX%2FbtsIScQbBwb%2FXhsNutEiIxtJRSmt1op6O1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;756&quot; height=&quot;845&quot; data-origin-width=&quot;756&quot; data-origin-height=&quot;845&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;pre id=&quot;code_1722341893133&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;class Solution {
    public int[] solution(int money) {
        int answer[] = new int[2]; // 배열 
        
        answer[0] = money / 5500;
        answer[1] = money % 5500;

        return answer;
    }
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;배열중 0 번째에는 돈 / 5500 을 해서 먹을 수 있는 아메리카노 개수&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;배열중 1 번째에는 돈 % 5500 을 해서 나머지, 즉 잔돈을 계산한 코드&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;756&quot; data-origin-height=&quot;233&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/crWzpG/btsISTCDg2V/ukGJ6ejFYk3wHUTcXWJdF0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/crWzpG/btsISTCDg2V/ukGJ6ejFYk3wHUTcXWJdF0/img.png&quot; data-alt=&quot;다른 사람의 코드&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/crWzpG/btsISTCDg2V/ukGJ6ejFYk3wHUTcXWJdF0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcrWzpG%2FbtsISTCDg2V%2FukGJ6ejFYk3wHUTcXWJdF0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;756&quot; height=&quot;233&quot; data-origin-width=&quot;756&quot; data-origin-height=&quot;233&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;다른 사람의 코드&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다른 사람의 코드는 비슷해보이지만 매우 간결하게 작성하였다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>코테/프로그래머스</category>
      <category>백준</category>
      <category>코테</category>
      <category>프로그래머스</category>
      <author>이파댥</author>
      <guid isPermaLink="true">https://padacklee.tistory.com/101</guid>
      <comments>https://padacklee.tistory.com/101#entry101comment</comments>
      <pubDate>Tue, 30 Jul 2024 21:20:52 +0900</pubDate>
    </item>
  </channel>
</rss>