<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>개발생각</title>
    <link>https://thinksdev.tistory.com/</link>
    <description>개발자처럼 생각하자</description>
    <language>ko</language>
    <pubDate>Mon, 15 Jun 2026 11:33:56 +0900</pubDate>
    <generator>TISTORY</generator>
    <ttl>100</ttl>
    <managingEditor>개발생각11</managingEditor>
    <image>
      <title>개발생각</title>
      <url>https://tistory1.daumcdn.net/tistory/2807153/attach/12fb3795d78744f6af2d0b8fe712fe08</url>
      <link>https://thinksdev.tistory.com</link>
    </image>
    <item>
      <title>[Baekjoon] #1890 점프</title>
      <link>https://thinksdev.tistory.com/entry/Baekjoon-1890-%EC%A0%90%ED%94%84</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;1890.png&quot; data-origin-width=&quot;972&quot; data-origin-height=&quot;1801&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/3a0Eb/btsK5AVswyX/SKrHRdqSHNo6olTgdfQKPk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/3a0Eb/btsK5AVswyX/SKrHRdqSHNo6olTgdfQKPk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/3a0Eb/btsK5AVswyX/SKrHRdqSHNo6olTgdfQKPk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F3a0Eb%2FbtsK5AVswyX%2FSKrHRdqSHNo6olTgdfQKPk%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;972&quot; height=&quot;1801&quot; data-filename=&quot;1890.png&quot; data-origin-width=&quot;972&quot; data-origin-height=&quot;1801&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;pre id=&quot;code_1733150636732&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import java.util.Scanner;

// Q) 점프
// #1890

public class Main {

	public static void main(String[] args) {
		
		Scanner sc = new Scanner(System.in);
		
		int n = sc.nextInt();
		
		int[][] board = new int[101][101];
		long[][] dp = new long[101][101];
		int[][] visit = new int[101][101];
		
		for(int i=0;i&amp;lt;n;i++){
			for(int j=0;j&amp;lt;n;j++){
				board[i][j] = sc.nextInt();
			}
		}
		
		dp[0][0] = 1;
		visit[0][0] = 1;
		
		for(int i=0;i&amp;lt;n;i++){
			for(int j=0;j&amp;lt;n;j++){
				if(i==n-1 &amp;amp;&amp;amp; j==n-1){
					break;
				}
				if(visit[i][j] == 0) {
					continue;
				}
				int move = board[i][j];
				visit[i+move][j] = 1;
				visit[i][j+move] = 1;
				if(i+move&amp;lt;n){
					if(visit[i+move][j] == 1){
						/*System.out.println(&quot;move : &quot;+move);
						System.out.println(&quot;board[&quot;+(i+move)+&quot;][&quot;+j+&quot;]&quot;);*/
						dp[i+move][j] += dp[i][j];
						//visit[i+move][j] = 1;
					}
				}
				if(j+move&amp;lt;n){
					if(visit[i][j+move] == 1){
						/*System.out.println(&quot;@@move : &quot;+move);
						System.out.println(&quot;@@board[&quot;+i+&quot;][&quot;+(j+move)+&quot;]&quot;);*/
						dp[i][j+move] += dp[i][j];
						//visit[i][j+move] =1;
					}
				}
				
			}
		}
		System.out.println(dp[n-1][n-1]);
		
	}
}&lt;/code&gt;&lt;/pre&gt;</description>
      <category>알고리즘/Baekjoon</category>
      <category>1890 점프</category>
      <category>boj 1890 자바</category>
      <category>boj 1890 점프</category>
      <category>백준 1890</category>
      <category>백준 1890 자바</category>
      <category>백준 1890 점프</category>
      <author>개발생각11</author>
      <guid isPermaLink="true">https://thinksdev.tistory.com/134</guid>
      <comments>https://thinksdev.tistory.com/entry/Baekjoon-1890-%EC%A0%90%ED%94%84#entry134comment</comments>
      <pubDate>Mon, 2 Dec 2024 23:44:29 +0900</pubDate>
    </item>
    <item>
      <title>[SpringBoot] application.yml 과 application.properties 차이점</title>
      <link>https://thinksdev.tistory.com/entry/SpringBoot-applicationyml-%EA%B3%BC-applicationproperties-%EC%B0%A8%EC%9D%B4%EC%A0%90</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;application.yml 과 application.properties&lt;/b&gt;&lt;br /&gt;application.yml 과 application properties 둘다 서버 정보나 &lt;br /&gt;스프링부트 외적인 시스템과 연동할때 필요한 profile 정보를 정의하고 &lt;br /&gt;프로그램이 실행되는데 필요한 속성들을 정의할때 application.yml 또는 application.properties를 사용한다.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-style=&quot;style5&quot; data-ke-type=&quot;horizontalRule&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;application.yml&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;.yml 파일은 .properties 파일과 다르게 계층적 구조를 사용 할 수 있다. 아래 내용을 보면 이해가 편할거다.&lt;/p&gt;
&lt;pre class=&quot;java&quot; data-ke-language=&quot;java&quot;&gt;&lt;code&gt;#DB
spring:
	datasource:
		driver-class-name: oracle.jdbc.driver.OracleDriver
		url: jdbc:oracle:thin:@localhost:8080:orcl
		username: username
		password: password&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;위 설정을 살펴보면, &lt;br /&gt;db 세팅을 할때 datasource 라는 공통 구조는 한번만 작성하고 하위에 속하는 drvier-class-name, url, password 등의 구조를 선언하여 작성 할 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;.yml 파일에는 여러개의 profile을 정리하여 작성할 수 있다.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;application.properties&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;.properties 파일은 key = value 형식으로 서술되며 문자열만 사용이 가능하다. &lt;br /&gt;이 또한 아래 예시로 된 설정 파일을 살펴보자&lt;/p&gt;
