<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>yeseo_52.log</title>
        <link>https://velog.io/</link>
        <description>미림마이스터고 재학중인 고3 개발자 정예서입니다.</description>
        <lastBuildDate>Tue, 11 Aug 2026 22:58:58 GMT</lastBuildDate>
        <docs>https://validator.w3.org/feed/docs/rss2.html</docs>
        <generator>https://github.com/jpmonette/feed</generator>
        <image>
            <title>yeseo_52.log</title>
            <url>https://velog.velcdn.com/images/yeseo_052/profile/b5a1ab9a-fda0-4eb2-8716-e678f79c3c27/image.png</url>
            <link>https://velog.io/</link>
        </image>
        <copyright>Copyright (C) 2019. yeseo_52.log. All rights reserved.</copyright>
        <atom:link href="https://v2.velog.io/rss/yeseo_052" rel="self" type="application/rss+xml"/>
        <item>
            <title><![CDATA[[코딩테스트][MySQL] 가장 비싼 상품 구하 - (Level 1)]]></title>
            <link>https://velog.io/@yeseo_052/%EC%BD%94%EB%94%A9%ED%85%8C%EC%8A%A4%ED%8A%B8MySQL-%EA%B0%80%EC%9E%A5-%EB%B9%84%EC%8B%BC-%EC%83%81%ED%92%88-%EA%B5%AC%ED%95%98-Level-1</link>
            <guid>https://velog.io/@yeseo_052/%EC%BD%94%EB%94%A9%ED%85%8C%EC%8A%A4%ED%8A%B8MySQL-%EA%B0%80%EC%9E%A5-%EB%B9%84%EC%8B%BC-%EC%83%81%ED%92%88-%EA%B5%AC%ED%95%98-Level-1</guid>
            <pubDate>Tue, 11 Aug 2026 22:58:58 GMT</pubDate>
            <description><![CDATA[<p><img src="https://velog.velcdn.com/images/yeseo_052/post/725abfe3-bffe-41f5-a955-5de796e90cbb/image.png" alt=""></p>
<p>코드 답</p>
<pre><code>SELECT MAX(PRICE) AS MAX_PRICE FROM PRODUCT;</code></pre><p>MAX로 가장 높은 판매가를 찾아내고, AS로 컬럼명을 수정한다.</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[[코딩테스트][MySQL] 역순 정렬하기 - (Level 1)]]></title>
            <link>https://velog.io/@yeseo_052/%EC%BD%94%EB%94%A9%ED%85%8C%EC%8A%A4%ED%8A%B8MySQL-%EC%97%AD%EC%88%9C-%EC%A0%95%EB%A0%AC%ED%95%98%EA%B8%B0-Level-1-u3yr8hy6</link>
            <guid>https://velog.io/@yeseo_052/%EC%BD%94%EB%94%A9%ED%85%8C%EC%8A%A4%ED%8A%B8MySQL-%EC%97%AD%EC%88%9C-%EC%A0%95%EB%A0%AC%ED%95%98%EA%B8%B0-Level-1-u3yr8hy6</guid>
            <pubDate>Wed, 15 Jul 2026 23:44:18 GMT</pubDate>
            <description><![CDATA[<p><img src="https://velog.velcdn.com/images/yeseo_052/post/7ab7453e-a3ed-40b9-b1ff-3cfd630e2a7e/image.png" alt=""></p>
<pre><code>SELECT COUNT(*) AS count FROM ANIMAL_INS;</code></pre><p>이미 동물 보호소에 들어온 동물들의 정보이기 때문에 릴레이션(테이블)의 
튜플(행)을 개수를 세도록 구현하였습니다 :)</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[[코딩테스트][MySQL] 역순 정렬하기 - (Level 1)]]></title>
            <link>https://velog.io/@yeseo_052/%EC%BD%94%EB%94%A9%ED%85%8C%EC%8A%A4%ED%8A%B8MySQL-%EC%97%AD%EC%88%9C-%EC%A0%95%EB%A0%AC%ED%95%98%EA%B8%B0-Level-1</link>
            <guid>https://velog.io/@yeseo_052/%EC%BD%94%EB%94%A9%ED%85%8C%EC%8A%A4%ED%8A%B8MySQL-%EC%97%AD%EC%88%9C-%EC%A0%95%EB%A0%AC%ED%95%98%EA%B8%B0-Level-1</guid>
            <pubDate>Mon, 13 Jul 2026 13:32:23 GMT</pubDate>
            <description><![CDATA[<p><img src="https://velog.velcdn.com/images/yeseo_052/post/f00cd533-bddd-45ac-ab21-f78868aa41b0/image.png" alt=""></p>
<p>SQL 답</p>
<pre><code>SELECT ANIMAL_ID, NAME FROM ANIMAL_INS WHERE NAME LIKE &#39;%el%&#39; AND NAME LIKE &#39;%EL%&#39; AND ANIMAL_TYPE=&#39;Dog&#39; ORDER BY NAME, ANIMAL_ID;</code></pre><p>이름에 el이 들어있는 걸 LIKE으로 찾고 %el으로 하면 앞에 뭐가 오든 뒤에 el만 성립이 된다면 true. %el%으로 하면 el 문자 앞 뒤에 뭐가 오든 el만 있으면 성립이 된다. 하지만 LIKE는 대소문자를 구분하기 때문에 EL과 el을 넣었다. </p>
<p>그리고 동물의 타입은 dog이여야 하므로 Dog으로 저장되어있는 동물만 조회를 할 수 있게 구현하였습니다 :)</p>
<p>다른 분들의 풀이를 보면 LOWER(NAME)으로 LIKE를 한 번만 사용하는 가독성을 만들었지만 아직은 활용해보지 않았던 문법이라서 먼저 저의 방식대로 구현해보았습니다:) 감사합니다</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[[코딩테스트][MySQL] 역순 정렬하기 - (Level 1)]]></title>
            <link>https://velog.io/@yeseo_052/%EC%BD%94%EB%94%A9%ED%85%8C%EC%8A%A4%ED%8A%B8MySQL-%EC%97%AD%EC%88%9C-%EC%A0%95%EB%A0%AC%ED%95%98-Level-1</link>
            <guid>https://velog.io/@yeseo_052/%EC%BD%94%EB%94%A9%ED%85%8C%EC%8A%A4%ED%8A%B8MySQL-%EC%97%AD%EC%88%9C-%EC%A0%95%EB%A0%AC%ED%95%98-Level-1</guid>
            <pubDate>Thu, 09 Jul 2026 23:47:10 GMT</pubDate>
            <description><![CDATA[<p><img src="https://velog.velcdn.com/images/yeseo_052/post/d2dbfb16-483f-4054-a09d-ad4ceb83f9c4/image.png" alt=""></p>
<p>SQL 답</p>
<pre><code>-- 코드를 입력하세요
SELECT NAME,DATETIME FROM ANIMAL_INS ORDER BY ANIMAL_ID DESC;</code></pre><p>원하는 출력 NAME,DATETIME을 작성하고 ANIMAL_INS에서 ANIMAL_ID을 내림차순으로 정렬하게 만들면 역순이 된다.</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[[코딩테스트][MySQL] 아픈 동물 찾기 - (Level 1)]]></title>
            <link>https://velog.io/@yeseo_052/%EC%BD%94%EB%94%A9%ED%85%8C%EC%8A%A4%ED%8A%B8MySQL-%EC%95%84%ED%94%88-%EB%8F%99%EB%AC%BC-%EC%B0%BE-Level-1</link>
            <guid>https://velog.io/@yeseo_052/%EC%BD%94%EB%94%A9%ED%85%8C%EC%8A%A4%ED%8A%B8MySQL-%EC%95%84%ED%94%88-%EB%8F%99%EB%AC%BC-%EC%B0%BE-Level-1</guid>
            <pubDate>Thu, 09 Jul 2026 23:17:31 GMT</pubDate>
            <description><![CDATA[<p><img src="https://velog.velcdn.com/images/yeseo_052/post/c90abfd3-4b7b-47bf-9aff-69654a86b130/image.png" alt=""></p>
<p>SQL 답</p>
<pre><code>-- 코드를 입력하세요
SELECT ANIMAL_ID, NAME FROM ANIMAL_INS WHERE INTAKE_CONDITION LIKE &#39;Sick&#39;;</code></pre><p>원하는 출력 ANIMAL_ID, NAME을 ANIMAL_INS테이블에서 INTAKE_CONDITION Sick 아픈 동물만 출력하는 SQL 문을 만들었습니다 :)</p>
<blockquote>
<p>학교에서 MySQL 수업을 듣는데 코테로 실습을 해봤는데 
생각보다 쉬워서 놀랬다. AI 없이도 코딩할 수 있음에 뿌듯함을 느꼈습니다 &gt;&lt;</p>
</blockquote>
]]></description>
        </item>
        <item>
            <title><![CDATA[TIL 복귀작 DBP]]></title>
            <link>https://velog.io/@yeseo_052/TIL-%EB%B3%B5%EA%B7%80%EC%9E%91-DBP</link>
            <guid>https://velog.io/@yeseo_052/TIL-%EB%B3%B5%EA%B7%80%EC%9E%91-DBP</guid>
            <pubDate>Wed, 01 Jul 2026 12:43:20 GMT</pubDate>
            <description><![CDATA[<h2 id="테이블-생성">테이블 생성</h2>
<h3 id="primary-key-기본키">PRIMARY KEY (기본키)</h3>
<ul>
<li>중복 불가</li>
<li>NULL 불가</li>
<li>테이블에서 데이터를 구별하는 번호<pre><code>CREATE TABLE BOOK(
  BNO NUMBER PRIMARY KEY
);</code></pre><h3 id="foreign-key-외래키">FOREIGN KEY (외래키)</h3>
다른 테이블의 기본키를 참조<pre><code>BNO NUMBER,
FOREIGN KEY(BNO) REFERENCES BOOK(BNO)</code></pre>부모의 번호만 자식에서 사용할 수 있다.</li>
</ul>
<h3 id="on-delete-cascade">ON DELETE CASCADE</h3>
<p>&lt; 부모 삭제하면 자식도 같이 삭제 &gt;</p>
<pre><code>FOREIGN KEY(BNO)
REFERENCES BOOK(BNO)
ON DELETE CASCADE;</code></pre><h3 id="default">DEFAULT</h3>
<p>값을 안 넣으면 자동 입력</p>
<pre><code>RDATE DATE DEFAULT SYSDATE</code></pre><h3 id="unique">UNIQUE</h3>
<pre><code>SHOP_NAME VARCHAR2(50) UNIQUE</code></pre><p>Null은 가능하지만 중복은 금지</p>
<h2 id="테이블에-값-추가">테이블에 값 추가</h2>
<h3 id="insert">INSERT</h3>
<p>모든 컬럼 입력</p>
<pre><code>INSERT INTO BOOK
VALUES(1,&#39;SQL&#39;,&#39;홍길동&#39;,20000);</code></pre><p>일부 컬럼만</p>
<pre><code>INSERT INTO BOOK(BNO,TITLE)
VALUES(2,&#39;데이터베이스&#39;);</code></pre><h2 id="테이블-값-조회">테이블 값 조회</h2>
<pre><code>SELECT *
FROM BOOK;</code></pre><p>전체 조회가 아닌 원하는 값만 조회하고 싶다면 * =&gt; 대신 일부 컬럼을 작성</p>
<h2 id="where-조건">WHERE 조건</h2>
<p>같다 표현</p>
<pre><code>WHERE PRICE=10000</code></pre><p>크기 비교</p>
<pre><code>WHERE PRICE&gt;=20000</code></pre><h4 id="between">BETWEEN</h4>
<pre><code>WHERE PRICE
BETWEEN 10000 AND 20000</code></pre><p>범위 측정할 때 자주 사용</p>
<h4 id="in">IN</h4>
<p>여러개의 카테고리 중에 속하는 애들만 조회</p>
<pre><code>WHERE CATEGORY
IN(&#39;치킨&#39;,&#39;커피&#39;)</code></pre><h4 id="like">LIKE</h4>
<p>% &lt;- 앞뒤 뭐가 있든 상관 없음
__ &lt;-갯수가 정해져있음</p>
<h2 id="정렬">정렬</h2>
<h4 id="오름차순">오름차순</h4>
<p>ORDER BY PRICE ASC;</p>
<h4 id="내림차순">내림차순</h4>
<p>ORDER BY PRICE DESC;</p>
<h3 id="join">JOIN</h3>
<pre><code>SELECT R.SNAME,
       B.TITLE
FROM RENTAL R
JOIN BOOK B
ON R.BNO=B.BNO;</code></pre><h2 id="집계함수">집계함수</h2>
<ul>
<li>COUNT(개수)</li>
<li>SUM(합계)</li>
<li>AVG(평균)</li>
<li>MAX(최대)</li>
<li>MIN(최소)</li>
</ul>
<h4 id="group-by">GROUP BY</h4>
<p>같은 것끼리 묶기</p>
<pre><code>SELECT CATEGORY,
COUNT(*)
FROM SHOP
GROUP BY CATEGORY;</code></pre><h3 id="having">HAVING</h3>
<p>GROUP BY 이후 조건</p>
<pre><code>GROUP BY CATEGORY
HAVING COUNT(*)&gt;=2;</code></pre><p>**WHERE → 일반 조건</p>
<p>HAVING → 집계 조건**</p>
<h2 id="update-수정">UPDATE 수정</h2>
<pre><code>UPDATE BOOK
SET PRICE=15000
WHERE BNO=1;</code></pre><h2 id="delete">DELETE</h2>
<pre><code>DELETE
FROM BOOK
WHERE BNO=1;</code></pre><p>WHERE 안 쓰면 전부 삭제</p>
<h3 id="alter-table">ALTER TABLE</h3>
<p>테이블 수정</p>
<pre><code>ALTER TABLE MOVIE
MODIFY GENRE VARCHAR2(100);</code></pre><h3 id="서브쿼리">서브쿼리</h3>
<p>쿼리 안의 쿼리</p>
<pre><code>SELECT *
FROM BOOK
WHERE PRICE=
( SELECT MIN(PRICE) FROM BOOK );</code></pre><h3 id="fetch-first">FETCH FIRST</h3>
<p>상위 N개
ex) Top5 가져오기</p>
<pre><code>ORDER BY PRICE DESC
FETCH FIRST 5 ROWS ONLY;</code></pre>]]></description>
        </item>
        <item>
            <title><![CDATA[TIL Spring 최종정리]]></title>
            <link>https://velog.io/@yeseo_052/TIL-ti5h5qkl</link>
            <guid>https://velog.io/@yeseo_052/TIL-ti5h5qkl</guid>
            <pubDate>Wed, 29 Apr 2026 04:42:38 GMT</pubDate>
            <description><![CDATA[<p><strong>Spring Framework란?</strong></p>
<ol>
<li>자바 기반 응용 프로그램 개발 프레임워크</li>
<li>2003년 6월 Rod Johnson 발표</li>
<li>모든 Java 애플리케이션 개발 이용 ㄱㄴ</li>
<li>Java EE 기반 웹 애플리케이션 개발</li>
</ol>
<table>
<thead>
<tr>
<th></th>
<th>스프링프레임워크</th>
<th>스프링부트</th>
</tr>
</thead>
<tbody><tr>
<td>특징</td>
<td>IOC, DI, AOP</td>
<td>auto/내장서버</td>
</tr>
<tr>
<td>복잡도</td>
<td>설정 복잡</td>
<td>최소한의 설정</td>
</tr>
<tr>
<td>프젝go</td>
<td>수동으로 설정</td>
<td>initalizer 프젝 생성</td>
</tr>
<tr>
<td>배포</td>
<td>외부서버 배포</td>
<td>내장서버 인한 단독 실행 가능</td>
</tr>
</tbody></table>
<p>⇒ Spring Framework는 기반 기술, Spring Boot는 Spring을 더 쉽고 빠르게 쓰게 해주는 도구다. </p>
<hr>
<h4 id="spring-framework">Spring Framework</h4>
<ul>
<li><p>경량 컨테이너</p>
</li>
<li><p>POJO 방식</p>
</li>
<li><p><strong>IoC 지원 (제어의 역전) &lt;개념&gt;</strong></p>
<ul>
<li><p>객체생성이나 관리 그런 부분이 Spring이 다 해줌. 개발자는 그걸 요청하는 코딩만 하면 되는 것. (예전에는 객체생성이나 관리까지 개발자가 함)</p>
</li>
<li><p>제어의 역전</p>
</li>
<li><p>스프링 컨테이너 객체 생성</p>
</li>
<li><p>개발 효율성(up) 유지보수 용이</p>
</li>
<li><p>*&lt;주요 특징&gt;**</p>
<p>→ 객체 생성, 초기화 자동 관리</p>
<p>→ 의존 관계를 자동으로 연결 편리 제공</p>
<p>→ 유연한 구조로 설정 변경 용이</p>
<p>→ 낮은 결합도로 유지보수 용이</p>
<p>⇒IoC는 매니저(소속사)가 있다는 느낌 (직접스케줄관리X)</p>
</li>
</ul>
</li>
<li><p>DI 지원 (의존성 주입)</p>
<p>  <strong>1)</strong> 생성자 <strong>DI (Constructor DI)
  2) setterDI</strong></p>
</li>
<li><p>AOP 지원</p>
<p>  공통으로 들어가는 것을 (횡단관심)
  횡단관심은 : 공통기능 → spring이 관리함
  필요한 핵심 기능 (종단관심)
  종단관심: 핵심기능 → 개발자가 관리함.</p>
</li>
</ul>
<hr>
<h2 id="다형성">다형성</h2>
<p>자바에서의 모든 객체는 부모클 참조변수나 구현한 인터페이스 변수에 담을 수 있다. ⇒ 이러한 참조변수를 통해 메서드를 호출하면 오버라이딩된 메서드가 호출된다.</p>
<p>Spring Framework 장점</p>
<ul>
<li>코드량 감소</li>
<li>생산성 향상</li>
<li>유지보수 쉬움</li>
<li>의존성 관리 편함 (DI)</li>
<li>재사용성 높음</li>
</ul>
<hr>
<h2 id="빌드도구">빌드도구</h2>
<ul>
<li>소스코드를 컴파일부터 배포까지의 전 과정을 자동으로 실행시켜주는 도구*</li>
</ul>
<ol>
<li>빌드 자동화는 소프트웨어 개발의 효율성을 높이는 중요한 과정</li>
<li>필요한 라이브러리를 다운로드 </li>
<li>코드 컴파일, 자동으로 테스트 실행 후</li>
<li>실행 파일을 생성, 배포
5<strong>. Maven(pom.xml) / gradle (build.gradle)</strong></li>
</ol>
<p>스프링은 요리사 개발자는 사장넴</p>
<p><strong>spring application에 필요한 라이브러리: spring-context</strong></p>
<p>스프링의 maven 라이브러리들이 모아져 있는 곳에서 다운받아야함.</p>
<p><strong>Java에서 class 에서 활용되는 get set이 Spring에서는 getBean()이런 느낌으로 활용이 된다.</strong></p>
<hr>
<h3 id="maven-핵심-한-줄">Maven 핵심 한 줄</h3>
<p> XML 기반으로 프로젝트 빌드와 라이브러리를 자동 관리하는 도구</p>
<ul>
<li>자바 프로젝트 <strong>빌드 자동화 도구</strong></li>
<li><strong>XML</strong>로 설정을 관리한다</li>
<li>라이브러리를 <strong>자동으로 다운로드</strong>한다</li>
<li>프로젝트 <strong>라이프사이클 관리</strong> 가능</li>
<li><strong>Apache(아파치)</strong>에서 개발</li>
</ul>
<table>
<thead>
<tr>
<th></th>
<th>Maven</th>
<th>Grable</th>
</tr>
</thead>
<tbody><tr>
<td>비유</td>
<td>공공기관 메뉴얼식 운명</td>
<td>스타트업식 자동화</td>
</tr>
<tr>
<td>특징</td>
<td>정해진 규칙</td>
<td>자유도 높음</td>
</tr>
<tr>
<td>설정</td>
<td>XML</td>
<td>Groovy/ Kotilin</td>
</tr>
<tr>
<td>속도</td>
<td>보통</td>
<td>빠름</td>
</tr>
</tbody></table>
<p><strong>IoC 컨테이너</strong> : 객체 생성과 의존성 관리를 수행하는 스프링의 핵심 구성 요소</p>
<ul>
<li><strong>IoC(Inversion of Control)</strong> : 객체 생성과 관리의 제어권이 개발자가 아닌 프레임워크에 있는 것</li>
<li>개발자가 객체를 직접 생성하지 않고, 프레임워크가 생성한 객체를 주입받아 사용한다.</li>
<li>스프링에서는 IoC 컨테이너가 객체 생성과 의존성 주입을 담당한다.</li>
</ul>
<p><strong>POJO Class</strong></p>
<ul>
<li>POJO (Plain Old Java Object) : 자바 모델이나, 기능, 프레임워크 등에 따르지 않고 홀로 독립적이며 단순한 기능만을 가진 객체들을 의미한다.</li>
<li>자바에서는 이러한 객체들을 Bean이라고 부른다.</li>
<li>단순히, 데이터의 저장기능만 있다.</li>
</ul>
<p>Spring Bean 객체 생성</p>
<ul>
<li>Spring에서는 사용할 Bean 객체를 configuration file에 정의를 하고, 필요할 때 객체를 가져와 사용하는 방법을 이용한다.</li>
<li>bean 태그 : 사용할 Bean을 정의하는 태그</li>
</ul>
<hr>
<p>인터페이스</p>
<ol>
<li>다형성(polymorphism) 
부모의 참조변수로 자식객체를 생성한다.</li>
</ol>
<ul>
<li>코드 수정이 용이하다.</li>
</ul>
<ol start="2">
<li>상수</li>
<li>추상메서드</li>
</ol>
<hr>
<p>MVC(Model,View,Controller)</p>
<ol>
<li>Model(모델): 데이터 (주로 데이터베이스에 있는 데이터)</li>
<li>View : 사용자에게 보여주는 것(UI)<pre><code>  - 템플릿 엔진을 사용해서 예쁘게 꾸며준다. (타임리프 사용)</code></pre></li>
<li>Controller : 실제 일을 하는 애 (비즈니스 로직 처리)</li>
</ol>
<p>*** dispatcher Servlet: 모든 요청을 받아서 적절한 controller에 보내는 애</p>
<p>MVC 장점 </p>
<p>분업화: 요리사(모델)가 바뀌어도 서빙 방식(컨트롤러)은 그대로 유지</p>
<p>유지보수: &quot;접시만 바꾸고 싶어(뷰 수정)&quot; 할 때 요리 방법(모델)을 건드릴 필요가 없음</p>
<p>유연성: 같은 요리(데이터)를 접시에도 담을 수 있고, 포장 박스(다양한 뷰)에도 담을 수 있음</p>
<hr>
<ul>
<li><strong>@SpringBootApplication:</strong> 컴포넌트 스캔 + 자동 설정을 포함한 핵심 어노테이션</li>
<li><strong>@Component:</strong> 컨테이너에 빈(Bean) 객체로 자동 등록</li>
<li><strong>@Autowired:</strong> 타입에 맞춰 의존성을 자동으로 주입<ul>
<li>기본형(@Value)은 아니고, <strong>참조형에만 적용됨</strong></li>
<li>타입을 보고 자동주입</li>
</ul>
</li>
<li><strong>@Qualifier(”이름”)</strong><ul>
<li>같은 클래스의 객체를 여러 개 만들 수 있다</li>
</ul>
</li>
<li><strong>static / templates:</strong> 정적 파일(JS, CSS)과 타임리프(HTML) 템플릿 보관 폴더</li>
</ul>
<hr>
<p>@SpringBootApplication</p>
<ol>
<li>@component-scan : 클래스들을 스캔해서 반으로 만들어서 컨테이너에 보관</li>
</ol>
<hr>
<p>사용자가 입력한 데이터를 받아오는 방법</p>
<ol>
<li>HttpsServletRequest</li>
<li>WebRequest</li>
<li>@RequestParam : 1개씩 변수를 받는다.</li>
<li>@PathVariable : restAPI에서 사용. 폴더가 아니라 데이터로 인식하고 싶을 때 사용한다.</li>
<li>@ModelAttribute :  + dto가 있어야 함(POJO 클래스 : 멤버변수+set/get만 있는 거) 
클래스의 멤버변수 이름 :  요청되는 변수명하고 반드시 일치해야함.</li>
</ol>
<p>@ResponseBody이란? 
return “abc”;
⇒ abc.html파일로 인식하는 것이 아니라, 단순 문자열로 인식하여 그대로 브라우저에 실행</p>
<hr>
<p>springboot 주요 파일</p>
<ul>
<li>static 폴더: 정적파일 보관(html, css,js, image)</li>
<li>templates: 타임리프 파일이 존재하는 폴더</li>
</ul>
<hr>
<p>@springbooApplication (1+2번을 포함하는 어노테이션)</p>
<ol>
<li><p>&lt;context:component-scan basePackgages=“kr.hs.study.beans”/&gt; 
kr.hs.study.beans패키지아래에 있는 클래스들을 스캔해서 어노테이션을 분석한 후, 객체 생성하고, 컨테이너에 보관해라!</p>
</li>
<li><p>프로젝트 실행에 필요한 기본적인 bean 들을 생성한 후, 객체에 보관해라</p>
</li>
</ol>
]]></description>
        </item>
        <item>
            <title><![CDATA[TIL spring 정리]]></title>
            <link>https://velog.io/@yeseo_052/TIL-spring-%EC%A0%95%EB%A6%AC</link>
            <guid>https://velog.io/@yeseo_052/TIL-spring-%EC%A0%95%EB%A6%AC</guid>
            <pubDate>Mon, 27 Apr 2026 14:32:40 GMT</pubDate>
            <description><![CDATA[<p>Spring Framework란?</p>
<ol>
<li>자바 기반 응용 프로그램 개발 프레임워크</li>
<li>2003년 6월 Rod Johnson 발표</li>
<li>모든 Java 애플리케이션 개발 이용 ㄱㄴ</li>
<li>Java EE 기반 웹 애플리케이션 개발</li>
</ol>
<table>
<thead>
<tr>
<th></th>
<th>스프링프레임워크</th>
<th>스프링부트</th>
</tr>
</thead>
<tbody><tr>
<td>특징</td>
<td>IOC, DI, AOP</td>
<td>auto/내장서버</td>
</tr>
<tr>
<td>복잡도</td>
<td>설정 복잡</td>
<td>최소한의 설정</td>
</tr>
<tr>
<td>프젝go</td>
<td>수동으로 설정</td>
<td>initalizer 프젝 생성</td>
</tr>
<tr>
<td>배포</td>
<td>외부서버 배포</td>
<td>내장서버 인한 단독 실행 가능</td>
</tr>
</tbody></table>
<p>⇒ Spring Framework는 기반 기술, Spring Boot는 Spring을 더 쉽고 빠르게 쓰게 해주는 도구다. </p>
<h4 id="spring-framework">Spring Framework</h4>
<ul>
<li><p>경량 컨테이너</p>
</li>
<li><p>POJO 방식</p>
</li>
<li><p><strong>IoC 지원 (제어의 역전)</strong></p>
<ul>
<li><p>객체생성이나 관리 그런 부분이 Spring이 다 해줌. 개발자는 그걸 요청하는 코딩만 하면 되는 것. (예전에는 객체생성이나 관리까지 개발자가 함)</p>
</li>
<li><p>제어의 역전</p>
</li>
<li><p>스프링 컨테이너 객체 생성</p>
</li>
<li><p>개발 효율성(up) 유지보수 용이</p>
<p>&lt;주요 특징&gt;</p>
<p>→ 객체 생성, 초기화 자동 관리</p>
<p>→ 의존 관계를 자동으로 연결 편리 제공</p>
<p>→ 유연한 구조로 설정 변경 용이</p>
<p>→ 낮은 결합도로 유지보수 용이</p>
<p>⇒IoC는 매니저(소속사)가 있다는 느낌</p>
</li>
</ul>
</li>
<li><p>DI 지원</p>
</li>
<li><p>AOP 지원</p>
</li>
</ul>
]]></description>
        </item>
        <item>
            <title><![CDATA[TIL C# 구조이해]]></title>
            <link>https://velog.io/@yeseo_052/TIL-C-%EA%B5%AC%EC%A1%B0%EC%9D%B4%ED%95%B4</link>
            <guid>https://velog.io/@yeseo_052/TIL-C-%EA%B5%AC%EC%A1%B0%EC%9D%B4%ED%95%B4</guid>
            <pubDate>Thu, 23 Apr 2026 16:56:32 GMT</pubDate>
            <description><![CDATA[<h3 id="등록-버튼-로직-btnregister_click">등록 버튼 로직 (btnRegister_Click)</h3>
<h4 id="입력값-가져오기">입력값 가져오기</h4>
<pre><code>string name = txtName.Text;
string studentId = txtStudentId.Text;
string phone = txtPhone.Text;</code></pre><p>TextBox는 무조건 .Text</p>
<h4 id="유효성-검사">유효성 검사</h4>
<pre><code>if (string.IsNullOrEmpty(name) || string.IsNullOrEmpty(studentId))</code></pre><p>null 또는 빈 문자열 체크</p>
<h4 id="messagebox-자주-나옴">MessageBox (자주 나옴)</h4>
<pre><code>MessageBox.Show(&quot;메시지&quot;, &quot;제목&quot;, MessageBoxButton.OK, MessageBoxImage.Warning);</code></pre><p>구성</p>
<ul>
<li>내용</li>
<li>제목</li>
<li>버튼 종류</li>
<li>아이콘</li>
</ul>
<h4 id="combobox-값-가져오기">ComboBox 값 가져오기</h4>
<pre><code>if (cmbDepartment.SelectedItem is ComboBoxItem seleted)
{
    dept = seleted.Content.ToString();
}</code></pre><p>선택된 항목 → SelectedItem
실제 값 → Content</p>
<h4 id="datepicker-값-처리">DatePicker 값 처리</h4>
<pre><code>string birth = dpBirthday.SelectedDate?.ToString(&quot;yyyy-MM-dd&quot;) ?? (&quot;미등록&quot;);</code></pre><p>SelectedDate → nullable(DateTime?)
?. → 값 있으면 실행
?? → null이면 대체값</p>
<p>날짜 있으면 → 포맷 변환
없으면 → &quot;미등록&quot;</p>
<h3 id="초기화-버튼-btnreset_click">초기화 버튼 (btnReset_Click)</h3>
<pre><code>txtName.Text = &quot;&quot;;
cmbDepartment.SelectedIndex = -1;
dpBirthday.SelectedDate = null;</code></pre><p>TextBox → &quot;&quot;
ComboBox → -1 (선택 해제)
DatePicker → null</p>
<h4 id="포커스-이동">포커스 이동</h4>
<pre><code>txtName.Focus(); //커서를 이름칸으로 이동</code></pre>]]></description>
        </item>
        <item>
            <title><![CDATA[TIL xaml 화면 기능]]></title>
            <link>https://velog.io/@yeseo_052/TIL-xaml-%ED%99%94%EB%A9%B4-%EA%B8%B0%EB%8A%A5</link>
            <guid>https://velog.io/@yeseo_052/TIL-xaml-%ED%99%94%EB%A9%B4-%EA%B8%B0%EB%8A%A5</guid>
            <pubDate>Thu, 23 Apr 2026 14:53:41 GMT</pubDate>
            <description><![CDATA[<p>수행공부 겸! 
x:Name은 코드에서 컨트롤을 직접 접근하기 위한 이름. 
즉, UI&lt;-&gt;코드 연결해주는 역할.</p>
<ol>
<li>TextBlock 문자열을 시각적으로 보여줌.</li>
<li>TextBox 문자열 입력 할 수 있는 Box &lt;입력값&gt;</li>
<li>ComboBox 여러 선택지 중 하나선택! &lt;선택값&gt;</li>
<li>DatePicker 날짜 입력 전용 &lt;날짜&gt;</li>
</ol>
<p>초기화 버튼 핵심</p>
<pre><code>.Text = &quot;&quot;;
.SelectedIndex = -1;
.SelectedDate = null;</code></pre><p>다음에는 C#부분도 해보겠습니당</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[0421 TIL]]></title>
            <link>https://velog.io/@yeseo_052/d</link>
            <guid>https://velog.io/@yeseo_052/d</guid>
            <pubDate>Tue, 21 Apr 2026 14:59:38 GMT</pubDate>
            <description><![CDATA[<p><img src="https://velog.velcdn.com/images/yeseo_052/post/e1a9091c-40b0-4560-aa66-cd7ef0976c3d/image.png" alt="">
오늘은 MyJob이라는 프로젝트의 기획서를 작성해보았다.
오랜만에 기획서를 작성하니 잠깐의 추억이....&gt;&lt;</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[[코딩테스트][Python] 세로 읽기 - (Level 0)]]></title>
            <link>https://velog.io/@yeseo_052/%EC%BD%94%EB%94%A9%ED%85%8C%EC%8A%A4%ED%8A%B8Python-%EC%84%B8%EB%A1%9C-%EC%9D%BD%EA%B8%B0-Level-0</link>
            <guid>https://velog.io/@yeseo_052/%EC%BD%94%EB%94%A9%ED%85%8C%EC%8A%A4%ED%8A%B8Python-%EC%84%B8%EB%A1%9C-%EC%9D%BD%EA%B8%B0-Level-0</guid>
            <pubDate>Mon, 20 Apr 2026 14:54:06 GMT</pubDate>
            <description><![CDATA[<p><img src="https://velog.velcdn.com/images/yeseo_052/post/e6619dc6-41a1-4c5e-a874-dd43a51e7dd2/image.png" alt="">
문제 : 문자열 my_string과 두 정수 m, c가 주어집니다. my_string을 한 줄에 m 글자씩 가로로 적었을 때 왼쪽부터 세로로 c번째 열에 적힌 글자들을 문자열로 return 하는 solution 함수를 작성해 주세요.</p>
<p>Python 소스 답 : </p>
<pre><code>def solution(my_string, m, c):
    answer = &#39;&#39;
    for i in range(c-1,len(my_string),m) :
        answer+=my_string[i]
    return answer</code></pre><p>m: 간격(열 개수 느낌)
c: 몇 번째 열인지</p>
<p>range(c-1, len(my_string), m)
→ (c-1)부터 시작해서 m씩 건너뛰면서 인덱스 선택합니다! 끄읕!</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[[코딩테스트][Go] 숫자 비교하기 & 각도기 - (Level 0)]]></title>
            <link>https://velog.io/@yeseo_052/%EC%BD%94%EB%94%A9%ED%85%8C%EC%8A%A4%ED%8A%B8Go-%EC%88%AB%EC%9E%90-%EB%B9%84%EA%B5%90%ED%95%98%EA%B8%B0-%EA%B0%81%EB%8F%84%EA%B8%B0-Level-0</link>
            <guid>https://velog.io/@yeseo_052/%EC%BD%94%EB%94%A9%ED%85%8C%EC%8A%A4%ED%8A%B8Go-%EC%88%AB%EC%9E%90-%EB%B9%84%EA%B5%90%ED%95%98%EA%B8%B0-%EA%B0%81%EB%8F%84%EA%B8%B0-Level-0</guid>
            <pubDate>Fri, 17 Apr 2026 04:37:22 GMT</pubDate>
            <description><![CDATA[<p><img src="https://velog.velcdn.com/images/yeseo_052/post/4a8fc986-7411-46e6-a9ca-66e5ffbe708b/image.png" alt=""></p>
<p>Go 소스 답 : =</p>
<pre><code>func solution(num1 int, num2 int) int {
    if num1 == num2{
        return 1;
    }else{
        return -1;
    }
}</code></pre><p>num1과 num2가 같다면 1을 return 아니라면 -1로 return 한다.</p>
<p><img src="https://velog.velcdn.com/images/yeseo_052/post/d8f833b0-3f2b-4c86-990c-b9ed8ea0e9ee/image.png" alt=""></p>
<p>Go 소스 답 :=</p>
<pre><code>func solution(angle int) int {
    if angle&gt;0 &amp;&amp; angle&lt;90{
        return 1
    }else if angle==90{
        return 2
    }else if angle&gt;90 &amp;&amp; angle&lt;180 {
        return 3
    }else{
        return 4
    }
}</code></pre><p>신기하게도 else if angle == 180으로 return 4를 하면 에러가 생기더라구요? else if로 하고 싶다면? 조건문 바깥에도 return 0을 해주셔야 합니다!</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[GoLang If else 활용]]></title>
            <link>https://velog.io/@yeseo_052/TIL-pdg077tp</link>
            <guid>https://velog.io/@yeseo_052/TIL-pdg077tp</guid>
            <pubDate>Wed, 15 Apr 2026 14:58:19 GMT</pubDate>
            <description><![CDATA[<p>GoLang Type을 공부해봤으니 이번에는 조건문을 사용해보도록 하겠슴다.</p>
<h1 id="ifelse">if/else</h1>
<p><img src="https://velog.velcdn.com/images/yeseo_052/post/e0f29544-dca6-42e7-83b6-61152d1f0e04/image.png" alt=""></p>
<h3 id="1-if-다음에-조건문은-boolean식으로-표현해야-한다-0-and-1-사용불가-error">1. if 다음에 (조건문)은 Boolean식으로 표현해야 한다. (0 and 1 사용불가 error)</h3>
<p><strong>안</strong>되는 조건
ex) </p>
<pre><code>if 1 {
    // 에러 발생
}</code></pre><p>Go는 이걸 안 해줌니다...</p>
<pre><code>x := 10

if x {   // ❌ 에러
    fmt.Println(&quot;실행&quot;)
}
</code></pre><p>에러 이유 :
  ㅣ x는 int인데, if는 bool만 받습니다.
그럼 어떻게 해야하나?
-&gt; 직접 비교해서 bool을 만들어야 합니다.</p>
<pre><code>x := 10
if x&gt; 0{
    fmt.Println(&quot;실행&quot;)
}</code></pre><p>되는 조건문
ex)</p>
<pre><code>if true {
    fmt.Println(&quot;항상 실행&quot;)
}</code></pre><p>여기서 Print문이 궁금할 수 있는데 fmt는 java로 비유하자면 System.out 과 비슷한 느낌입니다! Go는 fmt 패키지의 함수 사용을 하는겁니당!</p>
<p><strong>Go에서는 if 안에 무조건 true/false가 나오는 식만 써야 한다</strong></p>
<h3 id="2-을-안-쓰지만-는-무조건-써줌">2. ()을 안 쓰지만 {}는 무조건 써줌.</h3>
<p>if (조건문bool) { } &lt;- 조건문 bool은 ()바깥에다가 작성해도 된다. but 꼭 {} 안에 넣어야 한다.</p>
<h3 id="else-if-혹은-else를-쓸-때-반드시-전-조건의">else if 혹은 else를 쓸 때 반드시 전 조건의</h3>
<p>올바른 예시</p>
<pre><code>if(){
}else{
}</code></pre><p>but Go는 줄바꿈이나 ;붙여버리면 문장이 끝났다고 생각해 error가 발생한다.
error 예시 </p>
<pre><code>}
(줄바꿈)
else</code></pre><pre><code>};
else</code></pre><h4 id="알면좋은거">알면좋은거...?</h4>
<p>Go의 if는 이렇게 쓸 수 있다.</p>
<pre><code>if 초기문; 조건문{
    //실행
}</code></pre><p>초기문 -&gt; 선택
조건문 -&gt; 반드시 bool</p>
<p>&lt;소스 해석&gt;</p>
<ol>
<li>초기문 -&gt; 먼저 실행됨</li>
<li>조건문 -&gt; 조건 검사</li>
<li>true면 실행</li>
</ol>
<p>but 초기문은 if문 안에서만 살아있는 변수다. 바깥에서 불러오면 error(범위 밖)가 발생한다.</p>
<p>❔❔초기문; &lt;- ; 왜 쓰는 건가요?</p>
<blockquote>
<p>조건문과 초기문을 구별하기 위해서임!</p>
</blockquote>
<p>진짜 핵심만 다시 딱 요약하자면?
if 조건 {} → 기본
if 실행문; 조건 {} → 고급 (근데 엄청 자주 씀)</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[[코딩테스트][Go] 나이 출력 & 두 수의 나눗셈 - (Level 0)]]></title>
            <link>https://velog.io/@yeseo_052/TIL-fulhwdj0</link>
            <guid>https://velog.io/@yeseo_052/TIL-fulhwdj0</guid>
            <pubDate>Tue, 14 Apr 2026 14:31:41 GMT</pubDate>
            <description><![CDATA[<p>저번에 공부한 Go를 쉬운문제로 활용해보겠습니다!
<img src="https://velog.velcdn.com/images/yeseo_052/post/56d2501f-378a-496e-9947-829eb6095dd3/image.png" alt="">
Go 답코드</p>
<pre><code>func solution(age int) int {
    return 2023-age
}</code></pre><p>년도에다가 그냥 빼는 문제라 빠르게 풀었숩니다 :)</p>
<h2 id="두-수의-나눗셈">두 수의 나눗셈</h2>
<p><img src="https://velog.velcdn.com/images/yeseo_052/post/16036f00-7105-40b9-9860-62bcf5dfab15/image.png" alt=""></p>
<pre><code>func solution(num1 int, num2 int) int {
    return int(float64(num1) / float64(num2) * 1000)
}</code></pre><p>처음에는 그냥 (num1/num2)*1000을 했는데 그러면 소수점은 스킵해서 원하는 출력값이 안 나와서 보니 float64로 소수점까지 계산을 하게 한 후 int()으로 변경하는 방식이었숩니다!! </p>
<p>Go를 type지정 하는 것 밖에 잘 몰랐는데 뭔가 쉬운문제로 활용해보니 더 기억에 남을 것 같습니다!!</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[TIL]]></title>
            <link>https://velog.io/@yeseo_052/TIL-bw98e298</link>
            <guid>https://velog.io/@yeseo_052/TIL-bw98e298</guid>
            <pubDate>Mon, 13 Apr 2026 14:53:48 GMT</pubDate>
            <description><![CDATA[<p>한 번 바이브코딩으로 하기전에! 그래도 Go 언어도 알며 써야한다!라고 생각해 기초 문법을 정리해보았습니다</p>
<p><strong>변수 선언</strong>
var (변수명) (type) = (초기값)</p>
<pre><code>var a int = 1</code></pre><p>const는 var 대신 const를 붙이면 되고, 여러개를 묶어서 지정도 가능하다.</p>
<pre><code>const (
    a = &quot;A&quot;
    b = &quot;B&quot;
)</code></pre><p>Go는 파이썬처럼 불편하게 +=1을 굳이 하지 않아도 됨니다.
var p *int
var q ^int
var k int = 10</p>
<p>보다보니...뇌정지가 많이 와서..차근차근 배우도록 하겠습니다!!! ㅎㅎㅎ</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[[코딩테스트][Mysql] 여러 기준으로 정렬하기 - (Level 1)]]></title>
            <link>https://velog.io/@yeseo_052/%EC%BD%94%EB%94%A9%ED%85%8C%EC%8A%A4%ED%8A%B8Mysql-%EC%97%AC%EB%9F%AC-%EA%B8%B0%EC%A4%80%EC%9C%BC%EB%A1%9C-%EC%A0%95%EB%A0%AC%ED%95%98%EA%B8%B0-Level-1</link>
            <guid>https://velog.io/@yeseo_052/%EC%BD%94%EB%94%A9%ED%85%8C%EC%8A%A4%ED%8A%B8Mysql-%EC%97%AC%EB%9F%AC-%EA%B8%B0%EC%A4%80%EC%9C%BC%EB%A1%9C-%EC%A0%95%EB%A0%AC%ED%95%98%EA%B8%B0-Level-1</guid>
            <pubDate>Sun, 12 Apr 2026 14:08:33 GMT</pubDate>
            <description><![CDATA[<p><img src="https://velog.velcdn.com/images/yeseo_052/post/bffce079-48a0-4910-81b7-755914b8d967/image.png" alt=""></p>
<p>정답 SQL쿼리</p>
<pre><code>SELECT ANIMAL_ID, NAME, DATETIME FROM ANIMAL_INS ORDER BY NAME ASC, DATETIME DESC;</code></pre><p>아이디와 이름, 보호 시작일을 조회하라고 했으니 SELCET 다음에 아이디, 이름, 보호 시작일을 넣고 ANIMAL_INS 테이블을 호출한다. </p>
<p>그리고 가장 중요한 것!!
테이블에서 SELECT로 데이터를 조회할 때, ORDER BY를 추가하여 지정된 컬럼을 기준으로 정렬 할 수 있습니다.</p>
<p>오름차순은 </p>
<blockquote>
<p>ASC</p>
</blockquote>
<p>내림차순은</p>
<blockquote>
<p>DESC</p>
</blockquote>
<p>더 오름차순과 내림차순 정렬 조회가 궁금하시다면
<a href="https://extbrain.tistory.com/51">https://extbrain.tistory.com/51</a> &lt;- 꼭 참고해보십시오!! <del>저도 이거 보고 했어요 ㅎㅎ</del></p>
]]></description>
        </item>
        <item>
            <title><![CDATA[[코딩테스트][python] 팩토리얼 - (Level 0)]]></title>
            <link>https://velog.io/@yeseo_052/TIL-6trdjyde</link>
            <guid>https://velog.io/@yeseo_052/TIL-6trdjyde</guid>
            <pubDate>Thu, 09 Apr 2026 14:53:51 GMT</pubDate>
            <description><![CDATA[<p><img src="https://velog.velcdn.com/images/yeseo_052/post/8f2c1522-b901-4994-9e11-16031d1073ef/image.png" alt=""></p>
<p>Python 정답</p>
<pre><code>def solution(n):
    fact = 1
    i = 1

    while True:
        fact *= i

        if fact &gt; n:
            return i - 1

        i += 1</code></pre><p>이번 소스는 “팩토리얼을 누적하다가 n을 넘기기 직전의 i를 찾는다” 그래서 return값이 저렇게 풀이된다.! <del>졸려서 설명이 작아졌어요..ㅎ</del></p>
]]></description>
        </item>
        <item>
            <title><![CDATA[[코딩테스트][python] 최빈값 구하기 - (Level 0)]]></title>
            <link>https://velog.io/@yeseo_052/%EC%BD%94%EB%94%A9%ED%85%8C%EC%8A%A4%ED%8A%B8python-%EC%B5%9C%EB%B9%88%EA%B0%92-%EA%B5%AC%ED%95%98-Level-0</link>
            <guid>https://velog.io/@yeseo_052/%EC%BD%94%EB%94%A9%ED%85%8C%EC%8A%A4%ED%8A%B8python-%EC%B5%9C%EB%B9%88%EA%B0%92-%EA%B5%AC%ED%95%98-Level-0</guid>
            <pubDate>Wed, 08 Apr 2026 15:41:15 GMT</pubDate>
            <description><![CDATA[<p><img src="https://velog.velcdn.com/images/yeseo_052/post/2d666490-0faa-49e7-b8af-20f499f3831a/image.png" alt="">
python풀이</p>
<pre><code>def solution(array):
    count = [0] * (max(array) + 1)

    for i in array:
        count[i] += 1

    max_count = max(count)

    if count.count(max_count) &gt; 1:
        return -1

    return count.index(max_count)</code></pre><p>사실 오류가 많이 생겨서 ai랑 함께 풀어보았습니다,,,,,
array의 max값만큼 배열을 만들어서 for문으로 count 배열에다가 횟수추가를 합니다!
but 최빈값이 여러개라면? -1으로 return하는 로직으로 구현하였습니다!</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[TIL]]></title>
            <link>https://velog.io/@yeseo_052/TIL-t43pbqxg</link>
            <guid>https://velog.io/@yeseo_052/TIL-t43pbqxg</guid>
            <pubDate>Wed, 08 Apr 2026 13:13:56 GMT</pubDate>
            <description><![CDATA[<p>오! 늘! 도! 소스해석!</p>
<p><img src="https://velog.velcdn.com/images/yeseo_052/post/68bebf56-201e-43d8-9a5a-d16e20c16b2c/image.png" alt="">
먼저 이 함수는 총 가격을 계산하는 로직입니다!</p>
<pre><code>document.querySelectorAll(&#39;.placed-sticker&#39;).forEach(sticker =&gt; {
  const price = parseInt(sticker.dataset.price) || 0;
  total += price;
});</code></pre><p>.placed-sticker 클래스를 가진 모든 요소를 가져옴
각 요소의 data-price 값을 읽어서 숫자로 변환
parseInt(...) || 0 → 값이 없거나 NaN이면 0 처리
total에 계속 더함</p>
<p><strong>즉, 화면에 놓인 스티커들의 가격을 모두 더하는 부분</strong></p>
<pre><code>document.getElementById(&#39;totalPrice&#39;).textContent = total;</code></pre><p>id=&quot;totalPrice&quot; 요소에 총합을 텍스트로 출력</p>
<pre><code>const btn = document.getElementById(&#39;completeBtn&#39;);</code></pre><p>완료 버튼 가져오기</p>
<pre><code>if (total &gt; currentPoints) {
  btn.disabled = true;
  btn.textContent = &#39;완료 (포인트 부족)&#39;;
}</code></pre><p>총 가격이 현재 보유 포인트(currentPoints)보다 크면</p>
<p>버튼 비활성화
텍스트: &quot;완료 (포인트 부족)&quot;</p>
<pre><code>else {
  btn.disabled = false;
  btn.textContent = &#39;완료&#39;;
}</code></pre><p>포인트가 충분하면</p>
<p>버튼 활성화
텍스트: &quot;완료&quot;</p>
<p>return total; 총 가격을 반환합니다!! 끄읕</p>
]]></description>
        </item>
    </channel>
</rss>