<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>rlagudwls5518 님의 블로그</title>
    <link>https://rlagudwls5518.tistory.com/</link>
    <description>rlagudwls5518 님의 블로그 입니다.</description>
    <language>ko</language>
    <pubDate>Wed, 27 May 2026 05:40:15 +0900</pubDate>
    <generator>TISTORY</generator>
    <ttl>100</ttl>
    <managingEditor>rlagudwls5518</managingEditor>
    <item>
      <title>컴파일러 vs 인터프리터</title>
      <link>https://rlagudwls5518.tistory.com/18</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;328&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/sH41I/dJMcajuMaVR/4GpX93eKJ86shYrD5LUHo1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/sH41I/dJMcajuMaVR/4GpX93eKJ86shYrD5LUHo1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/sH41I/dJMcajuMaVR/4GpX93eKJ86shYrD5LUHo1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FsH41I%2FdJMcajuMaVR%2F4GpX93eKJ86shYrD5LUHo1%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;328&quot; data-origin-width=&quot;1184&quot; data-origin-height=&quot;328&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&quot;&gt;C, C++, Java 프로그래밍을 해봤으면 작성한 소스 코드를&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;빌드&lt;/b&gt;&lt;b&gt;(Build)&lt;/b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;혹은&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;컴파일(Compile)&lt;/b&gt;해서 실행해봤거나 코드를 잘못 작성하여 컴파일 에러가 났던 경험이 있을 것이다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&quot;&gt;그래서 컴파일을 알아보고 그에 반대되는 인터프리터 언어까지 알아보자&lt;/span&gt;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;컴파일이란?&lt;/b&gt;&amp;nbsp;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;컴파일은 인간이 이해할 수 있는 언어(고수준 언어)로 작성된 소스코드를 CPU가 이해 할 수 있는 언어(저수준 언어)로 번역(변환)하는 작업을 말한다&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;컴파일 과정&lt;/b&gt;&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;467&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bJu45k/dJMcagkwPWF/DNcOUmSuEUNFkjqqN6zdfK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bJu45k/dJMcagkwPWF/DNcOUmSuEUNFkjqqN6zdfK/img.png&quot; data-alt=&quot;컴파일 과정&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bJu45k/dJMcagkwPWF/DNcOUmSuEUNFkjqqN6zdfK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbJu45k%2FdJMcagkwPWF%2FDNcOUmSuEUNFkjqqN6zdfK%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;1280&quot; height=&quot;467&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;467&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;컴파일 과정은 4가지 단계를 거친다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;전처리 -&amp;gt; 컴파일 -&amp;gt; 어셈블리 -&amp;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;이 4가지 단계를 묶어서 컴파일 과정, 빌드 과정이라고 부르기도 하고 컴파일 과정, 링킹과정 따로 나눠서 부르기도 한다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;전처리 과정&lt;/b&gt;&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;956&quot; data-origin-height=&quot;604&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/YXjZt/dJMcacWJn6E/9SKuGEMCcK5J9HZKJg4XJ0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/YXjZt/dJMcacWJn6E/9SKuGEMCcK5J9HZKJg4XJ0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/YXjZt/dJMcacWJn6E/9SKuGEMCcK5J9HZKJg4XJ0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FYXjZt%2FdJMcacWJn6E%2F9SKuGEMCcK5J9HZKJg4XJ0%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;500&quot; height=&quot;316&quot; data-origin-width=&quot;956&quot; data-origin-height=&quot;604&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&quot;&gt;&lt;b&gt;전처리(Pre-processing) 과정&lt;/b&gt;은 전처리기(Preprocessor)를 통해 소스 코드 파일(*.c)을 전처리된 소스 코드 파일(*.i)로 변환하는 과정이다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&quot;&gt;이 과정에서 대표적으로&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;세 가지 작업&lt;/b&gt;을 수행한다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size18&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;주석 제거&amp;nbsp;: 소스 코드에서&amp;nbsp;주석을 전부 제거한다. 주석은 사람들이 알아볼 수 있게 남긴 내용이지 컴퓨터가 알 필요는 없기 때문이다.&lt;/li&gt;