&lt;pre class=&quot;java&quot; data-ke-language=&quot;java&quot;&gt;&lt;code&gt;#DB
spring.datasource.driver-class-name=oracle.jdbc.driver.OracleDriver
spring.datasource.url=jdbc:oracle:thin:@localhost:8080:orcl
spring.datasource.username=username
spring.datasource.password=password&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;.yml에서 설정한 DB 정보를 그대로 .properties 에 설정한 내용이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;하나의 .properties 파일은 하나의 profile만 가지고 있어야 하며 여러개의 properties 파일을 생성하여 사용할 수 있다.&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;application.properties 와 application.yml 파일에서 우선순위는 .properties 파일이 우선순위로 .yml 파일에서 설정한 내용이 덮어씌워질 수 있는 점은 주의하자.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&lt;span&gt;이 포스팅은 쿠팡 파트너스 활동의 일환으로&lt;/span&gt;&lt;span&gt;,&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot;&gt;&lt;b&gt;이에 따른 일정액의 수수료를 제공받습니다.&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;
&lt;script src=&quot;https://ads-partners.coupang.com/g.js&quot;&gt;&lt;/script&gt;
&lt;script&gt;
	new PartnersCoupang.G({&quot;id&quot;:775579,&quot;template&quot;:&quot;carousel&quot;,&quot;trackingCode&quot;:&quot;AF7322992&quot;,&quot;width&quot;:&quot;100%&quot;,&quot;height&quot;:&quot;100&quot;,&quot;tsource&quot;:&quot;&quot;});
&lt;/script&gt;
&lt;/p&gt;</description>
      <category>프로그래밍/Java</category>
      <category>.yml .properties</category>
      <category>application yml properties 차이점</category>
      <category>application.properties</category>
      <category>application.yml</category>
      <category>application.yml application.properties</category>
      <category>Spring Boot</category>
      <category>springboot</category>
      <author>개발생각11</author>
      <guid isPermaLink="true">https://thinksdev.tistory.com/133</guid>
      <comments>https://thinksdev.tistory.com/entry/SpringBoot-applicationyml-%EA%B3%BC-applicationproperties-%EC%B0%A8%EC%9D%B4%EC%A0%90#entry133comment</comments>
      <pubDate>Thu, 23 May 2024 20:46:33 +0900</pubDate>
    </item>
    <item>
      <title>[Vue3] onMounted</title>
      <link>https://thinksdev.tistory.com/entry/Vue3-onMounted</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;LifeCycle Hooks에는 크게 Creation(생성), Mounting(장착), Updating(변경), Destruction(소멸) 이렇게 4단계가 있으며 이번에는 장착 단계에서도 onMounted를 중점으로 Mounting(장착) 단계에 대해 알아보려한다.&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;Mounting(장착) 단계는 DOM에 컴포넌트를 삽입하는 단계이며, onBeforeMount와 onMounted가 있다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;서버 렌더링에서 지원하지 않는다.&lt;/li&gt;
&lt;li&gt;초기 렌더링 직전에 돔을 변경하고자 한다면 이 단계에서 활용할 수 있다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;onBeforeMount&lt;/b&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;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;onMounted&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;: 컴포넌트가 마운트된 후에 호출되며 DOM에 접근할 수 있는 단계이다. 또한, 모든 자식 컴포넌트가 마운트된 상태를 의미한다.&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;위에서 정의내린 onBeforeMount와 onMounted 단계를 아래 코드를 통해 차이를 알아보면&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;onMounted는 컴포넌트가 mounted 된 이후이기 때문에 접근이 가능하지만 beforeMount 에서는 mount가 완료되지 않아 null 값이 출력 되는 것을 볼 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1715613681647&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;lt;template&amp;gt;
    &amp;lt;div&amp;gt;
        &amp;lt;input ref=&quot;inputRef&quot; type=&quot;text&quot;&amp;gt;
    &amp;lt;/div&amp;gt;
&amp;lt;/template&amp;gt;

&amp;lt;script&amp;gt;
import { onBeforeMount, onMounted, ref } from 'vue';

export default {
    setup() {
        console.log('setup')
        const inputRef = ref(null)
        onBeforeMount(() =&amp;gt; {
            console.log('onBeforeMount', inputRef.value);
        });
        onMounted(() =&amp;gt; {
            console.log('onMounted', inputRef.value);
        });
        return { inputRef }
    }
}
&amp;lt;/script&amp;gt;&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;323&quot; data-origin-height=&quot;163&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/c2LDwA/btsHo5eiJkM/6lw4Lmht5RwVRdE60uaHc1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/c2LDwA/btsHo5eiJkM/6lw4Lmht5RwVRdE60uaHc1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/c2LDwA/btsHo5eiJkM/6lw4Lmht5RwVRdE60uaHc1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fc2LDwA%2FbtsHo5eiJkM%2F6lw4Lmht5RwVRdE60uaHc1%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;323&quot; height=&quot;163&quot; data-origin-width=&quot;323&quot; data-origin-height=&quot;163&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;추가적으로, 자식 컴포넌트를 하나 추가하여 자식 컴포넌트에서 Mounting 순서를 같이 출력해보면 부모 컴포넌트에서 먼저 setup 과 onBeforeMount 작업이 실행되고 자식 컴포넌트에서 mounted가 마무리 된 이후에 부모 컴포넌트 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;&lt;b&gt;Child Components&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1715613775659&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;lt;template&amp;gt;
    &amp;lt;div&amp;gt;

    &amp;lt;/div&amp;gt;
&amp;lt;/template&amp;gt;

&amp;lt;script&amp;gt;
import { onBeforeMount, onMounted } from 'vue'
export default {
    setup() {
        console.log('[Child] setup')
        onBeforeMount(() =&amp;gt; {
            console.log('[Child] onBeforeMount')
        })
        onMounted(() =&amp;gt; {
            console.log('[Child] onMounted')
        })

        return {}
    }
}
&amp;lt;/script&amp;gt;&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;&lt;b&gt; Parent Components&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1715613790178&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;lt;template&amp;gt;
    &amp;lt;div&amp;gt;
        &amp;lt;input ref=&quot;inputRef&quot; type=&quot;text&quot;&amp;gt;
        &amp;lt;LifeCycleChildVue&amp;gt;&amp;lt;/LifeCycleChildVue&amp;gt;
    &amp;lt;/div&amp;gt;