&lt;li&gt;헤더 파일 삽입&amp;nbsp;: #include 지시문을 만나면 해당하는 헤더 파일을 찾아&amp;nbsp;헤더 파일에 있는 모든 내용을 복사해서 소스 코드에 삽입한다. 즉, 헤더 파일은 컴파일에 사용되지 않고 소스 코드 파일 내에 전부 복사된다. 헤더 파일에 선언된 함수 원형은 후에 링킹 과정을 통해 실제로 함수가 정의되어 있는 오브젝트 파일(컴파일된 소스 코드 파일)과 결합한다.&lt;/li&gt;
&lt;li&gt;매크로 치환 및 적용&amp;nbsp;: #define 지시문에 정의된 매크로를 저장하고 같은 문자열을 만나면&amp;nbsp;#define 된 내용으로 치환한다. 간단하게 말해 매크로 이름을 찾아서 정의한 값으로 전부 바꿔준다.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;컴파일 과정&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span data-phocus=&quot;https://blog.kakaocdn.net/dna/bLTLoJ/btrdpsDQiXD/AAAAAAAAAAAAAAAAAAAAANrCVlEwXLA_BOEbA8DEgA2MNX23nPo18o9o_SaCcBvy/img.png?credential=yqXZFxpELC7KVnFOS48ylbz2pIh7yKj8&amp;amp;expires=1774969199&amp;amp;allow_ip=&amp;amp;allow_referer=&amp;amp;signature=7cl3sP%2F0hztu8pD4OBNTgDVBn14%3D&quot; data-url=&quot;https://blog.kakaocdn.net/dna/bLTLoJ/btrdpsDQiXD/AAAAAAAAAAAAAAAAAAAAANrCVlEwXLA_BOEbA8DEgA2MNX23nPo18o9o_SaCcBvy/img.png?credential=yqXZFxpELC7KVnFOS48ylbz2pIh7yKj8&amp;amp;expires=1774969199&amp;amp;allow_ip=&amp;amp;allow_referer=&amp;amp;signature=7cl3sP%2F0hztu8pD4OBNTgDVBn14%3D&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;956&quot; data-origin-height=&quot;364&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/blc1xB/dJMcafTtURZ/ytRky5cjiiKzxHXFtEqSZ0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/blc1xB/dJMcafTtURZ/ytRky5cjiiKzxHXFtEqSZ0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/blc1xB/dJMcafTtURZ/ytRky5cjiiKzxHXFtEqSZ0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fblc1xB%2FdJMcafTtURZ%2FytRky5cjiiKzxHXFtEqSZ0%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;500&quot; height=&quot;190&quot; data-origin-width=&quot;956&quot; data-origin-height=&quot;364&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&quot;&gt;&lt;b&gt;컴파일(Compilation) 과정&lt;/b&gt;은 컴파일러(Compiler)를 통해 전처리된 소스 코드 파일(*.i)을 어셈블리어 파일(*.s)로 변환하는 과정이다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&quot;&gt;이 과정에서 우리가 일반적으로 컴파일하면 생각하는&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;언어의 문법 검사&lt;/b&gt;가 이루어진다. 또한&lt;b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;Static한 영역(Data, BSS 영역)들의 메모리 할당&lt;/b&gt;을 수행한다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&quot;&gt;여기서 컴파일 과정을 거친 후부터 기계어라고 한다&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&quot;&gt;텍스트 파일을 열어보면 파일이 외계어 처럼 깨져보인다&amp;nbsp;&amp;nbsp;&lt;/span&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;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;인터프리터 언어란?&lt;/b&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;/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;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;6,0,0&quot;&gt;중간 단계 없음:&lt;/b&gt; 컴파일 과정이 없으므로, 코드를 수정하고 바로 실행가능&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;6,1,0&quot;&gt;플랫폼 독립성:&lt;/b&gt; 소스 코드만 있으면 인터프리터가 설치된 어떤 운영체제(Windows, Linux, macOS 등)에서도 동일하게 실행&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;6,2,0&quot;&gt;동적 타이핑:&lt;/b&gt; 실행 시점에 변수의 타입을 결정하는 경우가 많아 코딩이 자유롭고 유연하다&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&amp;nbsp;&lt;/h3&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;컴파일 언어와 인터프리터 언어 핵심 차이&lt;/b&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%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 33.3333%;&quot;&gt;구분&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%;&quot;&gt;컴파일 언어&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%;&quot;&gt;인터프리터 언어&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 33.3333%;&quot;&gt;번역 단위&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%;&quot;&gt;소스코드 전체를 한꺼번에 번역&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%;&quot;&gt;코드를 한 줄씩 읽으며 즉시 실행&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 33.3333%;&quot;&gt;실행 방식&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%;&quot;&gt;목적파일 생성&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%;&quot;&gt;별도의 실행 파일 생성 안함&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 33.3333%;&quot;&gt;실행 속도&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%;&quot;&gt;매우 빠름(이미 번역된 파일 실행)&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%;&quot;&gt;상대적으로 느림(실행 시마다 번역)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 33.3333%;&quot;&gt;수정 / 디버깅&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%;&quot;&gt;코드 수정 후 다시 컴파일 필요&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%;&quot;&gt;코드 수정 후 즉시 확인 가능&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 33.3333%;&quot;&gt;대표언어&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%;&quot;&gt;C, C++, Rust, Go&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%;&quot;&gt;Python, JavaScript&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;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;자바에서의 컴파일&lt;/b&gt;&amp;nbsp;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;자바에서 컴파일은 일반적인 컴파일 언어들과는 다르게 2단계 구조를 가진다&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;1단계 : 자바 컴파일러(javac)&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;우리가 작성한 .java 소스코드를 자바 바이트코드인 .class.로 변환&lt;/li&gt;
&lt;li&gt;이 바이트 코드는 컴퓨터가 바로 읽을 수 있는 기계어가 아니라 JVM(자바 가상머신)이라는 프로그램이 이해 할 수 있는 중간어어&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2단계 : JVM의 인터프리터 &amp;amp; JIT 컴파일러&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;프로그램을 실행할 때, JVM이 .class파일을 읽어서 해단 운영체제가 이해할 수 있는 진짜 기계어로 바꾸어 실행함&lt;/li&gt;
&lt;/ul&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;u&gt;자바에서 컴파일 이란 인간의 언어(java.c)를 가상 머신이 이해하는 언어(.class, 바이트 코드)로 번역하는 과정을 의미&lt;/u&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;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>자기개발</category>
      <author>rlagudwls5518</author>
      <guid isPermaLink="true">https://rlagudwls5518.tistory.com/18</guid>
      <comments>https://rlagudwls5518.tistory.com/18#entry18comment</comments>
      <pubDate>Sat, 21 Mar 2026 14:18:35 +0900</pubDate>
    </item>
    <item>
      <title>DFS</title>
      <link>https://rlagudwls5518.tistory.com/17</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;깊이 우선탐색은 그래프나 트리에서 한 방향으로 갈수있는 곳 까지 끝가지 탐색해보고,&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;더 이상 갈 곳이 없으면 뒤로 돌아와서 다른 길을 찾는 알고리즘&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt; 필수 준비물 2가지&lt;/h3&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;방문 기록부(visited 배열) : 한번 방문한 노드를 다시 방문 하지 않도록 체크&lt;/li&gt;