&amp;lt;/template&amp;gt;

&amp;lt;script&amp;gt;
import { onBeforeMount, onMounted, ref } from 'vue';
import LifeCycleChildVue from './components/LifeCycleChild.vue';

export default {
    components: {
        LifeCycleChildVue,
    },
    setup() {
        console.log('setup')
        const inputRef = ref(null)
        onBeforeMount(() =&amp;gt; {
            console.log('onBeforeMount', inputRef.value);
        });
        onMounted(() =&amp;gt; {
            console.log('onMounted', inputRef.value);
        });
        return { inputRef }
    }
}
&amp;lt;/script&amp;gt;

&amp;lt;style lang=&quot;scss&quot; scoped&amp;gt;&amp;lt;/style&amp;gt;&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;&lt;b&gt; 부모/자식 컴포넌트 Mounting 순서 출력 결과&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;357&quot; data-origin-height=&quot;211&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b9V8ni/btsHnggXWzS/NgkxaZsdoTZmjc3dC85pF0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b9V8ni/btsHnggXWzS/NgkxaZsdoTZmjc3dC85pF0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b9V8ni/btsHnggXWzS/NgkxaZsdoTZmjc3dC85pF0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb9V8ni%2FbtsHnggXWzS%2FNgkxaZsdoTZmjc3dC85pF0%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;357&quot; height=&quot;211&quot; data-origin-width=&quot;357&quot; data-origin-height=&quot;211&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 style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&lt;span&gt;이 포스팅은 쿠팡 파트너스 활동의 일환으로&lt;/span&gt;&lt;span&gt;,&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot;&gt;&lt;b&gt;이에 따른 일정액의 수수료를 제공받습니다.&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;script src=&quot;https://ads-partners.coupang.com/g.js&quot;&gt;&lt;/script&gt;
&lt;script&gt;
	new PartnersCoupang.G({&quot;id&quot;:775579,&quot;template&quot;:&quot;carousel&quot;,&quot;trackingCode&quot;:&quot;AF7322992&quot;,&quot;width&quot;:&quot;100%&quot;,&quot;height&quot;:&quot;100&quot;,&quot;tsource&quot;:&quot;&quot;});
&lt;/script&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>프로그래밍/Vue</category>
      <category>onMounted</category>
      <category>vue onmounted</category>
      <category>vue3 lifecycle</category>
      <category>vue3 lifecycle onmounted</category>
      <category>vue3 mounted</category>
      <category>vue3 onmounted</category>
      <category>vue3 라이프사이클 훅</category>
      <author>개발생각11</author>
      <guid isPermaLink="true">https://thinksdev.tistory.com/132</guid>
      <comments>https://thinksdev.tistory.com/entry/Vue3-onMounted#entry132comment</comments>
      <pubDate>Tue, 14 May 2024 00:24:05 +0900</pubDate>
    </item>
    <item>
      <title>[Vue3] Computed</title>
      <link>https://thinksdev.tistory.com/entry/Vue3-Computed</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt; 회사에서 Vue 개발을 하면서 computed를 사용하는 경우가 종종 있어 computed 에 대해 알아보려 한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #9d9d9d;&quot;&gt;&amp;nbsp;(학습을 위한 정리로 틀린 정보가 있다면 말씀 주시면 감사하겠습니다.)&lt;/span&gt;&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;&lt;b&gt;Computed 사용 및 함수와 차이점&lt;/b&gt;&lt;b&gt;&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&amp;lt;template&amp;gt; 내 삼항 연산자처리&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1714121878793&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;lt;template&amp;gt;
  &amp;lt;div&amp;gt;
    &amp;lt;h2&amp;gt;책 제목이 5글자 이상인 경우인가요?&amp;lt;/h2&amp;gt;
    &amp;lt;h3&amp;gt;{{ book.title.length &amp;gt; 5 ? '예' : '아니오' }}&amp;lt;/h3&amp;gt;
  &amp;lt;/div&amp;gt;
&amp;lt;/template&amp;gt;

&amp;lt;script&amp;gt;
import { reactive } from 'vue'
export default {
  setup() {
    const book = reactive({
      title: 'vue 학습 책입니다.',
      author: 'test'
    })
    return {
      book
    }
  }
}
&amp;lt;/script&amp;gt;&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;lsquo;책 제목이 5글자 이상&amp;rsquo;인 경우를 &amp;lt;template&amp;gt; 안에서 삼항 연산자를 통해 체크하여 &amp;lsquo;예&amp;rsquo; / &amp;lsquo;아니오&amp;rsquo; 로 출력해주고 있다. 하지만, 이와 같은 코드는 가독성이 떨어지기 때문에 &lt;span data-token-index=&quot;1&quot;&gt;computed &lt;/span&gt;또는 &lt;span data-token-index=&quot;3&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;b&gt; &lt;span data-token-index=&quot;0&quot;&gt;computed 사용&lt;/span&gt; &lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1714121984679&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;lt;template&amp;gt;
  &amp;lt;div&amp;gt;
    &amp;lt;h2&amp;gt;책 제목이 5글자 이상인 경우인가요?&amp;lt;/h2&amp;gt;
    &amp;lt;h3&amp;gt;{{ checkBookTitle}}&amp;lt;/h3&amp;gt;
  &amp;lt;/div&amp;gt;
&amp;lt;/template&amp;gt;