&lt;li&gt;인접 리스트 : 각 노드에서 어느 노드로 이동 할 수있는지 정도를 저장&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;⚙️DFS의 핵심 동작 순서&lt;/h3&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;현재 노드 방문 처리: visited[now] = true;&lt;/li&gt;
&lt;li&gt;현재 노드 출력 / 처리: 필요하다면 현재 노드 번호를 출력하거나 정답 변수에 계산을 수행함&lt;/li&gt;
&lt;li&gt;인접 노드 확인: 현재 노드와 연결된 다른 노드들을 하나씩 살펴보기&lt;/li&gt;
&lt;li&gt;조건부 재귀 호출 : 인접노드가 아직 방문하지 않았다면(!visited[next])
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;그 노드를 대상으로 다시 DFS 함수 재귀호출( 더 깊이 들어감)&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt; DFS 대표적인 유형&lt;/h3&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;연결된 덩어리 찾기 : 섬이 몇개인가?, 아파트 단지가 몇 개인가?
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;동작방식: 지도를 훑다가 섬(1)을 발견하면 그지점에서 DFS를 시작 상하좌우 연결된 모든 섬을 다 방문 할 때까지 깊게 들어감&lt;/li&gt;
&lt;li&gt;핵심 : 한번의 DFS가 끝나면 덩어리 1개를 찾은 것, 방문 체크를 확실히해서 중복을 막아야함&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li&gt;모든 경우의 수 탐색(백트래킹): 모든 갈림길을 다 가보되, 조건에 안맞으면 돌아오는 상황
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;동작 방식: 1번칸에 숫자를 놓고, 2번칸에 숫자를 놓고.. 끝까지 가보고 만약 끝(리프노드)에 도달 했는데 정답이 아니라면 바로 전 단계로 돌아와서 다른 숫자를 놓아봅니다&lt;/li&gt;
&lt;li&gt;핵심 : 재귀 함수를 호출 하기 전에 전 후로 상태를 복구하는 과정&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li&gt;경로의 특징을 저장 해야할 때: A에서 B지점으로 가는 경로 중에 특정 조건을 만족하는 경로가 있는가?
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;동작방식 : 지금 내가 지나온 경로를 스택에 담고 있다&lt;/li&gt;
&lt;li&gt;핵심 : 경로마다 점수가 있거나, 특정 지점을 반드시 거쳐야 하는 등의 제약조건이 복잡 할때&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li&gt;트리 구조의 순회 : 데이터가 계층형( 부모, 자식)으로 되어있을때, 가장 밑바닥까지 내려가서 정보를 수집해 올라오는 경우
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;동작 방식: 자식 노드들의 값을 다 더해서 부모 노드에게 전달하는 식의 상향식 계산이 필요할 때 유용&lt;/li&gt;
&lt;li&gt;핵심 : 재귀의 반환 값을 활용하여 바텀 업으로 정보를 전달&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt; &lt;/b&gt;격자 문제 테크닉&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;상하좌우 방향 배열( dx, dy 테크닉)&lt;/b&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;/ul&gt;
&amp;nbsp;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;dx = {-1, 1, 0, 0} : 행의 변화량(위 아래)&lt;/li&gt;
&lt;li&gt;dy = {0, 0, -1, 1} : 열의 변화량(왼쪽, 오른쪽)&lt;/li&gt;
&lt;li&gt;사용법 : for문을 4번 돌리면서 nx = x + dx[i], ny = y + dy[i]를 구함&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;경계 검사
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;새로운 좌표 (nx, ny)를 구했다면, 그 좌표가 지도의 범위 안에 있는지 반드시 확인 해야함
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;조건식 : 보통 다음과 같은 조건을 체크0 &amp;le; ny &amp;lt; N(열의 범위)&lt;/li&gt;
&lt;li&gt;0 &amp;le; nx &amp;lt; N(행의 범위)&lt;/li&gt;
&lt;/ol&gt;
이 조건은 보통 if 문의 가장 처음에 위치 시켜서, 범위 밖일 경우 바로 continue 시키는 것이 깔금&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li&gt;입력 처리
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;2667번(아파트 단지번호) 처럼 01101 처럼 공백없이 들어올 경우
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;br.readLine으로 한줄 통채로 받고 line.charAt(j) - '0'을 사용하여 문자를 숫자로 변환합니다.&lt;/li&gt;
&lt;li&gt;String[] row = br.readLine().split(&quot;&quot;); 로 하거나&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li&gt;전체 탐색과 단지별 탐색의 분리(격자 문제에서 &amp;lsquo;덩어리&amp;rsquo;를 찾을 때는 이중 루프와 DFS의 역할분담이 중요하다
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;이중루프 : 지도의 모든 칸을 하나씩 확인 합니다
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;여기에 집이 잇고, 아직 방문을 안했네?? 라고 발견하면 DFS 호출&lt;/li&gt;
&lt;li&gt;이 지점이 단지의 시작 점임&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;면접 질문&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;DFS와 BFS의 차이점을 설명하고 각각 어떤 상황에서 사용하는 것이 유리한가?&lt;/b&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;BFS는 인접 노드 부터 넓게 탐색하며 큐를 사용하고 최단경로를 찾을때 유리하다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;DFS는 미로에서 한우물만 파는 느낌이고 BFS는 물결이 퍼져나가는 느낌이다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;DFS는 한 경로를 끝까지 탐색하고 재귀나 스택을 사용해서 모든노드를 방문해야 하거나 경로의 특징(제약)이 있는 경우를 저장할때 유리하다&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;DFS 시공간 복잡도는 어떻게 되나?&lt;/b&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;공간 복잡도는 방문 배열과 재귀 호출 스택이 필요 하므로 O(V)입니다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;최악의 경우(일렬로 연결된 그래프) 스택의 깊이가 노드의 개수만큼 깊이가 길어질 수 있다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;시간복잡도는 노드의 개수를 V, 간선의 개수를 E라고 할때, 인접리스트로 구현하면 O(V+E) 입니다 모든 정점과 간선을 한번씩 확인하기 때문입니다.(인접행렬은 O(V^2) )&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;DFS를 재귀로 구현 할때 발생할 수 있는 문제점과 해결방안은?&lt;/b&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그런데 자바의 경우는 JVM의 기본 스택 사이즈가 제한 적이기 때문이다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;해결방안: 재귀 대신 명시적인 스택 자료 구조를 사용하는 반복문 방식의 DFS로 구현하거나 문제의 조건에 따라 BFS를 고려해 볼 수 있다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;문제점은 노드의 개수가 많아지면(깊이가 깊어지면) 스택오버플로우가 발생 할 수 있다.&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;그래프에서 사이클이 있는지 확인 하려면 어떻게 해야 할까여?&lt;/b&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;DFS를 사용할 것 같습니다 왜냐하면 탐색과정에서 현재 탐색중인 경로(스택에 들어있는 노드들)에 이미 있는 노드를 다시 만나게 된다면 사이클이 존재한다고 판단 할 수 있다&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;아주 넓고 얇은 트리와 아주 좁고 깊은 트리 중 DFS가 더 효율 적인 경우는 언제인가요&lt;/b&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;반대로 최단 거리를 찾는 문제라면 트리의 모양과 상관없이 BFS가 유리합니다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;넓고 얇은 트리가 더 효율적일 가능성이 높습니다 트리가 너무 깊으면 DFS는 스택 메모리를 많이 사용하고 정답을 찾는데 시간이 오래 걸릴 수 있지만 넓고 얖으면 금방 바닥을 찍고 돌아오기 때문입니다&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;DFS에서 visited 배열을 사용하지 않으면 어떤일이 벌어질까요?&lt;/b&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;방문 처리를 하지 않으면 사이클이 존재하는 그래프에서 &lt;b&gt;무한 루프&lt;/b&gt;에 빠지게 됩니다. 이는 결국 스택 오버플로우를 발생시켜 프로그램이 비정상 종료되는 원인이 됩니다. 따라서 DFS의 정당성과 효율성을 보장하기 위해 visited 배열을 통한 방문 체크는 필수적입니다.&lt;/p&gt;</description>
      <category>알고리즘</category>
      <author>rlagudwls5518</author>
      <guid isPermaLink="true">https://rlagudwls5518.tistory.com/17</guid>
      <comments>https://rlagudwls5518.tistory.com/17#entry17comment</comments>
      <pubDate>Sun, 18 Jan 2026 15:28:14 +0900</pubDate>
    </item>
    <item>
      <title>전혀 우아하지 않은... 우아하지 않았던...</title>
      <link>https://rlagudwls5518.tistory.com/16</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;우테코 1차도 못붙고&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;/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;또또 남들과 비교하는 병이 도져서&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;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;최소한 1차라도 붙으면 프리코스 기간을 열심히 했다는 반증이 되지만&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;히어로 테크 하고싶었지만&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그렇다고 1년동안 준비해서 다시 도전?은 진짜 최후의 보루다&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; 중소기업이라도 이력서를 써봐라 사회생활 안할거냐&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;에휴우&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;프리코스를 통해 뭐를&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;
&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;1티어 부트캠프를 가고싶은 마음은 크지만 4월에 싸피를 기다리는게.. 붙을거라는 확신도 없고&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;4월에 싸피&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;하반기에는 네이버 부스트캠프, LG유레카도 해보고&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;일단 올해 최종 4분기까지 목표는 물론 취업이 1순위고&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;/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;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&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;</description>
      <category>자기개발</category>
      <author>rlagudwls5518</author>
      <guid isPermaLink="true">https://rlagudwls5518.tistory.com/16</guid>
      <comments>https://rlagudwls5518.tistory.com/16#entry16comment</comments>
      <pubDate>Sat, 17 Jan 2026 17:58:24 +0900</pubDate>
    </item>
    <item>
      <title>[우테코 최종코테준비] 8기 프리코스 2주차 자동차경주게임 리팩토링 회고</title>
      <link>https://rlagudwls5518.tistory.com/15</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;다시 초심으로 돌아가야해&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;/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;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;이름을&amp;nbsp;파싱&amp;nbsp;-&amp;gt;&amp;nbsp;공장으로&amp;nbsp;보내서&amp;nbsp;dto로&amp;nbsp;가공&amp;nbsp;-&amp;gt;&amp;nbsp;서비스 &lt;/li&gt;
&lt;li&gt;객체 생성은 어디에서 하는가 &lt;br /&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;1.&amp;nbsp;UI흐름에&amp;nbsp;대한&amp;nbsp;객체는&amp;nbsp;컨트롤러 &lt;/li&gt;
&lt;li&gt;2. 실행적인 로직에 대한 객체는 서비스&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&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;br /&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;&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;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>우아한테크코스 8기 프리코스</category>
      <author>rlagudwls5518</author>
      <guid isPermaLink="true">https://rlagudwls5518.tistory.com/15</guid>
      <comments>https://rlagudwls5518.tistory.com/15#entry15comment</comments>
      <pubDate>Mon, 8 Dec 2025 22:37:11 +0900</pubDate>
    </item>
    <item>
      <title>DevFest 후기</title>
      <link>https://rlagudwls5518.tistory.com/14</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;오늘 송도 컨벤시아에서 진행하는 DevFest 컨퍼런스에 다녀왔다.&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;/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;size16&quot;&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;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;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;내가 오늘 강의 총 3개를 들었다&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;검정고시에서 구글까지 불안을 이기는 긴 호흡의 힘&lt;/b&gt; - 임현욱님&lt;/li&gt;
&lt;li&gt;&lt;b&gt;개발자의 다음 챕터: 기술을 넘어 나를 성장시키는 법&lt;/b&gt; - 차지현님, 이상아님, 이수형님&lt;/li&gt;
&lt;li&gt;&lt;b&gt;문과생에서 빅테크 개발자로 북미 취업 실전 전략&lt;/b&gt; - 안혜선님&lt;/li&gt;
&lt;/ul&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;검정고시에서 구글까지 불안을 이기는 긴 호흡의 힘&lt;/b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;- 임현욱님&lt;/h4&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;/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;뭘 해야하지 등등&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;
&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;&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;서른이라는 나이에 12년동안의 게임 기획자를 접고 개발자를 하기위해 캐나다 영주권 취득에&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;UBC대학 입학해서 구글에 입사까지 8년?이 걸린 것 같은데 진짜 하이리스크 하이리턴이라고 생각하는데&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;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;알바해서 워홀로 가볼까라는 생각을 잠깐 해봤다&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;KakaoTalk_20251206_215034428_15.jpg&quot; data-origin-width=&quot;3024&quot; data-origin-height=&quot;4032&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b6ffO2/dJMcaihwrXJ/V4cPjuhXPDpAcXtn9DlN0k/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b6ffO2/dJMcaihwrXJ/V4cPjuhXPDpAcXtn9DlN0k/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b6ffO2/dJMcaihwrXJ/V4cPjuhXPDpAcXtn9DlN0k/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb6ffO2%2FdJMcaihwrXJ%2FV4cPjuhXPDpAcXtn9DlN0k%2Fimg.jpg&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;400&quot; height=&quot;533&quot; data-filename=&quot;KakaoTalk_20251206_215034428_15.jpg&quot; data-origin-width=&quot;3024&quot; data-origin-height=&quot;4032&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;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&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;/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;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;개발자의 다음 챕터: 기술을 넘어 나를 성장시키는 법&lt;/b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;- 차지현님, 이상아님, 이수형님&lt;/h4&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;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;강연리스트에는 우테코 코치라는게 안나와서 몰랐는데;;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;우테코 8기를 지원한 나로써 되게 반가웠다&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;/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;
&lt;p data-ke-size=&quot;size16&quot;&gt;속으로 다행이다라고 생각 했다 나 2천자 정도밖에 안섰는데.. 아 근데 너무 적었나?..&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;첫번째로 소프트 스킬이 발전했다라는 것을 확신 할 수 없는 경우가 많은데 우테코에서는 어떻게 평가를 하는지?&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;이 세가지인데 먼저 첫번째는 여섯번정도 우테코 기간동안 설문을 하면서 뭐 한다던데&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;두번째는 질문이었는데 이직 준비하시는 분인데 블로그로 자기를 어필하고싶은데 특별한 방법이 있는지 였나?&amp;nbsp; &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;
&lt;p data-ke-size=&quot;size16&quot;&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;마지막으로는 자신의 강점 약점을 파악하고 어느부분을 내가 잘하는지&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;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;문과생에서 빅테크 개발자로 북미 취업 실전 전략&lt;/b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;- 안혜선님&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&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;함께 캐나다를 가서 대학에 같이 입학하고 같이 졸업하시고&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;이번섹션에서는 해외취업뿐아니라 국내취업에도 많이 도움이 될 것 같았는데 특히&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-filename=&quot;KakaoTalk_20251206_215034428_08.jpg&quot; data-origin-width=&quot;3024&quot; data-origin-height=&quot;4032&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/RMspj/dJMcagqs9rG/ZgOepEMgtOBi8MF8ccadR0/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/RMspj/dJMcagqs9rG/ZgOepEMgtOBi8MF8ccadR0/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/RMspj/dJMcagqs9rG/ZgOepEMgtOBi8MF8ccadR0/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FRMspj%2FdJMcagqs9rG%2FZgOepEMgtOBi8MF8ccadR0%2Fimg.jpg&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;400&quot; height=&quot;533&quot; data-filename=&quot;KakaoTalk_20251206_215034428_08.jpg&quot; data-origin-width=&quot;3024&quot; data-origin-height=&quot;4032&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;p data-ke-size=&quot;size16&quot;&gt;노력을 해야한다고 하셨다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그중에서 7초의 법칙이라고 담당자가 이력서를 한번 보는데에 걸리는 시간이 7.34초라고 한다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그렇기 때문에 7초안에 내가 가장 잘하는 경험을 압축해서 두괄식으로 표현을 해야한다&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-filename=&quot;KakaoTalk_20251206_215034428_04.jpg&quot; data-origin-width=&quot;3024&quot; data-origin-height=&quot;4032&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bgfdjm/dJMcacVT9QC/hBepAzK4FIpeS1166Kl5I1/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bgfdjm/dJMcacVT9QC/hBepAzK4FIpeS1166Kl5I1/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bgfdjm/dJMcacVT9QC/hBepAzK4FIpeS1166Kl5I1/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbgfdjm%2FdJMcacVT9QC%2FhBepAzK4FIpeS1166Kl5I1%2Fimg.jpg&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;400&quot; height=&quot;533&quot; data-filename=&quot;KakaoTalk_20251206_215034428_04.jpg&quot; data-origin-width=&quot;3024&quot; data-origin-height=&quot;4032&quot;/&gt;&lt;/span&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;특히 본인도 빅테크 회사에서 먼저 연락이 왔는데 채용공고도 안 올라 왔는데 먼저 연락을 한 것이었다 ㄷㄷ&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;/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&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;KakaoTalk_20251206_215034428_10.jpg&quot; data-origin-width=&quot;3024&quot; data-origin-height=&quot;4032&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/yZRm5/dJMcahpoegT/uu7KAKgWlnMY0xCmSwCy61/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/yZRm5/dJMcahpoegT/uu7KAKgWlnMY0xCmSwCy61/img.jpg&quot; data-alt=&quot;누구보다 빠르게 지원하기&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/yZRm5/dJMcahpoegT/uu7KAKgWlnMY0xCmSwCy61/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FyZRm5%2FdJMcahpoegT%2Fuu7KAKgWlnMY0xCmSwCy61%2Fimg.jpg&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;400&quot; height=&quot;533&quot; data-filename=&quot;KakaoTalk_20251206_215034428_10.jpg&quot; data-origin-width=&quot;3024&quot; data-origin-height=&quot;4032&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;누구보다 빠르게 지원하기&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;KakaoTalk_20251206_215034428_11.jpg&quot; data-origin-width=&quot;3024&quot; data-origin-height=&quot;4032&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/U6ERn/dJMcahpoegU/nVxtfpiacsfG9re3OZvYK1/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/U6ERn/dJMcahpoegU/nVxtfpiacsfG9re3OZvYK1/img.jpg&quot; data-alt=&quot;남들과 다른 나의 강점&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/U6ERn/dJMcahpoegU/nVxtfpiacsfG9re3OZvYK1/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FU6ERn%2FdJMcahpoegU%2FnVxtfpiacsfG9re3OZvYK1%2Fimg.jpg&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;400&quot; height=&quot;533&quot; data-filename=&quot;KakaoTalk_20251206_215034428_11.jpg&quot; data-origin-width=&quot;3024&quot; data-origin-height=&quot;4032&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;남들과 다른 나의 강점&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;KakaoTalk_20251206_215034428_12.jpg&quot; data-origin-width=&quot;3024&quot; data-origin-height=&quot;4032&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/CzeBe/dJMcahpoegV/z7AH5KfpG0k5OaNTU6KvQK/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/CzeBe/dJMcahpoegV/z7AH5KfpG0k5OaNTU6KvQK/img.jpg&quot; data-alt=&quot;실리콘밸리의 인재 채용원칙&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/CzeBe/dJMcahpoegV/z7AH5KfpG0k5OaNTU6KvQK/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FCzeBe%2FdJMcahpoegV%2Fz7AH5KfpG0k5OaNTU6KvQK%2Fimg.jpg&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;400&quot; height=&quot;533&quot; data-filename=&quot;KakaoTalk_20251206_215034428_12.jpg&quot; data-origin-width=&quot;3024&quot; data-origin-height=&quot;4032&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;실리콘밸리의 인재 채용원칙&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;KakaoTalk_20251206_215034428_13.jpg&quot; data-origin-width=&quot;3024&quot; data-origin-height=&quot;4032&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/d90pQc/dJMcacInEGx/fAhwOMmjWslLLMZtV1Lah1/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/d90pQc/dJMcacInEGx/fAhwOMmjWslLLMZtV1Lah1/img.jpg&quot; data-alt=&quot;마인드 셋&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/d90pQc/dJMcacInEGx/fAhwOMmjWslLLMZtV1Lah1/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fd90pQc%2FdJMcacInEGx%2FfAhwOMmjWslLLMZtV1Lah1%2Fimg.jpg&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;400&quot; height=&quot;533&quot; data-filename=&quot;KakaoTalk_20251206_215034428_13.jpg&quot; data-origin-width=&quot;3024&quot; data-origin-height=&quot;4032&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;내가 가지는 마인드 셋은 유연하게 생각하면서 안된다고 포기하지말고 안될수도 있지 다르게 생각해볼까?&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;/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;외국 빅테크는 바로 지원서를 보기 때문에 지우너서를 넣고 몇일 만에 연락이 오는 경우도 있다고 한다&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;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;아 노트북가져갔으면서 섹션에서 내용을 정리를&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;조금 읽어봤는데 기수들이랑 커피챗한 내용도 들어있고&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;하루종일 섹션 듣는거 너무 힘들다..&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;그래도 여러가지 도움도 되고 확신도 생기고 목표도 생겼다&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;만약에 붙지 않는다면 바로 1월부터 알바를 시작해서 캐나다 워킹홀리데이를 가보고 싶다는 목표가 생겼다&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;/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;</description>
      <category>자기개발</category>
      <category>devfest</category>
      <author>rlagudwls5518</author>
      <guid isPermaLink="true">https://rlagudwls5518.tistory.com/14</guid>
      <comments>https://rlagudwls5518.tistory.com/14#entry14comment</comments>
      <pubDate>Sun, 7 Dec 2025 00:16:14 +0900</pubDate>
    </item>
    <item>
      <title>[우테코 최종코테준비] 6기 프리코스 1주차 야구게임 리팩토링</title>
      <link>https://rlagudwls5518.tistory.com/13</link>
      <description>&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;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;outputView는 무조건 컨트롤러에서 해야하나? -&amp;gt; 당연&lt;/li&gt;
&lt;li&gt;컨트롤러는 딱 입력 -&amp;gt; 서비스 -&amp;gt; 출력임&lt;/li&gt;
&lt;li&gt;여기서 서비스는 컨트롤러에서 반환하면서 의미있는 객체 즉 dto를 사용하면 더 좋음&lt;/li&gt;
&lt;li&gt;현재 GameService.playOneGame()이 List&amp;lt;Integer&amp;gt;를 반환하면, 이 리스트의 첫 번째 요소가 볼(Ball)인지, 스트라이크(Strike)인지, 아니면 다른 의미인지 코드를 분석해야만 알 수 있습니다. -&amp;gt; 지피티 답변&lt;/li&gt;
&lt;li&gt;컨트롤러&amp;nbsp;안에서&amp;nbsp;돌아다닐&amp;nbsp;데이터를&amp;nbsp;정해보자&lt;/li&gt;
&lt;li&gt;dto 클래스에서의 책임은 어디까지인가?&lt;/li&gt;
&lt;/ul&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;&amp;nbsp;&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;오늘 조금 의미가 와닿아서 수정을 같이 진행 했다.&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;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;하지만 이번에 내가 짠 야구게임 코드는&amp;nbsp;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;리스트 [ 스트라이크 갯수, 볼 갯수, 낫싱 갯수]&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&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;그래서 dto 데이터 전송만하는 객체를 만들어두면 번거롭게 확인하지 않는 의미있는 객체를 반환하게 된다는 것을 알았다.&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;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;&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;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;컨트롤러는&amp;nbsp; &lt;b&gt;입력-&amp;gt; 서비스, 서비스, 서비스 -&amp;gt; 출력&lt;/b&gt; 이런 흐름임을 꼭 기억하면서 코드를 짜보자&amp;nbsp;&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;그리고&amp;nbsp; 리팩토링 하기 전에 내 코드에서 ResultGame은 세 가지 역할을 하고 있었다.&amp;nbsp;&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-path-to-node=&quot;7&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;&lt;b&gt;결과를 출력&lt;/b&gt;하는 역할 (output 필드와 함께 사용).&lt;/li&gt;
&lt;li&gt;&lt;b&gt;게임 종료 여부를 판단&lt;/b&gt;하는 역할 (gameResult() 메서드).&lt;/li&gt;
&lt;li&gt;&lt;b&gt;컨트롤러 내에서&lt;/b&gt; 생성되는 역할.&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;이 부분을 분리하기 위해&amp;nbsp; 결과출력은 outputView로 빼는데&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;애매한 부분을 재미나이한테 물어보니 dto객체한테 넘겨주라는 것이 었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;엥..&amp;nbsp; dto는 단순히 데이터 전송만 하는 객체가 아니었나?..&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote data-path-to-node=&quot;1&quot; data-ke-style=&quot;style3&quot;&gt;BaseballScore는 DTO 클래스이지만, 게임 종료 판단 책임을 가지는 것이 현재의 아키텍처 방향성에는 더 적합합니다.&lt;br /&gt;일반적인 DTO(Data Transfer Object)는 순수하게 데이터만 전달하는 역할을 하지만,&lt;br /&gt;현재의 상황에서는 BaseballScore를 값 객체(Value Object, VO)의 성격도 가지도록 설계하는 것이&lt;br /&gt;컨트롤러의 복잡성을 낮추고 책임 분리를 명확히 하는 데 핵심적인 방향성입니다.&lt;/blockquote&gt;
&lt;p data-path-to-node=&quot;1&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-path-to-node=&quot;1&quot; data-ke-size=&quot;size16&quot;&gt;이렇게 답변이 왔다.&lt;/p&gt;
&lt;p data-path-to-node=&quot;1&quot; data-ke-size=&quot;size16&quot;&gt;이에 따라서 왜 dto에 책임을 부여하는지 알려줬는데&lt;/p&gt;
&lt;p data-path-to-node=&quot;1&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-path-to-node=&quot;1&quot; data-ke-size=&quot;size16&quot;&gt;높은 응집성과 DTO/VO의 현대적인 역할 두가지 이유를 알려줬는데&lt;/p&gt;
&lt;p data-path-to-node=&quot;1&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-path-to-node=&quot;1&quot; data-ke-size=&quot;size16&quot;&gt;게임 종료 판단은 dto내부에 스트라이크 카운트 멤버변수에 전적으로 의존을 한다 당연히 스트라이크가 3개면 종료되니까&lt;/p&gt;
&lt;p data-path-to-node=&quot;1&quot; data-ke-size=&quot;size16&quot;&gt;그리고 최근 객체지향 설계에서 DTO/VO의 경계를 유연하게 가져간다고 한다&lt;/p&gt;
&lt;p data-path-to-node=&quot;1&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-path-to-node=&quot;1&quot; data-ke-size=&quot;size16&quot;&gt;따라서 단순한dto 대신 게임 점수라는 값의 의미를 온전히담을 뿐아니라 그 값에 기반한 판단책임까지 설계하는게 가독성과 유지보수가 좋다라는데&amp;nbsp;&lt;/p&gt;
&lt;p data-path-to-node=&quot;1&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-path-to-node=&quot;1&quot; data-ke-size=&quot;size16&quot;&gt;이 부분은 좀 더 공부해봐야 할 것 같다. 확신이 잘 안선다&amp;nbsp;&lt;/p&gt;
&lt;p data-path-to-node=&quot;1&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&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-path-to-node=&quot;1&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-path-to-node=&quot;1&quot; data-ke-size=&quot;size16&quot;&gt;오늘은 많이 못했다.. 진짜 집에 있으니까 공부를 몬하겠네 ㅋㅋ&lt;/p&gt;
&lt;p data-path-to-node=&quot;1&quot; data-ke-size=&quot;size16&quot;&gt;나가고 싶지만 밖이 너무 추운걸;;&lt;/p&gt;
&lt;p data-path-to-node=&quot;1&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-path-to-node=&quot;1&quot; data-ke-size=&quot;size16&quot;&gt;내일은 지하철 문제 꼭 풀어보자&lt;/p&gt;</description>
      <category>우아한테크코스 8기 프리코스</category>
      <category>우테코</category>
      <author>rlagudwls5518</author>
      <guid isPermaLink="true">https://rlagudwls5518.tistory.com/13</guid>
      <comments>https://rlagudwls5518.tistory.com/13#entry13comment</comments>
      <pubDate>Thu, 4 Dec 2025 22:23:45 +0900</pubDate>
    </item>
    <item>
      <title>[우테코 최종코테준비] 8기 프리코스 2주차 자동차 경주게임</title>
      <link>https://rlagudwls5518.tistory.com/12</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;오랜만에 2주차 자동차경주 문제를 풀어봤다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;돌아가는 쓰레기만드는데 1시간 23분 걸렸다.&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;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&amp;nbsp; 프로젝트 개요&lt;/h4&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;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt; 구현기능 목록&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1. 주어진 횟수동안 n대의 차는 전진 또는 정지할 수 있다&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;전진 조건은 무작위 수가 4이상일때만 전진한다&lt;/li&gt;
&lt;li&gt;4미만이면 그대로&amp;nbsp;&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2. 자동차는 이름 부여가 가능하다&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;li&gt;입력시 구분자로 차 이름을 구별한다&lt;/li&gt;
&lt;li&gt;차 이름은 5글자 이내로 작성한다&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;3. 시도 횟수를 입력할 수 있다&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;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;4. 경주 완료 후 누가 우승자인지 보여준다&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;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;⚙️보완해야할 점&lt;/h4&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;Car객체와 Cars객체와 Parsing이랑 Controller사이에서의&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;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&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;다음에 풀때는 기능 목록 뿐아니라 어떤 역할을 하는 객체가 필요한지 정의하고 풀어야겠다. 헷갈린다..&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;3주차때 객체정리했었는데 자꾸 그냥 막해가지고..&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;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;2주차때 코드랑 오늘짠 코드랑 비교해달라고했는데 진짜 많이 발전했다는 것을 느꼈다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2주차때 우승자 로직계산이었다 거의 지피티 돌리면서 해서 스트림도 잘모르는데 참;;&lt;/p&gt;
&lt;pre id=&quot;code_1764766245999&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;public static String calculateWinners(List&amp;lt;Car&amp;gt; cars) {
        int maxPosition = cars.stream()
                .mapToInt(Car::getDistance)
                .max()
                .orElse(0);

        String winners = cars.stream()
                .filter(car -&amp;gt; car.getDistance() == maxPosition)
                .map(Car::getName)
                .collect(Collectors.joining(&quot;,&quot;));
        return winners;
    }&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;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;pre id=&quot;code_1764766295996&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;	private int playerGetMaxDistance(){
        int maxDistance = 0;
        for(Car car : carList){
            if(maxDistance &amp;lt; car.getDistance())
                maxDistance = car.getDistance();
        }
        return maxDistance;
    }

    public List&amp;lt;String&amp;gt; winnerPlayers(){
        List&amp;lt;String&amp;gt; winnerPlayers = new ArrayList&amp;lt;&amp;gt;();
        int maxDistance = playerGetMaxDistance();
        for(Car car : carList){
            if(maxDistance == car.getDistance()){
                winnerPlayers.add(car.getCarName());
            }
        }
        return winnerPlayers;
    }&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;내일은 어제 오늘 코드짠거 리팩토링 좀더해서 정리해서 올리고 금요일부터 문제 다시 풀어야겠다&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;/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&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1721&quot; data-origin-height=&quot;918&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ptbML/dJMcachhz8X/TwXrM2w2d05a7YIptOUWH1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ptbML/dJMcachhz8X/TwXrM2w2d05a7YIptOUWH1/img.png&quot; data-alt=&quot;발전했다~&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ptbML/dJMcachhz8X/TwXrM2w2d05a7YIptOUWH1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FptbML%2FdJMcachhz8X%2FTwXrM2w2d05a7YIptOUWH1%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;1721&quot; height=&quot;918&quot; data-origin-width=&quot;1721&quot; data-origin-height=&quot;918&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;</description>
      <category>우아한테크코스 8기 프리코스</category>
      <category>우테코 프리코스</category>
      <author>rlagudwls5518</author>
      <guid isPermaLink="true">https://rlagudwls5518.tistory.com/12</guid>
      <comments>https://rlagudwls5518.tistory.com/12#entry12comment</comments>
      <pubDate>Wed, 3 Dec 2025 22:00:17 +0900</pubDate>
    </item>
    <item>
      <title>[우테코 최종코테준비] 6기 프리코스 1주차 야구게임 회고</title>
      <link>https://rlagudwls5518.tistory.com/11</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;12월 2일 오늘은 6기 프리코스 1주차 문제인 야구게임을 풀어봤다.&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;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;시간은 4시간 잡고 했는데 AI안쓰고 돌아가는 쓰레기 구현까지 2시간 57분 걸렸다&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;쉬워서 금방 푼건 아닌지..&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt; 프로젝트 개요&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;서로 다른 세자리 수를 입력해서 컴퓨터가 뽑는 무작위의 랜덤 수를 맞추면 게임 클리어&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt; 구현 기능 목록&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1. 서로 다른 세자리 수 입력&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;숫자가 3자리가 아닐 때 예외 처리&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2. 입력 후 각 자리 파싱 후 리스트로 반환하기&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;3. 랜덤 세자리 수 생성&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;4. 리스트끼리 맞힌 여부 검사&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;입력리스트의 숫자가 랜덤 수에 들어있다면&amp;nbsp;
&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;/li&gt;
&lt;li&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;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;5. 3스트라이크가 나올 때까지 로직을 반복한다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;6. 3스트라이크일 때 게임을 종료한다&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;종료시 숫자 1번을 입력하면 다시 게임 새로시작&lt;/li&gt;
&lt;li&gt;숫자 2번은 게임 종료&amp;nbsp;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt; 보완 해야할 점&lt;/h4&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;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;판독기&amp;nbsp;계산이&amp;nbsp;어려움 &lt;/li&gt;
&lt;li&gt;리스트&amp;nbsp;인덱스&amp;nbsp;잘&amp;nbsp;모름 &lt;/li&gt;
&lt;li&gt;number.length() != 3 왜안되는거임&amp;nbsp;&lt;/li&gt;
&lt;li&gt;예외를 값이 있을 때랑 없을 때랑 잘 구분하자&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;첫번째는 리스트를 내가 생각보다 잘 모른다&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;문제를 풀면서 리스트 문법 대충 add랑 반복문 밖에 모르는것 같다고 느꼈다.&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;두번째 이것도 리스트를 잘 몰라서 연결되는 문제 였는데&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;
&lt;pre id=&quot;code_1764676345497&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;public class NumberManagement {
    private final String number;

    public NumberManagement(String number) {
        numberValidator();
        this.number = number;

    }   
    
    private void numberValidator() {
        if (number.length() != 3) {
            throw new IllegalArgumentException(&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;이렇게 하면 잘 돌아가는 줄 알았는데&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;알고보니 생성자로 초기회되지도 않은 number변수를 검증을 하니 계속 테스트가 안돌아가서;;&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;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&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;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&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;내일은 2주차 프리코스 문제인 자동차 경주 문제를 풀어봐야겠다&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;오후에 1시부터 4시간잡고 문제 풀어봐야겠다&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;근데 불과 한달 전에 문제 풀지도 못했는데 나 스스로 한 문제를 풀었다는게 성장을 한 것 같아 좀 뿌듯하다&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;내일도 화이팅해보자&amp;nbsp;&lt;/p&gt;</description>
      <category>우아한테크코스 8기 프리코스</category>
      <category>우테코 프리코스</category>
      <author>rlagudwls5518</author>
      <guid isPermaLink="true">https://rlagudwls5518.tistory.com/11</guid>
      <comments>https://rlagudwls5518.tistory.com/11#entry11comment</comments>
      <pubDate>Tue, 2 Dec 2025 21:39:03 +0900</pubDate>
    </item>
    <item>
      <title>[우테코 최종코테준비] 5기 프리코스 온보딩 문제 1~6번</title>
      <link>https://rlagudwls5518.tistory.com/10</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;1번부터 6번까지 푸는데 꽤 오래걸렸다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;5번까지는 쉬웠는데 6번부터 벽이 느껴져서 로직을 생각해내지 못하고 지피티를 사용했다..&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;/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;a title=&quot;온보딩 문제 레포&quot; href=&quot;https://github.com/rlagudwls5518/java-onboarding&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://github.com/rlagudwls5518/java-onboarding&lt;/a&gt;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;1번 책페이지 게임&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1번을 제일 열심히 푼거같은데;;&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;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;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;2번 중복문자 제거&amp;nbsp;&lt;/h4&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;p data-ke-size=&quot;size16&quot;&gt;맨앞글자를 스택에 넣고 다음글자부터 같으면 pop 다르면 push하는 방식으로&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;while문으로 중복이 없을 때까지 반복하면 되는 로직이었다&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;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&amp;nbsp;3번 369게임&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 문제는 369게임이랑 똑같다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;숫자가 매개변수로 주어지고 3, 6, 9가들어간 수라면 박수를 치는데&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;박수를 총&amp;nbsp; 1~ 숫자까지 가면서 박수를 총 몇 번 쳤는지 반환하는 함수를 만드는거였다&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;각자리 숫자를 비교하면서 3, 6, 9가있으면 카운트 올리는 방식으로 하면 된다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;4번 청개구리&lt;/h4&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;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;5번 출금&lt;/h4&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;1번 문제에서 나온 자리수 나머지를 통해&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;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;6번&amp;nbsp; 닉네임 중복&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;6번 문제를 완벽히 이해해야 7번문제를 푸는데 아직 6번 문제를 이해하지 못했다..&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;/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;이중리스트가 나는 프리코스 3주차 로또문제에서 한번 겪었다&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;Crew클래스에 닉네임과 이메일을 데이터로 두고&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;List&amp;lt;Crew&amp;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;
&lt;p data-ke-size=&quot;size16&quot;&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;아 이 부분을 객체를 어떻게 리스트에 넣어야 할지 지피티에 물어봐서 구현을 했다..&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;size16&quot;&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;한참을 생각해도 모르겠어서 지피티를 돌리고 이해하는 중이다 ..&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;&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;7번문제는 일단 보류하고&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;6번을 이해하고 다음으로 넘어가야겠다&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;하루에 한 문제씩 5시간을 잡고 풀고 리팩토링 하고 하는사람이 있더라&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;이번에 6문제를 풀면서 온전히 내 힘으로 풀지 못한게 좀 있어서 걱정이다..&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;그리고 또 하나의 문제점을 발견했다&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;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;</description>
      <category>우아한테크코스 8기 프리코스</category>
      <author>rlagudwls5518</author>
      <guid isPermaLink="true">https://rlagudwls5518.tistory.com/10</guid>
      <comments>https://rlagudwls5518.tistory.com/10#entry10comment</comments>
      <pubDate>Mon, 1 Dec 2025 22:06:20 +0900</pubDate>
    </item>
    <item>
      <title>2024-11-29</title>
      <link>https://rlagudwls5518.tistory.com/9</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;&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;별의 개발자 커비님의 벨로그를 보게되었다&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;저렇게 해야 합격을 하는구나 하고 생각했는데&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;쭉보다가 우테코 합격하고 그대로 히어로 테크코스까지 합격한걸 보게되었다&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;이분이 프리코스를 어떻게 준비했는지&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;최종 코테까지 동기부여를 하면서 더 배워야겠다&lt;/p&gt;</description>
      <category>일기</category>
      <author>rlagudwls5518</author>
      <guid isPermaLink="true">https://rlagudwls5518.tistory.com/9</guid>
      <comments>https://rlagudwls5518.tistory.com/9#entry9comment</comments>
      <pubDate>Sat, 29 Nov 2025 22:41:20 +0900</pubDate>
    </item>
  </channel>
</rss>