&amp;lt;script&amp;gt;
import { computed, reactive } from 'vue'
export default {
  setup() {
    const book = reactive({
      title: 'vue 학습 책입니다.',
      author: 'test'
    })

    const checkBookTitle= computed(() =&amp;gt; {
      return book.title.length &amp;gt; 5 ? '예' : '아니오'
    })

    return {
      book,
      checkBookTitle
    }
  }
}
&amp;lt;/script&amp;gt;&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;&lt;b&gt; &lt;span data-token-index=&quot;0&quot;&gt;method 사용&lt;/span&gt; &lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1714122001182&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;lt;template&amp;gt;
  &amp;lt;div&amp;gt;
    &amp;lt;h2&amp;gt;책 제목이 5글자 이상인 경우인가요?&amp;lt;/h2&amp;gt;
    &amp;lt;h3&amp;gt;{{ checkBookTitle }}&amp;lt;/h3&amp;gt;
    &amp;lt;h3&amp;gt;{{ methodBookTitle() }}&amp;lt;/h3&amp;gt;
  &amp;lt;/div&amp;gt;
&amp;lt;/template&amp;gt;

&amp;lt;script&amp;gt;
import { computed, reactive } from 'vue'
export default {
  setup() {
    const book = reactive({
      title: 'vue 학습 책입니다.',
      author: 'test'
    })

    const checkBookTitle = computed(() =&amp;gt; {
      return book.title.length &amp;gt; 5 ? '예' : '아니오'
    })

    const methodBookTitle = () =&amp;gt; {
      return book.title.length &amp;gt; 5 ? '예' : '아니오'
    }

    return {
      book,
      checkBookTitle,
      methodBookTitle
    }
  }
}
&amp;lt;/script&amp;gt;&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;위 코드와 같이 methodBookTitle() 함수와, checkBookTitle computed를 사용하여 함수명을 통해 어떤 것을 출력하고 싶은지 예측도 가능하게 된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;함수와, computed 호출 결과 두 코드는 모두 &lt;b&gt;&amp;lsquo;예&amp;rsquo;&lt;/b&gt; 로 같은 결과를 보여준다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그렇다면, 함수와 computed의 차이점을 확인해보면 computed는 cache 기능을 갖고 있다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1714122285087&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;lt;template&amp;gt;
  &amp;lt;div&amp;gt;
    &amp;lt;h2&amp;gt;책 제목이 5글자 이상인 경우인가요?&amp;lt;/h2&amp;gt;
    &amp;lt;h3&amp;gt;{{ checkBookTitle }}&amp;lt;/h3&amp;gt;
    &amp;lt;h3&amp;gt;{{ checkBookTitle }}&amp;lt;/h3&amp;gt;
    &amp;lt;h3&amp;gt;{{ methodBookTitle() }}&amp;lt;/h3&amp;gt;
    &amp;lt;h3&amp;gt;{{ methodBookTitle() }}&amp;lt;/h3&amp;gt;
  &amp;lt;/div&amp;gt;
&amp;lt;/template&amp;gt;

&amp;lt;script&amp;gt;
import { computed, reactive } from 'vue'
export default {
  setup() {
    const book = reactive({
      title: 'vue 학습 책입니다.',
      author: 'test'
    })

    const checkBookTitle = computed(() =&amp;gt; {
      console.log('computed')
      return book.title.length &amp;gt; 5 ? '예' : '아니오'
    })

    const methodBookTitle = () =&amp;gt; {
      console.log('methods')
      return book.title.length &amp;gt; 5 ? '예' : '아니오'
    }

    return {
      book,
      checkBookTitle,
      methodBookTitle
    }
  }
}
&amp;lt;/script&amp;gt;&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;위 코드에서 computed인 checkBookTitle 와 함수인 methodsBookTitle() 을 각각 2번씩 호출한 결과&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;console.log 가 어떻게 찍히는지 확인해보면, &amp;lsquo;computed&amp;rsquo; 는 한 번 그리고 methods는 두번 출력된 것을 볼 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;computed는 내부 데이터 값이 변경되지 않을 경우 cache된 데이터를 가져온다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;Untitled.png&quot; data-origin-width=&quot;1453&quot; data-origin-height=&quot;463&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dxx3Ev/btsGYnmJxOU/LIDuw0j3JoWJ3Ny11hk90K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dxx3Ev/btsGYnmJxOU/LIDuw0j3JoWJ3Ny11hk90K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dxx3Ev/btsGYnmJxOU/LIDuw0j3JoWJ3Ny11hk90K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fdxx3Ev%2FbtsGYnmJxOU%2FLIDuw0j3JoWJ3Ny11hk90K%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;1453&quot; height=&quot;463&quot; data-filename=&quot;Untitled.png&quot; data-origin-width=&quot;1453&quot; data-origin-height=&quot;463&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Computed get, set&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;computed의 경우 기본적으로 readonly 속성을 갖고 있어 새로운 값을 할당하려 하면 readonly warning이 뜬다. 이를 해결하기 위해 getter, setter 를 같이 활용해서 사용한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아래 소스는 readonly인 computed 값을 변경하려 할때 나오는 warning 예제와 이를 해결하기 위해 사용된 getter / setter 코드이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1714122342972&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;lt;template&amp;gt;
  &amp;lt;div&amp;gt;
    &amp;lt;h2&amp;gt;책 제목이 5글자 이상인 경우인가요?&amp;lt;/h2&amp;gt;
    &amp;lt;h3&amp;gt;{{ checkBookTitle }}&amp;lt;/h3&amp;gt;
    &amp;lt;h3&amp;gt;{{ checkBookTitle }}&amp;lt;/h3&amp;gt;
    &amp;lt;h3&amp;gt;{{ methodBookTitle() }}&amp;lt;/h3&amp;gt;
    &amp;lt;h3&amp;gt;{{ methodBookTitle() }}&amp;lt;/h3&amp;gt;
    &amp;lt;h2&amp;gt;author&amp;lt;/h2&amp;gt;
    &amp;lt;h3&amp;gt;{{ authorName }}&amp;lt;/h3&amp;gt;
  &amp;lt;/div&amp;gt;
&amp;lt;/template&amp;gt;

&amp;lt;script&amp;gt;
import { computed, reactive, ref } from 'vue'
export default {
  setup() {
    const book = reactive({
      title: 'vue 학습 책입니다.',
      author: 'test'
    })

    const checkBookTitle = computed(() =&amp;gt; {
      console.log('computed')
      return book.title.length &amp;gt; 5 ? '예' : '아니오'
    })

    const methodBookTitle = () =&amp;gt; {
      console.log('methods')
      return book.title.length &amp;gt; 5 ? '예' : '아니오'
    }

    const authorName = ref('락토')
    const changeName = computed(() =&amp;gt; authorName.value + '핏')

    console.log(changeName)
    changeName.value = '지은 이'

    return {
      book,
      checkBookTitle,
      methodBookTitle,
      authorName,
      changeName
    }
  }
}
&amp;lt;/script&amp;gt;&lt;/code&gt;&lt;/pre&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-filename=&quot;Untitled (1).png&quot; data-origin-width=&quot;1167&quot; data-origin-height=&quot;265&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/nzbdx/btsGZuSCW9j/nW7QlQxFWl3GaCHAP8k7pk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/nzbdx/btsGZuSCW9j/nW7QlQxFWl3GaCHAP8k7pk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/nzbdx/btsGZuSCW9j/nW7QlQxFWl3GaCHAP8k7pk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fnzbdx%2FbtsGZuSCW9j%2FnW7QlQxFWl3GaCHAP8k7pk%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;1167&quot; height=&quot;265&quot; data-filename=&quot;Untitled (1).png&quot; data-origin-width=&quot;1167&quot; data-origin-height=&quot;265&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;&lt;b&gt; &lt;span data-token-index=&quot;0&quot;&gt;Computed getter / setter 사용하여 처리&lt;/span&gt; &lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1714122374543&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;lt;template&amp;gt;
  &amp;lt;div&amp;gt;
    &amp;lt;h2&amp;gt;책 제목이 5글자 이상인 경우인가요?&amp;lt;/h2&amp;gt;
    &amp;lt;h3&amp;gt;{{ checkBookTitle }}&amp;lt;/h3&amp;gt;
    &amp;lt;h3&amp;gt;{{ checkBookTitle }}&amp;lt;/h3&amp;gt;
    &amp;lt;h3&amp;gt;{{ methodBookTitle() }}&amp;lt;/h3&amp;gt;
    &amp;lt;h3&amp;gt;{{ methodBookTitle() }}&amp;lt;/h3&amp;gt;
    &amp;lt;br /&amp;gt;
    &amp;lt;h2&amp;gt;author&amp;lt;/h2&amp;gt;
    &amp;lt;h3&amp;gt;{{ authorName }}&amp;lt;/h3&amp;gt;
  &amp;lt;/div&amp;gt;
&amp;lt;/template&amp;gt;

&amp;lt;script&amp;gt;
import { computed, reactive, ref } from 'vue'
export default {
  setup() {
    const book = reactive({
      title: 'vue 학습 책입니다.',
      author: 'test'
    })

    const checkBookTitle = computed(() =&amp;gt; {
      console.log('computed')
      return book.title.length &amp;gt; 5 ? '예' : '아니오'
    })

    const methodBookTitle = () =&amp;gt; {
      console.log('methods')
      return book.title.length &amp;gt; 5 ? '예' : '아니오'
    }

    const authorName = ref('락토')
    const changeName = computed({
      get() {
        console.log('get')
        return authorName.value
      },
      set(value) {
        console.log('set')
        authorName.value = value
      }
    })

    console.log(changeName.value)
    changeName.value = '지은 이'

    return {
      book,
      checkBookTitle,
      methodBookTitle,
      authorName,
      changeName
    }
  }
}
&amp;lt;/script&amp;gt;&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;※ Reference  &lt;br /&gt;&amp;nbsp;Vue Computed 공식 문서 :&amp;nbsp;&lt;a href=&quot;https://ko.vuejs.org/guide/essentials/computed&quot;&gt;&amp;nbsp;https://ko.vuejs.org/guide/essentials/computed&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1714122407417&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;Vue.js&quot; data-og-description=&quot;Vue.js - The Progressive JavaScript Framework&quot; data-og-host=&quot;vuejs.org&quot; data-og-source-url=&quot;https://ko.vuejs.org/guide/essentials/computed&quot; data-og-url=&quot;https://vuejs.org/&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/bko6oC/hyVVD8dadV/6FwQBXo2ekonwyZSH7Q3M0/img.png?width=400&amp;amp;height=400&amp;amp;face=0_0_400_400&quot;&gt;&lt;a href=&quot;https://ko.vuejs.org/guide/essentials/computed&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://ko.vuejs.org/guide/essentials/computed&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/bko6oC/hyVVD8dadV/6FwQBXo2ekonwyZSH7Q3M0/img.png?width=400&amp;amp;height=400&amp;amp;face=0_0_400_400');&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;Vue.js&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;Vue.js - The Progressive JavaScript Framework&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;vuejs.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 style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;이 포스팅은 쿠팡 파트너스 활동의 일환으로&lt;/span&gt;&lt;span&gt;,&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot;&gt;이에 따른 일정액의 수수료를 제공받습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;
&lt;script src=&quot;https://ads-partners.coupang.com/g.js&quot;&gt;&lt;/script&gt;
&lt;script&gt;
	new PartnersCoupang.G({&quot;id&quot;:775579,&quot;template&quot;:&quot;carousel&quot;,&quot;trackingCode&quot;:&quot;AF7322992&quot;,&quot;width&quot;:&quot;100%&quot;,&quot;height&quot;:&quot;100&quot;,&quot;tsource&quot;:&quot;&quot;});
&lt;/script&gt;
&lt;/p&gt;</description>
      <category>프로그래밍/Vue</category>
      <category>vue computed</category>
      <category>vue computed get</category>
      <category>vue computed get set</category>
      <category>vue computed method</category>
      <category>vue computed set</category>
      <category>vue computed 메소드 차이</category>
      <category>vue computed 함수 차이</category>
      <category>vue3 computed</category>
      <category>vue3 computed란</category>
      <author>개발생각11</author>
      <guid isPermaLink="true">https://thinksdev.tistory.com/130</guid>
      <comments>https://thinksdev.tistory.com/entry/Vue3-Computed#entry130comment</comments>
      <pubDate>Fri, 26 Apr 2024 18:11:10 +0900</pubDate>
    </item>
    <item>
      <title>[Baekjoon] #2805 나무 자르기</title>
      <link>https://thinksdev.tistory.com/entry/Baekjoon-2805-%EB%82%98%EB%AC%B4-%EC%9E%90%EB%A5%B4%EA%B8%B0</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1229&quot; data-origin-height=&quot;1558&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/zP5W2/btsGJTeZRK6/ty0kQ0CN69O27KcMgk29Kk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/zP5W2/btsGJTeZRK6/ty0kQ0CN69O27KcMgk29Kk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/zP5W2/btsGJTeZRK6/ty0kQ0CN69O27KcMgk29Kk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FzP5W2%2FbtsGJTeZRK6%2Fty0kQ0CN69O27KcMgk29Kk%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;1229&quot; height=&quot;1558&quot; data-origin-width=&quot;1229&quot; data-origin-height=&quot;1558&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;</description>
      <category>알고리즘/Baekjoon</category>
      <category>boj 2805</category>
      <category>boj 2805 java</category>
      <category>boj 2805 나무자르기</category>
      <category>백준 2805</category>
      <category>백준 2805 나무자르기</category>
      <category>백준 2805 자바</category>
      <category>백준 나무자르기 자바</category>
      <author>개발생각11</author>
      <guid isPermaLink="true">https://thinksdev.tistory.com/129</guid>
      <comments>https://thinksdev.tistory.com/entry/Baekjoon-2805-%EB%82%98%EB%AC%B4-%EC%9E%90%EB%A5%B4%EA%B8%B0#entry129comment</comments>
      <pubDate>Thu, 18 Apr 2024 23:17:43 +0900</pubDate>
    </item>
    <item>
      <title>[Baekjoon] #2839 설탕배달</title>
      <link>https://thinksdev.tistory.com/entry/Baekjoon-2839-%EC%84%A4%ED%83%95%EB%B0%B0%EB%8B%AC</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1184&quot; data-origin-height=&quot;1689&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/kPVpy/btsGLr9A3BE/6ypcNlsg34kfjnK0yCSTy1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/kPVpy/btsGLr9A3BE/6ypcNlsg34kfjnK0yCSTy1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/kPVpy/btsGLr9A3BE/6ypcNlsg34kfjnK0yCSTy1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FkPVpy%2FbtsGLr9A3BE%2F6ypcNlsg34kfjnK0yCSTy1%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;1184&quot; height=&quot;1689&quot; data-origin-width=&quot;1184&quot; data-origin-height=&quot;1689&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;pre id=&quot;code_1713449736041&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import java.util.Scanner;

public class Main {

	public static void main(String[] args) {
		// TODO Auto-generated method stub

		Scanner sc= new Scanner(System.in);
		
		int n = sc.nextInt();
		
		if (n == 4 || n == 7) {
			System.out.println(-1);
		}
		else if (n % 5 == 0) {
			System.out.println(n / 5);
		}
		else if (n % 5 == 1 || n % 5 == 3) {
			System.out.println((n / 5) + 1);
		}
		else if (n % 5 == 2 || n % 5 == 4) {
			System.out.println((n / 5) + 2);
		}
		
	}

}&lt;/code&gt;&lt;/pre&gt;</description>
      <category>알고리즘/Baekjoon</category>
      <category>BOJ 2839</category>
      <category>boj 2839 설탕배달</category>
      <category>백준 2839</category>
      <category>백준 2839 설탕배달</category>
      <category>백준 2839 설탕배달 자바</category>
      <category>백준 설탕배달</category>
      <category>백준 설탕배달 자바</category>
      <author>개발생각11</author>
      <guid isPermaLink="true">https://thinksdev.tistory.com/128</guid>
      <comments>https://thinksdev.tistory.com/entry/Baekjoon-2839-%EC%84%A4%ED%83%95%EB%B0%B0%EB%8B%AC#entry128comment</comments>
      <pubDate>Thu, 18 Apr 2024 23:16:19 +0900</pubDate>
    </item>
    <item>
      <title>[Baekjoon] #4485 녹색 옷 입은 애가 젤다지?</title>
      <link>https://thinksdev.tistory.com/entry/Baekjoon-4485-%EB%85%B9%EC%83%89-%EC%98%B7-%EC%9E%85%EC%9D%80-%EC%95%A0%EA%B0%80-%EC%A0%A4%EB%8B%A4%EC%A7%80</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1190&quot; data-origin-height=&quot;1819&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/FOhUv/btsGJPjpsvX/f6t9BfkwbuDCKStnBhjYEK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/FOhUv/btsGJPjpsvX/f6t9BfkwbuDCKStnBhjYEK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/FOhUv/btsGJPjpsvX/f6t9BfkwbuDCKStnBhjYEK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FFOhUv%2FbtsGJPjpsvX%2Ff6t9BfkwbuDCKStnBhjYEK%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;1190&quot; height=&quot;1819&quot; data-origin-width=&quot;1190&quot; data-origin-height=&quot;1819&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;pre id=&quot;code_1713449604998&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import java.util.Comparator;
import java.util.PriorityQueue;
import java.util.Scanner;

class Location{
	int x;
	int y;
	int w;
	
	public Location(int x, int y, int w) {
		// TODO Auto-generated constructor stub
		this.x = x;
		this.y = y;
		this.w = w;
	}
}

public class Main {
	
	static int n;
	static int[][] map;
	static int[][] dist;
	static PriorityQueue&amp;lt;Location&amp;gt; q;
	static int[][] visit;
	static int cnt = 0;
	
	public static void main(String[] args) {
		
		Scanner sc = new Scanner(System.in);
	
		while(true){
			
			n = sc.nextInt();
			if(n==0){
				return;
			}
			cnt++;
			map = new int[n][n];
			dist = new int[n][n];
			q = new PriorityQueue&amp;lt;&amp;gt;(new Comparator&amp;lt;Location&amp;gt;() {
				public int compare(Location l1, Location l2){
					return Integer.compare(l1.w, l2.w);
				}
			});
			visit = new int[n][n];
			
			
			for(int i=0;i&amp;lt;n;i++){
				for(int j=0;j&amp;lt;n;j++){
					map[i][j] = sc.nextInt();
					dist[i][j] = 999999;
				}
			}
			
			visit[0][0] = 1;
			dist[0][0] = map[0][0];
			q.offer(new Location(0, 0, map[0][0]));
			getDijkstra();
			System.out.println(&quot;Problem &quot;+cnt+&quot;: &quot;+dist[n-1][n-1]);
		}
	}
	
	public static void getDijkstra(){
		
		int[] xx = {-1,0,1,0};
		int[] yy = {0,1,0,-1};
		
		while(!q.isEmpty()){
			
			int x = q.peek().x;
			int y = q.poll().y;
			
			for(int i=0;i&amp;lt;4;i++){
				
				int ax = x+xx[i];
				int ay = y+yy[i];
				
				if(ax&amp;gt;=0 &amp;amp;&amp;amp; ay&amp;gt;=0 &amp;amp;&amp;amp; ax&amp;lt;n &amp;amp;&amp;amp; ay&amp;lt;n){
					if(dist[ax][ay] &amp;gt; dist[x][y] + map[ax][ay]){
						dist[ax][ay] = dist[x][y] + map[ax][ay];
						q.offer(new Location(ax, ay, map[ax][ay]));
					}
				}
				
			}
			
		}
	}
}&lt;/code&gt;&lt;/pre&gt;</description>
      <category>알고리즘/Baekjoon</category>
      <category>BOJ 4485</category>
      <category>boj 4485 녹색옷입은애가젤다지</category>
      <category>백준 4485</category>
      <category>백준 4485 녹색 옷 입은 애가 젤다지?</category>
      <category>백준 4485 녹색옷입은애가젤다지 자바</category>
      <author>개발생각11</author>
      <guid isPermaLink="true">https://thinksdev.tistory.com/127</guid>
      <comments>https://thinksdev.tistory.com/entry/Baekjoon-4485-%EB%85%B9%EC%83%89-%EC%98%B7-%EC%9E%85%EC%9D%80-%EC%95%A0%EA%B0%80-%EC%A0%A4%EB%8B%A4%EC%A7%80#entry127comment</comments>
      <pubDate>Thu, 18 Apr 2024 23:14:02 +0900</pubDate>
    </item>
    <item>
      <title>[Baekjoon] #4781 사탕 가게</title>
      <link>https://thinksdev.tistory.com/entry/Baekjoon-4781-%EC%82%AC%ED%83%95-%EA%B0%80%EA%B2%8C</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1207&quot; data-origin-height=&quot;1497&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bFMIhe/btsGK9BmTOA/MoWdLJovakxFgpKkNTFXeK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bFMIhe/btsGK9BmTOA/MoWdLJovakxFgpKkNTFXeK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bFMIhe/btsGK9BmTOA/MoWdLJovakxFgpKkNTFXeK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbFMIhe%2FbtsGK9BmTOA%2FMoWdLJovakxFgpKkNTFXeK%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;1207&quot; height=&quot;1497&quot; data-origin-width=&quot;1207&quot; data-origin-height=&quot;1497&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;pre id=&quot;code_1713449492484&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import java.util.ArrayList;
import java.util.Scanner;

//Q) 사탕가게
// # 4789
public class Main {

	public static void main(String[] args) {
		
		Scanner sc = new Scanner(System.in);
		
		boolean flag = true;
		ArrayList&amp;lt;Integer&amp;gt; ar = new ArrayList&amp;lt;&amp;gt;();
		
		while(flag){
			
			int n = sc.nextInt(); // 사탕의 개수
			float m = sc.nextFloat(); //상근이 돈
			int s_money = (int)(m*100+0.05);
			int[] dp = new int[s_money+1];
			
			if(n ==0 &amp;amp;&amp;amp; m ==0.00){
				flag = false;
				break;
			}
			
			int[] cal = new int[n]; //칼로리
			float[] price = new float[n]; //가격
			int[] candy_price = new int[n];
			
			for(int i=0;i&amp;lt;n;i++){
				cal[i] = sc.nextInt();
				price[i] = sc.nextFloat();
				candy_price[i] = (int)(price[i]*100+0.05);
			}
			
			dp[0] = 0;
			
			for(int i=1;i&amp;lt;=s_money;i++){
				for(int j=0;j&amp;lt;n;j++){
					if(i-candy_price[j]&amp;gt;=0){
						dp[i] = Math.max(dp[i-candy_price[j]]+cal[j], dp[i]);
					}
				}
			}
			
			ar.add(dp[s_money]);
		}
		for(int i=0;i&amp;lt;ar.size();i++){
			System.out.println(ar.get(i));
		}
	}
}&lt;/code&gt;&lt;/pre&gt;</description>
      <category>알고리즘/Baekjoon</category>
      <category>boj 4781</category>
      <category>boj 4781 사탕가게</category>
      <category>boj 4781 자바</category>
      <category>백준 4781</category>
      <category>백준 4781 사탕 가게</category>
      <category>백준 4781 사탕가게 자바</category>
      <category>백준 사탕가게</category>
      <category>백준 사탕가게 자바</category>
      <author>개발생각11</author>
      <guid isPermaLink="true">https://thinksdev.tistory.com/126</guid>
      <comments>https://thinksdev.tistory.com/entry/Baekjoon-4781-%EC%82%AC%ED%83%95-%EA%B0%80%EA%B2%8C#entry126comment</comments>
      <pubDate>Thu, 18 Apr 2024 23:12:19 +0900</pubDate>
    </item>
    <item>
      <title>[Baekjoon] #5054 주차의 신</title>
      <link>https://thinksdev.tistory.com/entry/Baekjoon-5054-%EC%A3%BC%EC%B0%A8%EC%9D%98-%EC%8B%A0</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1198&quot; data-origin-height=&quot;1325&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Fv1DI/btsGJn1LTBw/BllAgtzwpZ33Op8A2PB6qk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Fv1DI/btsGJn1LTBw/BllAgtzwpZ33Op8A2PB6qk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Fv1DI/btsGJn1LTBw/BllAgtzwpZ33Op8A2PB6qk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FFv1DI%2FbtsGJn1LTBw%2FBllAgtzwpZ33Op8A2PB6qk%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;1198&quot; height=&quot;1325&quot; data-origin-width=&quot;1198&quot; data-origin-height=&quot;1325&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;pre id=&quot;code_1713449385608&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import java.util.Arrays;
import java.util.Scanner;

//Q. 주차의 신

public class Main {

	public static void main(String[] args) {
		
		Scanner sc = new Scanner(System.in);
		int t = sc.nextInt();
		
		int[] result = new int[t];
		
		
		for (int i=0;i&amp;lt;t;i++){
			int distance=0;
			int n = sc.nextInt(); // 방문할 상정의 수 n
			
			int[] xi = new int[n]; //상점의 위치 xi
			
			for(int j=0;j&amp;lt;n;j++){
				 xi[j] = sc.nextInt();
			}
			
			Arrays.sort(xi);
			
			for(int j=1;j&amp;lt;n;j++){
				distance+=xi[j]-xi[j-1];
			}
			result[i]=distance*2;
		}
			
		for(int i=0;i&amp;lt;t;i++){
			System.out.println(result[i]);
		}
	}
}&lt;/code&gt;&lt;/pre&gt;</description>
      <category>알고리즘/Baekjoon</category>
      <category>BOJ 5054</category>
      <category>boj 5054 주차의 신</category>
      <category>백준 5054</category>
      <category>백준 5054 주차의 신</category>
      <category>백준 5054 주차의 신 자바</category>
      <category>백준 주차의 신</category>
      <author>개발생각11</author>
      <guid isPermaLink="true">https://thinksdev.tistory.com/125</guid>
      <comments>https://thinksdev.tistory.com/entry/Baekjoon-5054-%EC%A3%BC%EC%B0%A8%EC%9D%98-%EC%8B%A0#entry125comment</comments>
      <pubDate>Thu, 18 Apr 2024 23:10:22 +0900</pubDate>
    </item>
    <item>
      <title>[Baekjoon] #5567 결혼식</title>
      <link>https://thinksdev.tistory.com/entry/Baekjoon-5567-%EA%B2%B0%ED%98%BC%EC%8B%9D</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1200&quot; data-origin-height=&quot;1735&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/7MAXG/btsGIUTbCx8/gpdbvkKNwmzW25ZQKDK5uK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/7MAXG/btsGIUTbCx8/gpdbvkKNwmzW25ZQKDK5uK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/7MAXG/btsGIUTbCx8/gpdbvkKNwmzW25ZQKDK5uK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F7MAXG%2FbtsGIUTbCx8%2FgpdbvkKNwmzW25ZQKDK5uK%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;1200&quot; height=&quot;1735&quot; data-origin-width=&quot;1200&quot; data-origin-height=&quot;1735&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;pre id=&quot;code_1713449253407&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import java.util.LinkedList;
import java.util.Queue;
import java.util.Scanner;

class Location5567{
	int idx;
	
	public Location5567(int idx) {
		// TODO Auto-generated constructor stub
		this.idx = idx;
	}
}

public class Main {

	static int n;
	static int m;
	static int[][] friendsMap;
	static int[] visit;
	static Queue&amp;lt;Integer&amp;gt; q = new LinkedList&amp;lt;Integer&amp;gt;();
	static int friendsCnt =0;
	
	public static void main(String[] args) {
		// TODO Auto-generated method stub

		Scanner sc = new Scanner(System.in);
		n = sc.nextInt();
		m = sc.nextInt();
		friendsMap = new int[n+1][n+1];
		visit = new int[n+1];
		
		for(int i=0;i&amp;lt;m;i++) {
			int a = sc.nextInt();
			int b = sc.nextInt();
			
			friendsMap[a][b] = 1;
			friendsMap[b][a] = 1;
			
			if(a == 1) {
				q.add(b);
				visit[b] =1;
			}
		}
		
		getBfs();
		
		for(int i=1;i&amp;lt;n+1;i++) {
			if(visit[i] == 1) {
				friendsCnt++;
			}
		}
		System.out.println(friendsCnt);
	}

	public static void getBfs() {
		while(!q.isEmpty()) {
			int idx = q.poll();
			visit[idx] =1;
			
			for(int j=2;j&amp;lt;=n;j++) {
				if(friendsMap[idx][j] == 1 &amp;amp;&amp;amp; visit[j] == 0) {
					visit[j] = 1;
				}
			}		
		}
	}
}&lt;/code&gt;&lt;/pre&gt;</description>
      <category>알고리즘/Baekjoon</category>
      <category>BOJ 5567</category>
      <category>BOJ 5567 결혼식</category>
      <category>BOJ 5567 결혼식 자바</category>
      <category>백준 5567</category>
      <category>백준 5567 결혼식</category>
      <category>백준 5567 결혼식 자바</category>
      <author>개발생각11</author>
      <guid isPermaLink="true">https://thinksdev.tistory.com/124</guid>
      <comments>https://thinksdev.tistory.com/entry/Baekjoon-5567-%EA%B2%B0%ED%98%BC%EC%8B%9D#entry124comment</comments>
      <pubDate>Thu, 18 Apr 2024 23:08:17 +0900</pubDate>
    </item>
  </channel>
</rss>