<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>공공</title>
    <link>https://zero-talk.tistory.com/</link>
    <description>함께 일하고 싶은 개발자를 꿈꾸는 예비개발자의 공부 기록</description>
    <language>ko</language>
    <pubDate>Fri, 26 Jun 2026 13:40:14 +0900</pubDate>
    <generator>TISTORY</generator>
    <ttl>100</ttl>
    <managingEditor>gxxg</managingEditor>
    <image>
      <title>공공</title>
      <url>https://tistory1.daumcdn.net/tistory/6584132/attach/a4cacd9afb3a4cd99ada1185e69df34e</url>
      <link>https://zero-talk.tistory.com</link>
    </image>
    <item>
      <title>[Java] 회원 관리 시스템 구현하기 - 2탄</title>
      <link>https://zero-talk.tistory.com/164</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;Java logo.png&quot; data-origin-width=&quot;500&quot; data-origin-height=&quot;500&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/l60Bm/btsL7dr9Yrw/apkPI2RMNvzeuJ6mnCBKL0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/l60Bm/btsL7dr9Yrw/apkPI2RMNvzeuJ6mnCBKL0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/l60Bm/btsL7dr9Yrw/apkPI2RMNvzeuJ6mnCBKL0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fl60Bm%2FbtsL7dr9Yrw%2FapkPI2RMNvzeuJ6mnCBKL0%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;200&quot; height=&quot;200&quot; data-filename=&quot;Java logo.png&quot; data-origin-width=&quot;500&quot; data-origin-height=&quot;500&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&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;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&quot;&gt;앞서 구현한 1탄 먼저 보고 와주세요!&lt;/span&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1738717556407&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;[Java] 회원 관리 시스템 구현하기 - 1탄&quot; data-og-description=&quot;오늘은 순수 자바 코드로 간단한 회원 관리 시스템을 구현해볼 거예요!저는 인텔리제이를 사용하고 있습니다. :)&amp;nbsp;  프로젝트 구조&amp;nbsp;&amp;nbsp;&amp;nbsp;  Grade.java (회원 등급)&amp;nbsp;회원 등급은 일반 등급과 VIP 등&quot; data-og-host=&quot;zero-talk.tistory.com&quot; data-og-source-url=&quot;https://zero-talk.tistory.com/163&quot; data-og-url=&quot;https://zero-talk.tistory.com/163&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/by2FKU/hyYb67SD4Q/7WxgereHT6iEHMnkPrAak0/img.png?width=500&amp;amp;height=500&amp;amp;face=0_0_500_500,https://scrap.kakaocdn.net/dn/chXlEY/hyYckkLnpH/f21QfQRSj5nJ4KnUpcoLQ0/img.png?width=500&amp;amp;height=500&amp;amp;face=0_0_500_500,https://scrap.kakaocdn.net/dn/0aeri/hyX7PNvPee/3K6jjI2CjRitqDeGK3bJ2K/img.png?width=570&amp;amp;height=272&amp;amp;face=0_0_570_272&quot;&gt;&lt;a href=&quot;https://zero-talk.tistory.com/163&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://zero-talk.tistory.com/163&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/by2FKU/hyYb67SD4Q/7WxgereHT6iEHMnkPrAak0/img.png?width=500&amp;amp;height=500&amp;amp;face=0_0_500_500,https://scrap.kakaocdn.net/dn/chXlEY/hyYckkLnpH/f21QfQRSj5nJ4KnUpcoLQ0/img.png?width=500&amp;amp;height=500&amp;amp;face=0_0_500_500,https://scrap.kakaocdn.net/dn/0aeri/hyX7PNvPee/3K6jjI2CjRitqDeGK3bJ2K/img.png?width=570&amp;amp;height=272&amp;amp;face=0_0_570_272');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;[Java] 회원 관리 시스템 구현하기 - 1탄&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;오늘은 순수 자바 코드로 간단한 회원 관리 시스템을 구현해볼 거예요!저는 인텔리제이를 사용하고 있습니다. :)&amp;nbsp;  프로젝트 구조&amp;nbsp;&amp;nbsp;&amp;nbsp;  Grade.java (회원 등급)&amp;nbsp;회원 등급은 일반 등급과 VIP 등&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;zero-talk.tistory.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; background-color: #ffffff; color: #000000; text-align: center;&quot;&gt;   프로젝트 구조&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;298&quot; data-origin-height=&quot;614&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/m1T8R/btsL6sXKIm7/FFX01Jt1bUQK9e3ADlAsfk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/m1T8R/btsL6sXKIm7/FFX01Jt1bUQK9e3ADlAsfk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/m1T8R/btsL6sXKIm7/FFX01Jt1bUQK9e3ADlAsfk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fm1T8R%2FbtsL6sXKIm7%2FFFX01Jt1bUQK9e3ADlAsfk%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;298&quot; height=&quot;614&quot; data-origin-width=&quot;298&quot; data-origin-height=&quot;614&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&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 style=&quot;background-color: #ffffff; text-align: center;&quot;&gt;  DiscountPolicy.java (할인 정책 인터페이스)&lt;/span&gt;&lt;span style=&quot;background-color: #ffffff; text-align: center;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1738718155639&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;package hello.core.discount;

import hello.core.member.Member;

public interface DiscountPolicy {

    // @return 할인 대상 금액 ex. 1000
    int discount(Member member, int price);
}&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; background-color: #ffffff; color: #000000; text-align: center;&quot;&gt;   FixDiscountPolicy.java (할인 정책 구현체)&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&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 style=&quot;background-color: #ffffff;&quot;&gt;if문을 사용해 회원의 등급이 VIP일 경우 1000원을 할인해주도록 구현합니다.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1738718223947&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;package hello.core.discount;

import hello.core.member.Grade;
import hello.core.member.Member;

public class FixDiscountPolicy implements DiscountPolicy {

    private int discountFixAmount = 1000;

    @Override
    public int discount(Member member, int price) {
        if (member.getGrade() == Grade.VIP) {
            return discountFixAmount;
        } else {
            return 0;
        }
    }
}&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; background-color: #ffffff; color: #000000; text-align: center;&quot;&gt; &lt;span style=&quot;background-color: #ffffff; text-align: center;&quot;&gt;  Order.java&lt;/span&gt; (주문 객체)&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&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 style=&quot;background-color: #ffffff; text-align: center;&quot;&gt;물품 가격에서 할인 가격을 빼는 간단한 비즈니스 로직을 추가합니다. (할인)&lt;/span&gt;&lt;span style=&quot;background-color: #ffffff; text-align: center;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1738718465141&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;package hello.core.order;

public class Order {

    private Long memberId;
    private String itemName;
    private int itemPrice;
    private int discountPrice;

    public Order(Long memberId, String itemName, int itemPrice, int discountPrice) {
        this.memberId = memberId;
        this.itemName = itemName;
        this.itemPrice = itemPrice;
        this.discountPrice = discountPrice;
    }

    // 비즈니스 로직 (계산)
    public int calculatePrice() {
        return itemPrice - discountPrice;
    }

    public Long getMemberId() {
        return memberId;
    }

    public void setMemberId(Long memberId) {
        this.memberId = memberId;
    }

    public String getItemName() {
        return itemName;
    }

    public void setItemName(String itemName) {
        this.itemName = itemName;
    }

    public int getItemPrice() {
        return itemPrice;
    }

    public void setItemPrice(int itemPrice) {
        this.itemPrice = itemPrice;
    }

    public int getDiscountPrice() {
        return discountPrice;
    }

    public void setDiscountPrice(int discountPrice) {
        this.discountPrice = discountPrice;
    }

    @Override
    public String toString() {
        return &quot;Order{&quot; +
                &quot;memberId=&quot; + memberId +
                &quot;, itemName='&quot; + itemName + '\'' +
                &quot;, itemPrice=&quot; + itemPrice +
                &quot;, discountPrice=&quot; + discountPrice +
                '}';
    }
}&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; background-color: #ffffff; color: #000000; text-align: center;&quot;&gt;   OrderService.java (주문 인터페이스)&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; background-color: #ffffff; color: #000000; text-align: center;&quot;&gt;Order 객체를 반환합니다. (memberId, itemName, itemPrice)&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1738718345733&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;package hello.core.order;

public interface OrderService {

    Order createOrder(Long memberId, String itemName, int itemPrice);
}&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; background-color: #ffffff; color: #000000; text-align: center;&quot;&gt;   OrderServiceImpl.java (주문 구현체)&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; background-color: #ffffff; color: #000000; text-align: center;&quot;&gt;memberId로 회원을 찾고 해당 회원이 VIP이면 할인을 해주도록 작성합니다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; background-color: #ffffff; color: #000000; text-align: center;&quot;&gt;할인이 되면 새로운 Order 객체가 생성될 테니 new Order를 반환합니다.&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1738718676978&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;package hello.core.order;

import hello.core.discount.DiscountPolicy;
import hello.core.discount.FixDiscountPolicy;
import hello.core.member.Member;
import hello.core.member.MemberRepository;
import hello.core.member.MemoryMemberRepository;

public class OrderServiceImpl implements OrderService {

    private final MemberRepository memberRepository = new MemoryMemberRepository();
    private final DiscountPolicy discountPolicy = new FixDiscountPolicy();

    @Override
    public Order createOrder(Long memberId, String itemName, int itemPrice) {
        Member member = memberRepository.findById(memberId);
        int discountPrice = discountPolicy.discount(member, itemPrice);
        
        return new Order(memberId, itemName, itemPrice, discountPrice);
    }
}&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; background-color: #ffffff; color: #000000; text-align: center;&quot;&gt;   OrderApp.java&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; background-color: #ffffff; color: #000000; text-align: center;&quot;&gt;지금까지 작성했던 코드를 실행할 클래스입니다.&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1738718818090&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;package hello.core;

import hello.core.order.Order;
import hello.core.member.Grade;
import hello.core.member.Member;
import hello.core.member.MemberService;
import hello.core.member.MemberServiceImpl;
import hello.core.order.OrderService;
import hello.core.order.OrderServiceImpl;

public class OrderApp {
    public static void main(String[] args) {

        MemberService memberService = new MemberServiceImpl();
        OrderService orderService = new OrderServiceImpl();

        Long memberId = 1L;
        Member member = new Member(memberId, &quot;memberA&quot;, Grade.VIP);
        memberService.join(member);

        Order order = orderService.createOrder(memberId, &quot;itemA&quot;, 10000);

        System.out.println(&quot;order = &quot; + order);
        System.out.println(&quot;order.calculatePrice = &quot; + order.calculatePrice());
    }
}&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; background-color: #ffffff; color: #000000; text-align: center;&quot;&gt;회원과 물품, 물품 가격, 등급에 따른 할인 가격이 출력되는 것을 확인할 수 있습니다.&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;575&quot; data-origin-height=&quot;80&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bdkwGp/btsL73WBvS9/4fLtAhlxiREXcJec996eU1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bdkwGp/btsL73WBvS9/4fLtAhlxiREXcJec996eU1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bdkwGp/btsL73WBvS9/4fLtAhlxiREXcJec996eU1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbdkwGp%2FbtsL73WBvS9%2F4fLtAhlxiREXcJec996eU1%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;575&quot; height=&quot;80&quot; data-origin-width=&quot;575&quot; data-origin-height=&quot;80&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; background-color: #ffffff; color: #000000; text-align: center;&quot;&gt;위와 같은 방식으로 java로 테스트를 하는 것보다 (main에서 실행)&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&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 style=&quot;background-color: #ffffff; text-align: center;&quot;&gt;api를 사용해 테스트를 하는 게 더 유용하므로 &lt;/span&gt;&lt;span style=&quot;background-color: #ffffff; text-align: center;&quot;&gt;해당 방법으로도 테스트를 해보겠습니다.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&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;264&quot; data-origin-height=&quot;305&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/6HwIP/btsL7g3mwfV/Y8nZCrPpqv7IqEfVCry2MK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/6HwIP/btsL7g3mwfV/Y8nZCrPpqv7IqEfVCry2MK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/6HwIP/btsL7g3mwfV/Y8nZCrPpqv7IqEfVCry2MK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F6HwIP%2FbtsL7g3mwfV%2FY8nZCrPpqv7IqEfVCry2MK%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;264&quot; height=&quot;305&quot; data-origin-width=&quot;264&quot; data-origin-height=&quot;305&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #353638; text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&quot;&gt;기존에 코드를 작성하던 main 디렉토리 말고 test 디렉토리에서 테스트를 할 수 있습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #353638; text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&quot;&gt;저는 OrderServiceTest 라는 이름으로 테스트용 java 클래스를 생성했어요.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #353638; text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #353638; text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #353638; text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; background-color: #ffffff; color: #000000; text-align: center;&quot;&gt;  OrderServiceTest.java (&lt;span style=&quot;background-color: #ffffff; text-align: center;&quot;&gt;JUnit 테스트&lt;/span&gt;)&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; background-color: #ffffff; color: #000000; text-align: center;&quot;&gt;이와 같은 방법으로 단위 테스트를 하는 게 중요합니다.&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1738719115172&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;package hello.core.order;

import hello.core.member.Grade;
import hello.core.member.Member;
import hello.core.member.MemberService;
import hello.core.member.MemberServiceImpl;
import org.assertj.core.api.Assertions;
import org.junit.jupiter.api.Test;

public class OrderServiceTest {

    MemberService memberService = new MemberServiceImpl();
    OrderService orderService = new OrderServiceImpl();

    @Test
    void createOrder() {
        Long memberId = 1L;
        Member member = new Member(memberId, &quot;memberA&quot;, Grade.VIP);
        memberService.join(member);

        Order order = orderService.createOrder(memberId, &quot;itemA&quot;, 10000);
        Assertions.assertThat(order.getDiscountPrice()).isEqualTo(1000);
    }
}&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; background-color: #ffffff; color: #000000; text-align: center;&quot;&gt; 해당 테스트 파일을 실행하면 실행이 잘 되는 것을 확인할 수 있습니다. &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;572&quot; data-origin-height=&quot;246&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ctE8gC/btsL8dEOc9m/kMqheZszo5OWh4PokQdRA0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ctE8gC/btsL8dEOc9m/kMqheZszo5OWh4PokQdRA0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ctE8gC/btsL8dEOc9m/kMqheZszo5OWh4PokQdRA0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FctE8gC%2FbtsL8dEOc9m%2FkMqheZszo5OWh4PokQdRA0%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;572&quot; height=&quot;246&quot; data-origin-width=&quot;572&quot; data-origin-height=&quot;246&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>☁️ 구름 x 카카오 Deep Dive 풀스택/Java</category>
      <category>java</category>
      <category>junit 테스트</category>
      <category>구현체</category>
      <category>단위 테스트</category>
      <category>자바</category>
      <category>프로젝트 구조</category>
      <category>할인</category>
      <category>할인 정책</category>
      <category>회원 관리</category>
      <category>회원 관리 시스템</category>
      <author>gxxg</author>
      <guid isPermaLink="true">https://zero-talk.tistory.com/164</guid>
      <comments>https://zero-talk.tistory.com/164#entry164comment</comments>
      <pubDate>Wed, 5 Feb 2025 10:34:29 +0900</pubDate>
    </item>
    <item>
      <title>[Java] 회원 관리 시스템 구현하기 - 1탄</title>
      <link>https://zero-talk.tistory.com/163</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;Java logo.png&quot; data-origin-width=&quot;500&quot; data-origin-height=&quot;500&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bng8Ma/btsL7sIxCu9/uIGFASozQh4YmU4btClgn0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bng8Ma/btsL7sIxCu9/uIGFASozQh4YmU4btClgn0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bng8Ma/btsL7sIxCu9/uIGFASozQh4YmU4btClgn0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbng8Ma%2FbtsL7sIxCu9%2FuIGFASozQh4YmU4btClgn0%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;200&quot; height=&quot;200&quot; data-filename=&quot;Java logo.png&quot; data-origin-width=&quot;500&quot; data-origin-height=&quot;500&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&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;p style=&quot;text-align: center;&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;style6&quot; /&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&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;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;570&quot; data-origin-height=&quot;272&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/6F5mD/btsL6QiUEu5/lWKtQSMJMUJgMUuq0uRKS1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/6F5mD/btsL6QiUEu5/lWKtQSMJMUJgMUuq0uRKS1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/6F5mD/btsL6QiUEu5/lWKtQSMJMUJgMUuq0uRKS1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F6F5mD%2FbtsL6QiUEu5%2FlWKtQSMJMUJgMUuq0uRKS1%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;570&quot; height=&quot;272&quot; data-origin-width=&quot;570&quot; data-origin-height=&quot;272&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&quot;&gt;  Grade.java (회원 등급)&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&quot;&gt;회원 등급은 일반 등급과 VIP 등급으로 나누었어요.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&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;pre id=&quot;code_1738644553026&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;package hello.core.member;

public enum Grade {
    BASIC,
    VIP
}&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&quot;&gt;  Member.java (회원 객체)&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&quot;&gt;회원은 간단하게 이름, id, 등급을 멤버 변수로 가질 거예요.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&quot;&gt;Getter 및 Setter를 사용하여 값에 접근이 가능합니다.&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1738644778257&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;package hello.core.member;

public class Member {

    private Long id;
    private String name;
    private Grade grade;

    // 생성자 생성
    public Member(Long id, String name, Grade grade) {
        this.id = id;
        this.name = name;
        this.grade = grade;
    }

    // 해당 메소드를 통해서  private의 값 세팅 가능
    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public Grade getGrade() {
        return grade;
    }

    public void setGrade(Grade grade) {
        this.grade = grade;
    }
}&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&quot;&gt;  MemberRepository.java (회원 저장소 인터페이스)&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&quot;&gt;회원을 저장하고 회원 id로 회원 찾기가 가능하도록 인터페이스를 구현합니다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&quot;&gt;Save() -&amp;gt; 회원 저장&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&quot;&gt;findById -&amp;gt; ID로 회원 찾기&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1738645106693&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;package hello.core.member;

public interface MemberRepository {
    // 회원 저장
    void save(Member member);
    // 회원 id로 회원 찾기
    Member findById(Long memberId);
}&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&quot;&gt;  MemoryMemberRepository.java (메모리 저장소 구현체)&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&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;HashMap에&amp;nbsp;저장 &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&quot;&gt;store.put(id,&amp;nbsp;member)&amp;nbsp;&amp;rarr;&amp;nbsp;회원&amp;nbsp;저장 &lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&quot;&gt;store.get(id)&amp;nbsp;&amp;rarr;&amp;nbsp;회원&amp;nbsp;조회&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1738645274923&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;package hello.core.member;

import java.util.HashMap;
import java.util.Map;

public class MemoryMemberRepository implements MemberRepository {

    // 저장소
    // HashMap 사용 시 동시성 이슈가 있을 수 있음 =&amp;gt; 여러 곳에서 접근 시
    private static Map&amp;lt;Long, Member&amp;gt; store = new HashMap&amp;lt;&amp;gt;();

    @Override
    public void save(Member member) {
        store.put(member.getId(), member);
    }

    @Override
    public Member findById(Long memberId) {
        return store.get(memberId);
    }
}&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&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;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&quot;&gt;여기서 HashMap을 사용했는데, HashMap의 경우 여러 스레드에서 동시에 접근하면&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&quot;&gt;동시성 이슈가 있을 수 있습니다. 따라서 추후에 ConcurrentHashMap을 사용하는 것을 권장드립니다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&quot;&gt;지금은 정말 간단하게 구현할 것이기 때문에 HashMap을 사용했습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&quot;&gt;  MemberService.java (회원 서비스 인터페이스)&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&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;pre id=&quot;code_1738645677073&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;package hello.core.member;

public interface MemberService {

    void join(Member member);

    Member findMember(Long memberId);
}&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&quot;&gt;  MemberServiceImpl.java (회원 서비스 구현체)&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&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;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&quot;&gt;join()&amp;nbsp;&amp;rarr;&amp;nbsp;회원&amp;nbsp;저장 &lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&quot;&gt;findMember() &amp;rarr; 회원 조회&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1738645751586&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;package hello.core.member;

// 구현체가 한 개만 있을 때는 인터페이스 명 뒤에 Impl 많이 씀.
public class MemberServiceImpl implements MemberService{

    private final MemberRepository memberRepository = new MemoryMemberRepository();

    @Override
    public void join(Member member) {
        memberRepository.save(member);
    }

    @Override
    public Member findMember(Long memberId) {
        return memberRepository.findById(memberId);
    }
}&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&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;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&quot;&gt;구현체를&amp;nbsp;직접&amp;nbsp;생성&amp;nbsp;(new&amp;nbsp;MemoryMemberRepository())&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&quot;&gt;&amp;rarr;&amp;nbsp;향후&amp;nbsp;DBMemberRepository&amp;nbsp;등을&amp;nbsp;추가하면&amp;nbsp;수정해야&amp;nbsp;함.&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&quot;&gt;Spring을&amp;nbsp;적용하면&amp;nbsp;DI(의존성&amp;nbsp;주입)으로&amp;nbsp;해결&amp;nbsp;가능&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&quot;&gt;  MemberApp.java&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&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;p style=&quot;text-align: center;&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;pre id=&quot;code_1738646314632&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;package hello.core;

import hello.core.member.Grade;
import hello.core.member.Member;
import hello.core.member.MemberService;
import hello.core.member.MemberServiceImpl;

public class MemberApp {

    public static void main(String[] args) {
        MemberService memberService = new MemberServiceImpl();
        Member member = new Member(1L, &quot;memberA&quot;, Grade.VIP);
        memberService.join(member);

        Member findMember = memberService.findMember(1L);
        System.out.println(&quot;new member = &quot; + member.getName());
        System.out.println(&quot;find Member = &quot; + findMember.getName());
    }
}&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&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;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;180&quot; data-origin-height=&quot;73&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/XBIa9/btsL7uNfJCn/w2aC7p1QsV6brw4cX8kGE0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/XBIa9/btsL7uNfJCn/w2aC7p1QsV6brw4cX8kGE0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/XBIa9/btsL7uNfJCn/w2aC7p1QsV6brw4cX8kGE0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FXBIa9%2FbtsL7uNfJCn%2Fw2aC7p1QsV6brw4cX8kGE0%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;300&quot; height=&quot;122&quot; data-origin-width=&quot;180&quot; data-origin-height=&quot;73&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&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;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&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;262&quot; data-origin-height=&quot;251&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bUnDJJ/btsL7DckuZT/2f3uX1K6XQUkbyDhgfKIFk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bUnDJJ/btsL7DckuZT/2f3uX1K6XQUkbyDhgfKIFk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bUnDJJ/btsL7DckuZT/2f3uX1K6XQUkbyDhgfKIFk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbUnDJJ%2FbtsL7DckuZT%2F2f3uX1K6XQUkbyDhgfKIFk%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;262&quot; height=&quot;251&quot; data-origin-width=&quot;262&quot; data-origin-height=&quot;251&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&quot;&gt;기존에 코드를 작성하던 main 디렉토리 말고 test 디렉토리에서 테스트를 할 수 있습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&quot;&gt;저는 MemberServiceTest 라는 이름으로 테스트용 java 클래스를 생성했어요.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&quot;&gt;  MemberServiceTest.java (JUnit 테스트)&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&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;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&quot;&gt;Assertions.assertThat(member).isEqualTo(findMember());로&amp;nbsp;회원&amp;nbsp;가입&amp;nbsp;및&amp;nbsp;조회&amp;nbsp;검증&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1738645982121&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;package hello.core.member;

import org.assertj.core.api.Assertions;
import org.junit.jupiter.api.Test;

public class MemberServiceTest {

    MemberService memberService = new MemberServiceImpl();

    @Test
        //given
    void join() {
        Member member = new Member(1L, &quot;memberA&quot;, Grade.VIP);

        // when
        memberService.join(member);
        Member findMember = memberService.findMember(1L);

        // then (검증하는 api)
        Assertions.assertThat(member).isEqualTo(findMember);
    }
}&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&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;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;455&quot; data-origin-height=&quot;293&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/vut6b/btsL5DLSHZt/Sl9EYfXMcAkB6l6Kv75nh0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/vut6b/btsL5DLSHZt/Sl9EYfXMcAkB6l6Kv75nh0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/vut6b/btsL5DLSHZt/Sl9EYfXMcAkB6l6Kv75nh0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fvut6b%2FbtsL5DLSHZt%2FSl9EYfXMcAkB6l6Kv75nh0%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;455&quot; height=&quot;293&quot; data-origin-width=&quot;455&quot; data-origin-height=&quot;293&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&quot;&gt;2탄에서는 간단한 할인 정책을 추가해보도록 하겠습니다!&lt;/span&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1738719362571&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;[Java] 회원 관리 시스템 구현하기 - 2탄&quot; data-og-description=&quot;오늘은 지난번에 간단하게 구현했던 회원 관리 시스템에서 할인 정책을 추가할 거예요.&amp;nbsp;앞서 구현한 1탄 먼저 보고 와주세요!&amp;nbsp;[Java] 회원 관리 시스템 구현하기 - 1탄오늘은 순수 자바 코드로 간&quot; data-og-host=&quot;zero-talk.tistory.com&quot; data-og-source-url=&quot;https://zero-talk.tistory.com/164&quot; data-og-url=&quot;https://zero-talk.tistory.com/164&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/bygycH/hyYcigbwVY/4Yy7mKvtqkcCkPKoJufRL0/img.png?width=500&amp;amp;height=500&amp;amp;face=0_0_500_500,https://scrap.kakaocdn.net/dn/QwhUx/hyYcbajlHc/CIU8P73K91REpnURgzAnt1/img.png?width=500&amp;amp;height=500&amp;amp;face=0_0_500_500,https://scrap.kakaocdn.net/dn/IahhM/hyX71mSIWg/aePS1kxPkhuAmGgBRd0D7K/img.png?width=298&amp;amp;height=614&amp;amp;face=0_0_298_614&quot;&gt;&lt;a href=&quot;https://zero-talk.tistory.com/164&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://zero-talk.tistory.com/164&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/bygycH/hyYcigbwVY/4Yy7mKvtqkcCkPKoJufRL0/img.png?width=500&amp;amp;height=500&amp;amp;face=0_0_500_500,https://scrap.kakaocdn.net/dn/QwhUx/hyYcbajlHc/CIU8P73K91REpnURgzAnt1/img.png?width=500&amp;amp;height=500&amp;amp;face=0_0_500_500,https://scrap.kakaocdn.net/dn/IahhM/hyX71mSIWg/aePS1kxPkhuAmGgBRd0D7K/img.png?width=298&amp;amp;height=614&amp;amp;face=0_0_298_614');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;[Java] 회원 관리 시스템 구현하기 - 2탄&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;오늘은 지난번에 간단하게 구현했던 회원 관리 시스템에서 할인 정책을 추가할 거예요.&amp;nbsp;앞서 구현한 1탄 먼저 보고 와주세요!&amp;nbsp;[Java] 회원 관리 시스템 구현하기 - 1탄오늘은 순수 자바 코드로 간&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;zero-talk.tistory.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>☁️ 구름 x 카카오 Deep Dive 풀스택/Java</category>
      <category>java</category>
      <category>junit 테스트</category>
      <category>구현체</category>
      <category>자바</category>
      <category>프로젝트 구조</category>
      <category>회원 가입</category>
      <category>회원 객체</category>
      <category>회원 관리</category>
      <category>회원 관리 시스템</category>
      <category>회원 조회</category>
      <author>gxxg</author>
      <guid isPermaLink="true">https://zero-talk.tistory.com/163</guid>
      <comments>https://zero-talk.tistory.com/163#entry163comment</comments>
      <pubDate>Tue, 4 Feb 2025 14:22:03 +0900</pubDate>
    </item>
    <item>
      <title>[BaekJoon] 백준 2단계 문제 풀이 모음 (Java 자바)</title>
      <link>https://zero-talk.tistory.com/162</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;baekjoon logo.png&quot; data-origin-width=&quot;2834&quot; data-origin-height=&quot;1480&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ZxIxM/btsLPt2e5gv/5ZAss3HT7iEvU2PLmKszI0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ZxIxM/btsLPt2e5gv/5ZAss3HT7iEvU2PLmKszI0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ZxIxM/btsLPt2e5gv/5ZAss3HT7iEvU2PLmKszI0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FZxIxM%2FbtsLPt2e5gv%2F5ZAss3HT7iEvU2PLmKszI0%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;261&quot; data-filename=&quot;baekjoon logo.png&quot; data-origin-width=&quot;2834&quot; data-origin-height=&quot;1480&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; 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;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h4 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; background-color: #ffffff; color: #000000;&quot;&gt;&lt;b&gt;&lt;span style=&quot;text-align: center;&quot;&gt; &amp;nbsp;&lt;/span&gt;문제&lt;span&gt;&amp;nbsp;&lt;/span&gt;설명&lt;/b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; text-align: start;&quot;&gt;#&lt;span&gt; 1330 두 수 비교하기&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #555555; text-align: start;&quot;&gt;두 정수 A와 B가 주어졌을 때, A와 B를 비교하는 프로그램을 작성하시오.&lt;/span&gt;&lt;/p&gt;
&lt;h4 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; background-color: #ffffff; color: #000000;&quot;&gt;&lt;b&gt;✅ 코드&lt;/b&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;pre id=&quot;code_1736926219424&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        
        int a = sc.nextInt();
        int b = sc.nextInt();
        
        if(a&amp;gt;b) {
            System.out.println(&quot;&amp;gt;&quot;);
        }
        else if(a&amp;lt;b) {
            System.out.println(&quot;&amp;lt;&quot;);
        }
        else {
            System.out.println(&quot;==&quot;);
        }
    }
}&lt;/code&gt;&lt;/pre&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;style6&quot; /&gt;
&lt;h4 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; background-color: #ffffff; color: #000000;&quot;&gt;&lt;b&gt;&lt;span style=&quot;text-align: center;&quot;&gt; &amp;nbsp;&lt;/span&gt;문제&lt;span&gt;&amp;nbsp;&lt;/span&gt;설명&lt;/b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; text-align: start;&quot;&gt;#&lt;span&gt;&lt;span&gt; 9498 시험 성적&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #555555; text-align: start;&quot;&gt;시험 점수를 입력받아 90 ~ 100점은 A, 80 ~ 89점은 B, 70 ~ 79점은 C, 60 ~ 69점은 D, 나머지 점수는 F를 출력하는 프로그램을 작성하시오.&lt;/span&gt;&lt;/p&gt;
&lt;h4 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; background-color: #ffffff; color: #000000;&quot;&gt;&lt;b&gt;✅ 코드&lt;/b&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;pre id=&quot;code_1736926851818&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        
        int score = sc.nextInt();
        
        if(90&amp;lt;=score &amp;amp;&amp;amp; score&amp;lt;=100) {
            System.out.println(&quot;A&quot;);
        }
        else if(80&amp;lt;=score &amp;amp;&amp;amp; score&amp;lt;=89) {
            System.out.println(&quot;B&quot;);
        }
        else if(70&amp;lt;=score &amp;amp;&amp;amp; score&amp;lt;=79) {
            System.out.println(&quot;C&quot;);
        }
        else if(60&amp;lt;=score &amp;amp;&amp;amp; score&amp;lt;=69) {
            System.out.println(&quot;D&quot;);
        }
        else {
            System.out.println(&quot;F&quot;);
        }
    }
}&lt;/code&gt;&lt;/pre&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;style6&quot; /&gt;
&lt;h4 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; background-color: #ffffff; color: #000000;&quot;&gt;&lt;b&gt;&lt;span style=&quot;text-align: center;&quot;&gt; &amp;nbsp;&lt;/span&gt;문제&lt;span&gt;&amp;nbsp;&lt;/span&gt;설명&lt;/b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; text-align: start;&quot;&gt;# 2753 윤년&lt;/span&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;p style=&quot;background-color: #ffffff; color: #555555; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;연도가 주어졌을 때, 윤년이면 1, 아니면 0을 출력하는 프로그램을 작성하시오.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #555555; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;윤년은 연도가&lt;b&gt; 4의 배수이면서, 100의 배수가 아닐 때 또는 400의 배수일 때&lt;/b&gt;이다.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #555555; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;예를 들어, 2012년은 4의 배수이면서 100의 배수가 아니라서 윤년이다. 1900년은 100의 배수이고 400의 배수는 아니기 때문에 윤년이 아니다.&amp;nbsp;하지만, 2000년은 400의 배수이기 때문에 윤년이다.&lt;/p&gt;
&lt;h4 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; background-color: #ffffff; color: #000000;&quot;&gt;&lt;b&gt;✅ 코드&lt;/b&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;pre id=&quot;code_1736927244384&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        
        int x = sc.nextInt();
        
        if(x%4==0 &amp;amp;&amp;amp; x%100!=0) {
            System.out.println(1);
        }
        else if(x%400==0){
            System.out.println(1);
        }
        else {
            System.out.println(0);
        }
    }
}&lt;/code&gt;&lt;/pre&gt;
&lt;h4 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000;&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;  트러블슈팅 (오답)&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;pre id=&quot;code_1736927119880&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        
        int x = sc.nextInt();
        
        if(x%4==0 &amp;amp;&amp;amp; x%100!==0 || x%400==0) {
            System.out.println(1);
        }
        else {
            System.out.println(0);
        }
    }
}&lt;/code&gt;&lt;/pre&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;style6&quot; /&gt;
&lt;h4 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; background-color: #ffffff; color: #000000;&quot;&gt;&lt;b&gt;&lt;span style=&quot;text-align: center;&quot;&gt; &amp;nbsp;&lt;/span&gt;문제&lt;span&gt;&amp;nbsp;&lt;/span&gt;설명&lt;/b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; text-align: start;&quot;&gt;# 14681 사분면 고르기&lt;/span&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #555555; text-align: start;&quot;&gt;흔한 수학 문제 중 하나는 주어진 점이 어느 사분면에 속하는지 알아내는 것이다. 사분면은 아래 그림처럼 1부터 4까지 번호를 갖는다. &quot;Quadrant n&quot;은 &quot;제n사분면&quot;이라&lt;span style=&quot;background-color: #ffffff; color: #555555; text-align: start;&quot;&gt;는 뜻이다.&lt;/span&gt; &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;552&quot; data-origin-height=&quot;400&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/1Mvdf/btsLOM2zBrh/LyRSIhxTnpJu8iWVSG7y4k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/1Mvdf/btsLOM2zBrh/LyRSIhxTnpJu8iWVSG7y4k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/1Mvdf/btsLOM2zBrh/LyRSIhxTnpJu8iWVSG7y4k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F1Mvdf%2FbtsLOM2zBrh%2FLyRSIhxTnpJu8iWVSG7y4k%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;400&quot; height=&quot;290&quot; data-origin-width=&quot;552&quot; data-origin-height=&quot;400&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #555555; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;예를 들어, 좌표가 (12, 5)인 점 A는 x좌표와 y좌표가 모두 양수이므로 제1사분면에 속한다. 점 B는 x좌표가 음수이고 y좌표가 양수이므로 제2사분면에 속한다.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #555555; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;점의 좌표를 입력받아 그 점이 어느 사분면에 속하는지 알아내는 프로그램을 작성하시오. 단, x좌표와 y좌표는 모두 양수나 음수라고 가정한다.&lt;/p&gt;
&lt;h4 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; background-color: #ffffff; color: #000000;&quot;&gt;&lt;b&gt;✅ 코드&lt;/b&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;pre id=&quot;code_1736927691514&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        
        int x = sc.nextInt();
        int y = sc.nextInt();
        
        if(0&amp;lt;x &amp;amp;&amp;amp; 0&amp;lt;y) {
            System.out.println(1);
        }
        else if(0&amp;gt;x &amp;amp;&amp;amp; 0&amp;lt;y) {
            System.out.println(2);
        }
        else if(0&amp;gt;x &amp;amp;&amp;amp; 0&amp;gt;y) {
            System.out.println(3);
        }
        else {
            System.out.println(4);
        }
            
    }
}&lt;/code&gt;&lt;/pre&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;style6&quot; /&gt;
&lt;h4 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; background-color: #ffffff; color: #000000;&quot;&gt;&lt;b&gt;&lt;span style=&quot;text-align: center;&quot;&gt; &amp;nbsp;&lt;/span&gt;문제&lt;span&gt;&amp;nbsp;&lt;/span&gt;설명&lt;/b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; text-align: start;&quot;&gt;#&lt;span&gt; 2884 알람 시계&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;p style=&quot;background-color: #ffffff; color: #555555; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;상근이는 매일 아침 알람을 듣고 일어난다. 알람을 듣고 바로 일어나면 다행이겠지만, 항상 조금만 더 자려는 마음 때문에 매일 학교를 지각하고 있다. 상근이는 모든 방법을 동원해보았지만, 조금만 더 자려는 마음은 그 어떤 것도 없앨 수가 없었다.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #555555; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #555555; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;이런 상근이를 불쌍하게 보던 창영이는 자신이 사용하는 방법을 추천해 주었다. 바로 &quot;45분 일찍 알람 설정하기&quot;이다.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #555555; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #555555; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;이 방법은 단순하다. 원래 설정되어 있는 알람을 45분 앞서는 시간으로 바꾸는 것이다. 어차피 알람 소리를 들으면, 알람을 끄고 조금 더 잘 것이기 때문이다. 이 방법을 사용하면, 매일 아침 더 잤다는 기분을 느낄 수 있고, 학교도 지각하지 않게 된다.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #555555; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;현재 상근이가 설정한 알람 시각이 주어졌을 때, 창영이의 방법을 사용한다면, 이를 언제로 고쳐야 하는지 구하는 프로그램을 작성하시오.&lt;/p&gt;
&lt;h4 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; background-color: #ffffff; color: #000000;&quot;&gt;&lt;b&gt;✅ 코드&lt;/b&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;pre id=&quot;code_1736992514940&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        
        int H = sc.nextInt();
        int M = sc.nextInt();
        
        M -=45;
        if (0&amp;gt;M) {
            M+=60;
            H-=1;
         
            if (0&amp;gt;H) {
            H=23;
            }
        }
        System.out.println(H+&quot; &quot;+M);
    }
}&lt;/code&gt;&lt;/pre&gt;
&lt;h4 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; background-color: #ffffff; color: #000000;&quot;&gt;&lt;b&gt;✅ 코드 (BufferedReader)&lt;/b&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;pre id=&quot;code_1736992632900&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        
        // 입력을 한 줄로 받아서 공백으로 분리
        String[] input = br.readLine().split(&quot; &quot;);
        
        int H = Integer.parseInt(input[0]);
        int M = Integer.parseInt(input[1]);
        
        M -= 45;
        if (M &amp;lt; 0) {
            M += 60;
            H -= 1;
            
            if (H &amp;lt; 0) {
                H = 23;
            }
        }
        System.out.println(H + &quot; &quot; + M);
    }
}&lt;/code&gt;&lt;/pre&gt;
&lt;h4 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000;&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;  트러블슈팅 (오답)&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;45분 앞당긴 시간을 조정하지 않음 =&amp;gt; 입력값 그대로 출력함&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1736991868754&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        
        int H = sc.nextInt();
        int M = sc.nextInt();
        
        if (0&amp;lt;M-45) {
            System.out.println(H+&quot; &quot;+M);
        }
        else if(0&amp;gt;M-45) {
            M+=60;
            H-=1;
            System.out.println(H+&quot; &quot;+M);
        }
    }
}&lt;/code&gt;&lt;/pre&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;style6&quot; /&gt;
&lt;h4 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; background-color: #ffffff; color: #000000;&quot;&gt;&lt;b&gt;&lt;span style=&quot;text-align: center;&quot;&gt; &amp;nbsp;&lt;/span&gt;문제&lt;span&gt;&amp;nbsp;&lt;/span&gt;설명&lt;/b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; text-align: start;&quot;&gt;#&lt;span&gt;&lt;span&gt; 2525 오븐 시계&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;p style=&quot;background-color: #ffffff; color: #555555; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;KOI 전자에서는 건강에 좋고 맛있는 훈제오리구이 요리를 간편하게 만드는 인공지능 오븐을 개발하려고 한다. 인공지능 오븐을 사용하는 방법은 적당한 양의 오리 훈제 재료를 인공지능 오븐에 넣으면 된다. 그러면 인공지능 오븐은 오븐구이가 끝나는 시간을 분 단위로 자동적으로 계산한다.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #555555; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;또한, KOI 전자의 인공지능 오븐 앞면에는 사용자에게 훈제오리구이 요리가 끝나는 시각을 알려 주는 디지털 시계가 있다. 훈제오리구이를 시작하는 시각과 오븐구이를 하는 데 필요한 시간이 분단위로 주어졌을 때, 오븐구이가 끝나는 시각을 계산하는 프로그램을 작성하시오.&lt;/p&gt;
&lt;h4 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; background-color: #ffffff; color: #000000;&quot;&gt;&lt;b&gt;✅ 코드 (BufferedReader)&lt;/b&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;pre id=&quot;code_1736998641187&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        
        String[] input = br.readLine().split(&quot; &quot;);
        
        int A = Integer.parseInt(input[0]);
        int B = Integer.parseInt(input[1]);
        int C = Integer.parseInt(br.readLine());
        
        B+=C;
        
        A+=B/60;
        B=B%60;
        
        if (A&amp;gt;=24) {
            A=A%24;
        }
        System.out.println(A+&quot; &quot;+B);
    }
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>  코딩테스트/백준</category>
      <author>gxxg</author>
      <guid isPermaLink="true">https://zero-talk.tistory.com/162</guid>
      <comments>https://zero-talk.tistory.com/162#entry162comment</comments>
      <pubDate>Wed, 15 Jan 2025 17:05:11 +0900</pubDate>
    </item>
    <item>
      <title>[Java] 문자열 처리 과정에 있어서 메모리 사용랑과 처리 속도 효율적으로 하기</title>
      <link>https://zero-talk.tistory.com/161</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;Java logo.png&quot; data-origin-width=&quot;500&quot; data-origin-height=&quot;500&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/wQoJj/btsLOLVUTs3/hdHn7VpvskZDIQKGAdiEi0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/wQoJj/btsLOLVUTs3/hdHn7VpvskZDIQKGAdiEi0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/wQoJj/btsLOLVUTs3/hdHn7VpvskZDIQKGAdiEi0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FwQoJj%2FbtsLOLVUTs3%2FhdHn7VpvskZDIQKGAdiEi0%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;200&quot; height=&quot;200&quot; data-filename=&quot;Java logo.png&quot; data-origin-width=&quot;500&quot; data-origin-height=&quot;500&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;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&quot;&gt;백준 1단계 문제를 풀다가 문자열 입출력 과정에 있어서 메모리 사용량과 처리 속도를 좀 더 효율적으로 할 수 있는 방법에 대해 생각하는 시간을 가졌습니다. (팀장님 감사합니다!) 자바를 배울 때 기본적으로 Scanner를 배울 텐데 Scanner 말고도 BufferedReader와 StringTokenizer를 사용할 수 있습니다.&lt;/span&gt;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;color: #000000; font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;b&gt;BufferedReader와 StringTokenizer를 사용하면 더 빠른 입력 처리가 가능하다고?&lt;/b&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;p 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;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&quot;&gt;ufferedReader는 입력 속도가 매우 빠르고, StringTokenizer는 문자열을 효율적으로 분리합니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;color: #000000; font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;b&gt;BufferedReader&lt;/b&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&quot;&gt;- BufferedReader는 한 번에 입력을 버퍼에 저장하고 처리하므로 Scanner보다 빠름&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&quot;&gt;- InputStreamReader(System.in)과 함께 사용&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&quot;&gt;- BufferedReader는 예외 처리가 필요하므로 throws IOException을 메서드에 추가해야 함&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;color: #000000; font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;b&gt;StringTokenizer&lt;/b&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;p 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;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&quot;&gt;- nextInt()와 같은 메서드 대신, StringTokenizer를 통해 데이터를 나눈 후 Long.parseLong()으로 변환함&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&quot;&gt;&lt;b&gt;왜 Scanner보다 더 빠를까?&lt;/b&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&quot;&gt;Scanner는 입력을 한 번에 처리하지 않고, 메서드(nextInt, nextLong 등) 호출 시마다 입력 스트림을 읽습니다. 반면, BufferedReader는 한 번에 읽어와 메모리 사용과 처리가 효율적입니다. StringTokenizer는&amp;nbsp;문자열&amp;nbsp;분리&amp;nbsp;속도가&amp;nbsp;빠르고&amp;nbsp;메모리&amp;nbsp;효율적입니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&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;style6&quot; /&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&quot;&gt;정말 속도가 빨라졌는지 간단한 문제로 확인해봅시다. 아래 문제는 백준 1단계 문제 중 하나입니다. (#11382)&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&quot;&gt;&lt;b&gt;Scanner&lt;/b&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;pre id=&quot;code_1736855818795&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        
        long A = sc.nextLong();
        long B = sc.nextLong();
        long C = sc.nextLong();

        System.out.println(A + B + C);
    }
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;304&quot; data-origin-height=&quot;159&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bHA6VS/btsLNuOCO9J/dGlTOn4DRQKSogEKeJaLKK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bHA6VS/btsLNuOCO9J/dGlTOn4DRQKSogEKeJaLKK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bHA6VS/btsLNuOCO9J/dGlTOn4DRQKSogEKeJaLKK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbHA6VS%2FbtsLNuOCO9J%2FdGlTOn4DRQKSogEKeJaLKK%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;200&quot; height=&quot;105&quot; data-origin-width=&quot;304&quot; data-origin-height=&quot;159&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;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&quot;&gt;&lt;b&gt;BufferedReader&lt;/b&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;pre id=&quot;code_1736856045909&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;

public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        
        String[] input = br.readLine().split(&quot; &quot;);
        long A = Long.parseLong(input[0]);
        long B = Long.parseLong(input[1]);
        long C = Long.parseLong(input[2]);

        System.out.println(A + B + C);
    }
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;304&quot; data-origin-height=&quot;99&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/CH3Ti/btsLMD6vMfK/r4WwUJZLsbmdK83u3A9hfK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/CH3Ti/btsLMD6vMfK/r4WwUJZLsbmdK83u3A9hfK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/CH3Ti/btsLMD6vMfK/r4WwUJZLsbmdK83u3A9hfK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FCH3Ti%2FbtsLMD6vMfK%2Fr4WwUJZLsbmdK83u3A9hfK%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;200&quot; height=&quot;65&quot; data-origin-width=&quot;304&quot; data-origin-height=&quot;99&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;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt; BufferedReader와 StringTokenizer 동시 사용&lt;/span&gt;&lt;/b&gt;&lt;/h4&gt;
&lt;pre id=&quot;code_1736856298484&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;
import java.util.StringTokenizer;

public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        
        // StringTokenizer로 입력 분리
        StringTokenizer st = new StringTokenizer(br.readLine());
        long A = Long.parseLong(st.nextToken());
        long B = Long.parseLong(st.nextToken());
        long C = Long.parseLong(st.nextToken());

        System.out.println(A + B + C);
    }
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;300&quot; data-origin-height=&quot;101&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bRQwTb/btsLN42K1Z9/DyDMbJI7wYLTei1LgUVtxK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bRQwTb/btsLN42K1Z9/DyDMbJI7wYLTei1LgUVtxK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bRQwTb/btsLN42K1Z9/DyDMbJI7wYLTei1LgUVtxK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbRQwTb%2FbtsLN42K1Z9%2FDyDMbJI7wYLTei1LgUVtxK%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;200&quot; height=&quot;67&quot; data-origin-width=&quot;300&quot; data-origin-height=&quot;101&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;두 방법 모두 Scanner를 사용할 때보다 메모리를 덜 사용하고 속도가 빨라진 것을 확인할 수 있습니다.&lt;/p&gt;</description>
      <category>☁️ 구름 x 카카오 Deep Dive 풀스택/Java</category>
      <author>gxxg</author>
      <guid isPermaLink="true">https://zero-talk.tistory.com/161</guid>
      <comments>https://zero-talk.tistory.com/161#entry161comment</comments>
      <pubDate>Tue, 14 Jan 2025 20:52:33 +0900</pubDate>
    </item>
    <item>
      <title>[BaekJoon] 백준 1단계 문제 풀이 모음 (Java 자바)</title>
      <link>https://zero-talk.tistory.com/160</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;baekjoon logo.png&quot; data-origin-width=&quot;2834&quot; data-origin-height=&quot;1480&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/lYxVB/btsLM0NvByY/YnMyoLiJ8xEpuYIIOfp150/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/lYxVB/btsLM0NvByY/YnMyoLiJ8xEpuYIIOfp150/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/lYxVB/btsLM0NvByY/YnMyoLiJ8xEpuYIIOfp150/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FlYxVB%2FbtsLM0NvByY%2FYnMyoLiJ8xEpuYIIOfp150%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;261&quot; data-filename=&quot;baekjoon logo.png&quot; data-origin-width=&quot;2834&quot; data-origin-height=&quot;1480&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000; background-color: #ffffff;&quot;&gt;백준 1단계 입출력과 사칙연산 문제 풀이 모음&lt;/span&gt;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h4 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000; background-color: #ffffff;&quot;&gt;&lt;b&gt;&lt;span style=&quot;text-align: center;&quot;&gt; &amp;nbsp;&lt;/span&gt;문제 설명&lt;/b&gt; &lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; text-align: start;&quot;&gt;# 1000 A+B&lt;/span&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000; text-align: start; font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt; 두 정수 A와 B를 입력받은 다음,&amp;nbsp;A+B를 출력하는 프로그램을 작성하시오. &lt;/span&gt;&lt;/p&gt;
&lt;h4 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000; background-color: #ffffff;&quot;&gt;&lt;b&gt;✅ 코드&lt;/b&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;pre id=&quot;code_1736835721940&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import java.util.Scanner;

public class Main {
	public static void main(String[] args) {
		
		Scanner sc = new Scanner(System.in);
		
        int A = sc.nextInt();
		int B = sc.nextInt();
		
		System.out.println(A+B);
	}
}&lt;/code&gt;&lt;/pre&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;style6&quot; /&gt;
&lt;h4 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000; background-color: #ffffff;&quot;&gt;&lt;b&gt;&lt;span style=&quot;text-align: center;&quot;&gt; &amp;nbsp;&lt;/span&gt;문제 설명&lt;/b&gt; &lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; text-align: start;&quot;&gt;# 1001 A-B&lt;/span&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000; text-align: start; font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;두 정수 A와 B를 입력받은 다음, A-B를 출력하는 프로그램을 작성하시오.&lt;/span&gt;&lt;/p&gt;
&lt;h4 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000; background-color: #ffffff;&quot;&gt;&lt;b&gt;✅ 코드&lt;/b&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;pre id=&quot;code_1736835792065&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import java.util.Scanner;

public class Main {
	public static void main(String[] args) {
		
		Scanner sc = new Scanner(System.in);
		
        int A = sc.nextInt();
		int B = sc.nextInt();
		
		System.out.println(A-B);
	}
}&lt;/code&gt;&lt;/pre&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;style6&quot; /&gt;
&lt;h4 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000; background-color: #ffffff;&quot;&gt;&lt;b&gt;&lt;span style=&quot;text-align: center;&quot;&gt; &amp;nbsp;&lt;/span&gt;문제 설명&lt;/b&gt; &lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; text-align: start;&quot;&gt;#10998 AxB&lt;/span&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000; text-align: start; font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;두 정수 A와 B를 입력받은 다음, AxB를 출력하는 프로그램을 작성하시오.&lt;/span&gt;&lt;/p&gt;
&lt;h4 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000; background-color: #ffffff;&quot;&gt;&lt;b&gt;✅ 코드&lt;/b&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;pre id=&quot;code_1736835865804&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import java.util.Scanner;

public class Main {
	public static void main(String[] args) {
		
		Scanner sc = new Scanner(System.in);
		
        int A = sc.nextInt();
		int B = sc.nextInt();
		
		System.out.println(A*B);
	}
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h4 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000; background-color: #ffffff;&quot;&gt;&lt;b&gt;&lt;span style=&quot;text-align: center;&quot;&gt; &amp;nbsp;&lt;/span&gt;문제 설명 &lt;/b&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; text-align: start;&quot;&gt;# 1008 A/B&lt;/span&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000; text-align: start; font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt; 두 정수 A와 B를 입력받은 다음, A/B를 출력하는 프로그램을 작성하시오. &lt;/span&gt;&lt;/p&gt;
&lt;h4 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000; background-color: #ffffff;&quot;&gt;&lt;b&gt;✅ 코드&lt;/b&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;pre id=&quot;code_1736819776314&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        
        int A = sc.nextInt();
        int B = sc.nextInt();
        
        double answer = (double) A/B;
        
        System.out.println(answer);
    }
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;color: #000000; background-color: #ffffff;&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;  트러블슈팅 (오답)&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000; background-color: #ffffff;&quot;&gt;A, B가 int형인데 answer만 double로 형변환 하면 뭐하나...&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1736820549338&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        
        int answer = 0;
        int A = sc.nextInt();
        int B = sc.nextInt();
        
        answer = A/B;
        
        System.out.println((double)answer);
    }
}&lt;/code&gt;&lt;/pre&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;style6&quot; /&gt;
&lt;h4 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000; background-color: #ffffff;&quot;&gt;&lt;b&gt;&lt;span style=&quot;text-align: center;&quot;&gt; &amp;nbsp;&lt;/span&gt;문제 설명 &lt;/b&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; text-align: start;&quot;&gt;#&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;text-align: start;&quot;&gt;10869 사칙연산&lt;/span&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000; text-align: start; font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt; 두 자연수 A와 B가 주어진다. 이때, A+B, A-B, A*B, A/B(몫), A%B(나머지)를 출력하는 프로그램을 작성하시오.&amp;nbsp; &lt;/span&gt;&lt;/p&gt;
&lt;h4 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000; background-color: #ffffff;&quot;&gt;&lt;b&gt;✅ 코드&lt;/b&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;pre id=&quot;code_1736821137628&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        
        int A = sc.nextInt();
        int B = sc.nextInt();
        
        System.out.println(A+B);
        System.out.println(A-B);
        System.out.println(A*B);
        System.out.println(A/B);
        System.out.println(A%B);
    }
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h4 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000; background-color: #ffffff;&quot;&gt;&lt;b&gt;&lt;span style=&quot;text-align: center;&quot;&gt; &amp;nbsp;&lt;/span&gt;문제 설명 &lt;/b&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; text-align: start;&quot;&gt;# 10926 ??!&lt;/span&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000; text-align: start; font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt; 준하는 사이트에 회원가입을 하다가 joonas라는 아이디가 이미 존재하는 것을 보고 놀랐다. 준하는 놀람을 ??!로 표현한다. 준하가 가입하려고 하는 사이트에 이미 존재하는 아이디가 주어졌을 때, 놀람을 표현하는 프로그램을 작성하시오. &lt;/span&gt;&lt;/p&gt;
&lt;h4 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000; background-color: #ffffff;&quot;&gt;&lt;b&gt;✅ 코드&lt;/b&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;pre id=&quot;code_1736821735449&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        
        String A = sc.nextLine();
        
        System.out.println(A.concat(&quot;??!&quot;));
    }
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h4 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000; background-color: #ffffff;&quot;&gt;&lt;b&gt;&lt;span style=&quot;text-align: center;&quot;&gt; &amp;nbsp;&lt;/span&gt;문제 설명 &lt;/b&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; text-align: start;&quot;&gt;#&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;text-align: start;&quot;&gt;18108 1998년생인&amp;nbsp;내가&amp;nbsp;태국에서는&amp;nbsp;2541년생?!&lt;/span&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;p style=&quot;background-color: #ffffff; color: #555555; 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; background-color: #ffffff;&quot;&gt;ICPC Bangkok Regional에 참가하기 위해 수완나품 국제공항에 막 도착한 팀 레드시프트 일행은 눈을 믿을 수 없었다. 공항의 대형 스크린에 올해가 2562년이라고 적혀 있던 것이었다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #555555; 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; background-color: #ffffff;&quot;&gt;불교 국가인 태국은 불멸기원(佛滅紀元), 즉 석가모니가 열반한 해를 기준으로 연도를 세는 불기를 사용한다. 반면, 우리나라는&amp;nbsp;서기 연도를 사용하고 있다. 불기 연도가 주어질 때 이를 서기&amp;nbsp;연도로 바꿔 주는 프로그램을 작성하시오.&lt;/span&gt;&lt;/p&gt;
&lt;h4 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000; background-color: #ffffff;&quot;&gt;&lt;b&gt;✅ 코드&lt;/b&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;pre id=&quot;code_1736825559419&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        
        int y = sc.nextInt();
        int x = y-(2541-1998);
        System.out.println(x);
    }
}&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;background-color: #ffffff; color: #555555; text-align: start;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h4 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000; background-color: #ffffff;&quot;&gt;&lt;b&gt;&lt;span style=&quot;text-align: center;&quot;&gt; &amp;nbsp;&lt;/span&gt;문제 설명 &lt;/b&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; text-align: start;&quot;&gt;#&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;text-align: start;&quot;&gt;10430 나머지&lt;/span&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;p style=&quot;background-color: #ffffff; color: #555555; 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; background-color: #ffffff;&quot;&gt;(A+B)%C는 ((A%C) + (B%C))%C&amp;nbsp;와 같을까?&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #555555; 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; background-color: #ffffff;&quot;&gt;(A&amp;times;B)%C는 ((A%C) &amp;times; (B%C))%C 와 같을까?&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #555555; 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; background-color: #ffffff;&quot;&gt;세 수 A, B, C가 주어졌을 때, 위의 네 가지 값을 구하는 프로그램을 작성하시오.&lt;/span&gt;&lt;/p&gt;
&lt;h4 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000; background-color: #ffffff;&quot;&gt;&lt;b&gt;✅ 코드&lt;/b&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;pre id=&quot;code_1736826108535&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        
        int A = sc.nextInt();
		int B = sc.nextInt();
		int C = sc.nextInt();
        
        System.out.println((A+B)%C);
		System.out.println((A%C + B%C)%C);
		System.out.println((A*B)%C);
		System.out.println((A%C * B%C)%C);
    }
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h4 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000; background-color: #ffffff;&quot;&gt;&lt;b&gt;&lt;span style=&quot;text-align: center;&quot;&gt; &amp;nbsp;&lt;/span&gt;문제 설명 &lt;/b&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; text-align: start;&quot;&gt;#&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;text-align: start;&quot;&gt;2588 곱셈&lt;/span&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000; text-align: start; font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt; (세 자리 수) &amp;times; (세 자리 수)는 다음과 같은 과정을 통하여 이루어진다. &lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; text-align: start;&quot;&gt;(1)과 (2)위치에 들어갈 세 자리 자연수가 주어질 때 (3), (4), (5), (6)위치에 들어갈 값을 구하는 프로그램을 작성하시오.&lt;/span&gt; &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;306&quot; data-origin-height=&quot;183&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dj31Ec/btsLNBFWat8/LE1ckVXxdlFMQ5ZnUSfslk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dj31Ec/btsLNBFWat8/LE1ckVXxdlFMQ5ZnUSfslk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dj31Ec/btsLNBFWat8/LE1ckVXxdlFMQ5ZnUSfslk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fdj31Ec%2FbtsLNBFWat8%2FLE1ckVXxdlFMQ5ZnUSfslk%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;306&quot; height=&quot;183&quot; data-origin-width=&quot;306&quot; data-origin-height=&quot;183&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h4 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000; background-color: #ffffff;&quot;&gt;&lt;b&gt;✅ 코드&lt;/b&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;pre id=&quot;code_1736849554425&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int num1 = sc.nextInt();
        int num2 = sc.nextInt();

        System.out.println(num1 * (num2 % 10));        // 1의 자리와 곱한 값
        System.out.println(num1 * ((num2 / 10) % 10)); // 10의 자리와 곱한 값
        System.out.println(num1 * (num2 / 100));       // 100의 자리와 곱한 값
        System.out.println(num1 * num2);

        sc.close();
    }
}&lt;/code&gt;&lt;/pre&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;style6&quot; /&gt;
&lt;h4 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000; background-color: #ffffff;&quot;&gt;&lt;b&gt;&lt;span style=&quot;text-align: center;&quot;&gt; &amp;nbsp;&lt;/span&gt;문제 설명&amp;nbsp;&lt;/b&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; text-align: start;&quot;&gt;#&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;text-align: start;&quot;&gt; &lt;span style=&quot;text-align: start;&quot;&gt;11382&lt;/span&gt; 꼬마 정민&lt;/span&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000; text-align: start; font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt; 꼬마 정민이는 이제 A + B 정도는 쉽게 계산할 수 있다. 이제 A + B + C를 계산할 차례이다! &lt;/span&gt;&lt;/p&gt;
&lt;h4 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000; background-color: #ffffff;&quot;&gt;&lt;b&gt;✅ 코드&lt;/b&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;pre id=&quot;code_1736850515567&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        
        long A = sc.nextLong();
        long B = sc.nextLong();
        long C = sc.nextLong();

        System.out.println(A + B + C);
    }
}&lt;/code&gt;&lt;/pre&gt;
&lt;h4 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;color: #000000; background-color: #ffffff;&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;  트러블슈팅 (오답)&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;color: #000000; background-color: #ffffff;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;입력값의 범위 문제. int를 long으로 수정하여 해결함.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1736850376819&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        
        int A = sc.nextInt();
        int B = sc.nextInt();
        int C = sc.nextInt();

        System.out.println(A + B + C);
    }
}&lt;/code&gt;&lt;/pre&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;style6&quot; /&gt;
&lt;h4 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000; background-color: #ffffff;&quot;&gt;&lt;b&gt;&lt;span style=&quot;text-align: center;&quot;&gt; &amp;nbsp;&lt;/span&gt;문제 설명&amp;nbsp;&lt;/b&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; text-align: start;&quot;&gt;#&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;text-align: start;&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;text-align: start;&quot;&gt;10171 고양이&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #555555; text-align: start;&quot;&gt;아래 예제와 같이 고양이를 출력하시오.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;854&quot; data-origin-height=&quot;317&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bqPwD0/btsLM2LCjCA/WBiZ47mXt9lEpdJvr0bK9K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bqPwD0/btsLM2LCjCA/WBiZ47mXt9lEpdJvr0bK9K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bqPwD0/btsLM2LCjCA/WBiZ47mXt9lEpdJvr0bK9K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbqPwD0%2FbtsLM2LCjCA%2FWBiZ47mXt9lEpdJvr0bK9K%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;186&quot; data-origin-width=&quot;854&quot; data-origin-height=&quot;317&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h4 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000; background-color: #ffffff;&quot;&gt;&lt;b&gt;✅ 코드&lt;/b&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;pre id=&quot;code_1736850885811&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;public class Main {
    public static void main(String[] args) {

        System.out.println(&quot;\\    /\\&quot;);
        System.out.println(&quot; )  ( ')&quot;);
        System.out.println(&quot;(  /  )&quot;);
        System.out.println(&quot; \\(__)|&quot;);
    }
}&lt;/code&gt;&lt;/pre&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;style6&quot; /&gt;
&lt;h4 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000; background-color: #ffffff;&quot;&gt;&lt;b&gt;&lt;span style=&quot;text-align: center;&quot;&gt; &amp;nbsp;&lt;/span&gt;문제 설명&amp;nbsp;&lt;/b&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; text-align: start;&quot;&gt;#&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;text-align: start;&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;text-align: start;&quot;&gt;10171 개&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #555555; text-align: start;&quot;&gt;아래 예제와 같이 개를 출력하시오.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;852&quot; data-origin-height=&quot;351&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/l7WIT/btsLL4cjvGn/55imOH2737QCyOKLNzRIh1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/l7WIT/btsLL4cjvGn/55imOH2737QCyOKLNzRIh1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/l7WIT/btsLL4cjvGn/55imOH2737QCyOKLNzRIh1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fl7WIT%2FbtsLL4cjvGn%2F55imOH2737QCyOKLNzRIh1%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;351&quot; data-origin-width=&quot;852&quot; data-origin-height=&quot;351&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h4 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000; background-color: #ffffff;&quot;&gt;&lt;b&gt;✅ 코드&lt;/b&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;pre id=&quot;code_1736851629360&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;public class Main {
    public static void main(String[] args) {
        System.out.println(&quot;|\\_/|&quot;);
        System.out.println(&quot;|q p|   /}&quot;);
        System.out.println(&quot;( 0 )\&quot;\&quot;\&quot;\\&quot;);
        System.out.println(&quot;|\&quot;^\&quot;`    |&quot;);
        System.out.println(&quot;||_/=\\\\__|&quot;);
    }
}&lt;/code&gt;&lt;/pre&gt;</description>
      <category>  코딩테스트/백준</category>
      <author>gxxg</author>
      <guid isPermaLink="true">https://zero-talk.tistory.com/160</guid>
      <comments>https://zero-talk.tistory.com/160#entry160comment</comments>
      <pubDate>Tue, 14 Jan 2025 15:28:08 +0900</pubDate>
    </item>
    <item>
      <title>프로그래머스 0단계 순서쌍의 개수 (Java 자바)</title>
      <link>https://zero-talk.tistory.com/159</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;프로그래머스 logo.png&quot; data-origin-width=&quot;604&quot; data-origin-height=&quot;128&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dt7hIW/btsLHtIfMYg/PkGXpvRlYG3ziVaO78nS21/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dt7hIW/btsLHtIfMYg/PkGXpvRlYG3ziVaO78nS21/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dt7hIW/btsLHtIfMYg/PkGXpvRlYG3ziVaO78nS21/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fdt7hIW%2FbtsLHtIfMYg%2FPkGXpvRlYG3ziVaO78nS21%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;604&quot; height=&quot;128&quot; data-filename=&quot;프로그래머스 logo.png&quot; data-origin-width=&quot;604&quot; data-origin-height=&quot;128&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;figure id=&quot;og_1736304577767&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;프로그래머스&quot; data-og-description=&quot;SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프&quot; data-og-host=&quot;programmers.co.kr&quot; data-og-source-url=&quot;https://school.programmers.co.kr/learn/courses/30/lessons/120836&quot; data-og-url=&quot;https://programmers.co.kr/&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/bRlmov/hyXWrTk3ds/CJ0MHY06XA1pah5P7CR1h0/img.png?width=1920&amp;amp;height=960&amp;amp;face=0_0_1920_960,https://scrap.kakaocdn.net/dn/FD1tg/hyX0yJ0ex0/SRCKdGlt7UCwKIoMvt1iJ0/img.png?width=1920&amp;amp;height=960&amp;amp;face=0_0_1920_960&quot;&gt;&lt;a href=&quot;https://school.programmers.co.kr/learn/courses/30/lessons/120836&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://school.programmers.co.kr/learn/courses/30/lessons/120836&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/bRlmov/hyXWrTk3ds/CJ0MHY06XA1pah5P7CR1h0/img.png?width=1920&amp;amp;height=960&amp;amp;face=0_0_1920_960,https://scrap.kakaocdn.net/dn/FD1tg/hyX0yJ0ex0/SRCKdGlt7UCwKIoMvt1iJ0/img.png?width=1920&amp;amp;height=960&amp;amp;face=0_0_1920_960');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;프로그래머스&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;programmers.co.kr&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&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;h4 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&quot;&gt;&lt;b&gt;&lt;span style=&quot;text-align: center;&quot;&gt; &amp;nbsp;&lt;/span&gt;문제 설명&lt;/b&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;p 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;개의&amp;nbsp;숫자를&amp;nbsp;순서를&amp;nbsp;정하여&amp;nbsp;짝지어&amp;nbsp;나타낸&amp;nbsp;쌍으로&amp;nbsp;(a,&amp;nbsp;b)로&amp;nbsp;표기합니다.&amp;nbsp;자연수&amp;nbsp;n이&amp;nbsp;매개변수로&amp;nbsp;주어질&amp;nbsp;때&amp;nbsp;두&amp;nbsp;숫자의&amp;nbsp;곱이&amp;nbsp;n인&amp;nbsp;자연수&amp;nbsp;순서쌍의&amp;nbsp;개수를&amp;nbsp;return하도록&amp;nbsp;solution&amp;nbsp;함수를&amp;nbsp;완성해주세요.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&quot;&gt;&lt;b&gt;  해설&lt;/b&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&quot;&gt;1. 반복문을 사용하여 주어진 임의의 정수 n의 약수를 구한다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&quot;&gt;2. n의 약수로 나눈 나머지가 0일 경우 answer를 카운트한다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&quot;&gt;&lt;b&gt;✅ 코드&lt;/b&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;pre id=&quot;code_1736304626152&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;class Solution {
    public int solution(int n) {
        int answer = 0;
        
        for (int i=1; i&amp;lt;=n; i++) {
            if (n % i == 0) {
                answer ++;
            }
        }
        
        return answer;
    }
}&lt;/code&gt;&lt;/pre&gt;</description>
      <category>  코딩테스트/programmers</category>
      <category>0단계</category>
      <category>for</category>
      <category>if</category>
      <category>java</category>
      <category>programmers</category>
      <category>순서쌍의 개수</category>
      <category>자바</category>
      <category>코딩테스트</category>
      <category>코테</category>
      <category>프로그래머스</category>
      <author>gxxg</author>
      <guid isPermaLink="true">https://zero-talk.tistory.com/159</guid>
      <comments>https://zero-talk.tistory.com/159#entry159comment</comments>
      <pubDate>Wed, 8 Jan 2025 11:53:19 +0900</pubDate>
    </item>
    <item>
      <title>프로그래머스 0단계 제곱수 판별하기 (Java 자바)</title>
      <link>https://zero-talk.tistory.com/158</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;프로그래머스 logo.png&quot; data-origin-width=&quot;604&quot; data-origin-height=&quot;128&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bTlKdp/btsLHsJk45p/owZZkB7Rip32VBFSAtocTk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bTlKdp/btsLHsJk45p/owZZkB7Rip32VBFSAtocTk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bTlKdp/btsLHsJk45p/owZZkB7Rip32VBFSAtocTk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbTlKdp%2FbtsLHsJk45p%2FowZZkB7Rip32VBFSAtocTk%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;604&quot; height=&quot;128&quot; data-filename=&quot;프로그래머스 logo.png&quot; data-origin-width=&quot;604&quot; data-origin-height=&quot;128&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;figure id=&quot;og_1736303475157&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;프로그래머스&quot; data-og-description=&quot;SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프&quot; data-og-host=&quot;programmers.co.kr&quot; data-og-source-url=&quot;https://school.programmers.co.kr/learn/courses/30/lessons/120909&quot; data-og-url=&quot;https://programmers.co.kr/&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/cP8vMu/hyX0n2JB8y/7r62RsaFvzsFO3Y9ZwYwAK/img.png?width=1920&amp;amp;height=960&amp;amp;face=0_0_1920_960&quot;&gt;&lt;a href=&quot;https://school.programmers.co.kr/learn/courses/30/lessons/120909&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://school.programmers.co.kr/learn/courses/30/lessons/120909&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/cP8vMu/hyX0n2JB8y/7r62RsaFvzsFO3Y9ZwYwAK/img.png?width=1920&amp;amp;height=960&amp;amp;face=0_0_1920_960');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;프로그래머스&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;programmers.co.kr&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&quot;&gt;&lt;b&gt; &lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000; text-align: center;&quot;&gt;  &lt;/span&gt;문제 설명&lt;/b&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;p 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;제곱했을&amp;nbsp;때&amp;nbsp;나오는&amp;nbsp;정수를&amp;nbsp;제곱수라고&amp;nbsp;합니다.&amp;nbsp;정수&amp;nbsp;n이&amp;nbsp;매개변수로&amp;nbsp;주어질&amp;nbsp;때,&amp;nbsp;n이&amp;nbsp;제곱수라면&amp;nbsp;1을&amp;nbsp;아니라면&amp;nbsp;2를&amp;nbsp;return하도록&amp;nbsp;solution&amp;nbsp;함수를&amp;nbsp;완성해주세요.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&quot;&gt;&lt;b&gt;  해설&lt;/b&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&quot;&gt;1. Math.sqrt() 사용 (제곱근을 구하는 메소드)&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&quot;&gt;2. 삼항연상자를 사용하여 코드를 간결하게 작성&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&quot;&gt;3. 임의의 정수 n으로 나눈 나머지가 0이라면 1을 리턴하고&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&quot;&gt;4. 그렇지 않으면 2를 리턴한다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&quot;&gt;&lt;b&gt;✅ 코드&lt;/b&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;pre id=&quot;code_1736303606746&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;class Solution {
    public int solution(int n) {
        int answer = 0;
        
        return (n % Math.sqrt(n) == 0) ? 1 : 2;
    }
}&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;참고&lt;/span&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1736303876907&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;코딩테스트 연습 - 제곱수 판별하기 (JAVA)&quot; data-og-description=&quot;프로그래머스 코딩테스트 입문 0단계 문제입니다 https://school.programmers.co.kr/learn/courses/30/lessons/120909   문제 설명 어떤 자연수를 제곱했을 때 나오는 정수를 제곱수라고 합니다. 정수 n이 매개변&quot; data-og-host=&quot;qiwisil.tistory.com&quot; data-og-source-url=&quot;https://qiwisil.tistory.com/37&quot; data-og-url=&quot;https://qiwisil.tistory.com/37&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/chVSvX/hyX0vNhSTj/XMQbY6nGHil1CEMq9bFOkk/img.png?width=800&amp;amp;height=800&amp;amp;face=0_0_800_800,https://scrap.kakaocdn.net/dn/dTHeel/hyXWyLFrrB/jzwQQJKOLW5NvsjDjDKoFK/img.png?width=800&amp;amp;height=800&amp;amp;face=0_0_800_800&quot;&gt;&lt;a href=&quot;https://qiwisil.tistory.com/37&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://qiwisil.tistory.com/37&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/chVSvX/hyX0vNhSTj/XMQbY6nGHil1CEMq9bFOkk/img.png?width=800&amp;amp;height=800&amp;amp;face=0_0_800_800,https://scrap.kakaocdn.net/dn/dTHeel/hyXWyLFrrB/jzwQQJKOLW5NvsjDjDKoFK/img.png?width=800&amp;amp;height=800&amp;amp;face=0_0_800_800');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;코딩테스트 연습 - 제곱수 판별하기 (JAVA)&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;프로그래머스 코딩테스트 입문 0단계 문제입니다 https://school.programmers.co.kr/learn/courses/30/lessons/120909   문제 설명 어떤 자연수를 제곱했을 때 나오는 정수를 제곱수라고 합니다. 정수 n이 매개변&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;qiwisil.tistory.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>  코딩테스트/programmers</category>
      <category>0단계</category>
      <category>java</category>
      <category>Math 함수</category>
      <category>Math.sqrt()</category>
      <category>programmers</category>
      <category>자바</category>
      <category>제곱수 판별하기</category>
      <category>코딩테스트</category>
      <category>코테</category>
      <category>프로그래머스</category>
      <author>gxxg</author>
      <guid isPermaLink="true">https://zero-talk.tistory.com/158</guid>
      <comments>https://zero-talk.tistory.com/158#entry158comment</comments>
      <pubDate>Wed, 8 Jan 2025 11:40:33 +0900</pubDate>
    </item>
    <item>
      <title>[티스토리 스킨] 코드블록 스타일을 맥(mac)으로 바꾸기</title>
      <link>https://zero-talk.tistory.com/157</link>
      <description>&lt;p style=&quot;text-align: center;&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;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1310&quot; data-origin-height=&quot;676&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/17IPe/btsLFKECA9y/3iv8FFDxkvzSDFmf8iIi2K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/17IPe/btsLFKECA9y/3iv8FFDxkvzSDFmf8iIi2K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/17IPe/btsLFKECA9y/3iv8FFDxkvzSDFmf8iIi2K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F17IPe%2FbtsLFKECA9y%2F3iv8FFDxkvzSDFmf8iIi2K%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;527&quot; height=&quot;272&quot; data-origin-width=&quot;1310&quot; data-origin-height=&quot;676&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&quot;&gt;못생긴 건 참을 수 없어서 맥(mac) 스타일로 바꾸기로 결심하다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&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;꾸미기 &amp;gt; 스킨 편집&lt;/b&gt;&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;311&quot; data-origin-height=&quot;280&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/citcDl/btsLFxZPR1Q/ric11IwGOLowzoyhL3Nlx0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/citcDl/btsLFxZPR1Q/ric11IwGOLowzoyhL3Nlx0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/citcDl/btsLFxZPR1Q/ric11IwGOLowzoyhL3Nlx0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcitcDl%2FbtsLFxZPR1Q%2Fric11IwGOLowzoyhL3Nlx0%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;311&quot; height=&quot;280&quot; data-origin-width=&quot;311&quot; data-origin-height=&quot;280&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&quot;&gt;html 편집 버튼&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;859&quot; data-origin-height=&quot;368&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dxGgTH/btsLGNUT6rn/anIpmbgW0c3aGNOSrU4at0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dxGgTH/btsLGNUT6rn/anIpmbgW0c3aGNOSrU4at0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dxGgTH/btsLGNUT6rn/anIpmbgW0c3aGNOSrU4at0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdxGgTH%2FbtsLGNUT6rn%2FanIpmbgW0c3aGNOSrU4at0%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;511&quot; height=&quot;219&quot; data-origin-width=&quot;859&quot; data-origin-height=&quot;368&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&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 style=&quot;text-align: start;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;CSS&amp;nbsp;&lt;/b&gt;&lt;span style=&quot;text-align: start;&quot;&gt;&amp;rarr;&amp;nbsp;&lt;/span&gt;&lt;b&gt;파일 업로드 &amp;rarr; HTML&lt;/b&gt;&lt;span style=&quot;text-align: start;&quot;&gt;&amp;nbsp;메뉴 순서로 편집하는 것이다.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&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;ctrl + f&lt;/b&gt;&lt;span style=&quot;text-align: start;&quot;&gt; 단축키를 눌러서 &lt;b&gt;.hljs&lt;/b&gt;&lt;span style=&quot;text-align: start;&quot;&gt;&amp;nbsp;텍스트를 찾는다.&lt;/span&gt; &lt;/span&gt;&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;1228&quot; data-origin-height=&quot;650&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bqYyYJ/btsLFOGNoMd/CJOT56DkXWQMNNPKuExWSk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bqYyYJ/btsLFOGNoMd/CJOT56DkXWQMNNPKuExWSk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bqYyYJ/btsLFOGNoMd/CJOT56DkXWQMNNPKuExWSk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbqYyYJ%2FbtsLFOGNoMd%2FCJOT56DkXWQMNNPKuExWSk%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;605&quot; height=&quot;320&quot; data-origin-width=&quot;1228&quot; data-origin-height=&quot;650&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&quot;&gt;기존 스타일을 지우고 아래 CSS 코드를 삽입한다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;fileblock&quot; data-ke-align=&quot;alignCenter&quot;&gt;&lt;a href=&quot;https://blog.kakaocdn.net/dn/0T4Az/btsLHA8nfS9/rM4TSoTf8tPIdy7aG1WBkK/codeblock.css?attach=1&amp;amp;knm=tfile.css&quot; class=&quot;&quot;&gt;
    &lt;div class=&quot;image&quot;&gt;&lt;/div&gt;
    &lt;div class=&quot;desc&quot;&gt;&lt;div class=&quot;filename&quot;&gt;&lt;span class=&quot;name&quot;&gt;codeblock.css&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;size&quot;&gt;0.00MB&lt;/div&gt;
&lt;/div&gt;
  &lt;/a&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&quot;&gt;파일 업로드 탭에서 .js 파일을 업로드 한다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;fileblock&quot; data-ke-align=&quot;alignCenter&quot;&gt;&lt;a href=&quot;https://blog.kakaocdn.net/dn/yNxYu/btsLGdffSPw/9ar5j2obS3h7ggGQUEgPq1/codeblock.js?attach=1&amp;amp;knm=tfile.js&quot; class=&quot;&quot;&gt;
    &lt;div class=&quot;image&quot;&gt;&lt;/div&gt;
    &lt;div class=&quot;desc&quot;&gt;&lt;div class=&quot;filename&quot;&gt;&lt;span class=&quot;name&quot;&gt;codeblock.js&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;size&quot;&gt;0.00MB&lt;/div&gt;
&lt;/div&gt;
  &lt;/a&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&quot;&gt;HTML 탭 &amp;lt;body&amp;gt; 태그 최하단에 다음 코드를 추가한다.&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1736299897045&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;lt;script defer src=&quot;./images/codeblock.js&quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 style=&quot;text-align: center;&quot; data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&quot;&gt;트러블슈팅&lt;/span&gt;&lt;/b&gt;&lt;/h4&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&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;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;875&quot; data-origin-height=&quot;172&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/rJQUo/btsLG1k7MR8/S3lbkZr4VRJkJ88itkABK0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/rJQUo/btsLG1k7MR8/S3lbkZr4VRJkJ88itkABK0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/rJQUo/btsLG1k7MR8/S3lbkZr4VRJkJ88itkABK0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FrJQUo%2FbtsLG1k7MR8%2FS3lbkZr4VRJkJ88itkABK0%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;875&quot; height=&quot;172&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;875&quot; data-origin-height=&quot;172&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;f12를 눌러 개발자도구로 확인해보니 스타일 충돌이 났다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;507&quot; data-origin-height=&quot;265&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/I14HK/btsLGlYtSzR/NnV7GDM0m1OAUGjdKsH8Fk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/I14HK/btsLGlYtSzR/NnV7GDM0m1OAUGjdKsH8Fk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/I14HK/btsLGlYtSzR/NnV7GDM0m1OAUGjdKsH8Fk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FI14HK%2FbtsLGlYtSzR%2FNnV7GDM0m1OAUGjdKsH8Fk%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;507&quot; height=&quot;265&quot; data-origin-width=&quot;507&quot; data-origin-height=&quot;265&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&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;atom-one&lt;/b&gt; 뭐시기 파일이 어디있는지 헤매다가..&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&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;gt; 코드 문법 강조&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;316&quot; data-origin-height=&quot;359&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bueIDY/btsLG2j0lV6/ePDB7AIPwquXlArqG7BYkk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bueIDY/btsLG2j0lV6/ePDB7AIPwquXlArqG7BYkk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bueIDY/btsLG2j0lV6/ePDB7AIPwquXlArqG7BYkk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbueIDY%2FbtsLG2j0lV6%2FePDB7AIPwquXlArqG7BYkk%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;224&quot; height=&quot;254&quot; data-origin-width=&quot;316&quot; data-origin-height=&quot;359&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;435&quot; data-origin-height=&quot;419&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/do10pe/btsLFxyLa0w/11YKOgY78keGK6mTpcr580/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/do10pe/btsLFxyLa0w/11YKOgY78keGK6mTpcr580/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/do10pe/btsLFxyLa0w/11YKOgY78keGK6mTpcr580/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fdo10pe%2FbtsLFxyLa0w%2F11YKOgY78keGK6mTpcr580%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;281&quot; height=&quot;271&quot; data-origin-width=&quot;435&quot; data-origin-height=&quot;419&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;color: #000000; font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;해당 플러그인의 스타일이 Atom One Light로 적용되어 있는 걸&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;color: #000000; font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;Atom One Dark로 바꾸니 코드블록 스타일이 잘 적용되는 것을 확인할 수 있다.&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;1184&quot; data-origin-height=&quot;912&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/k9KaB/btsLHoNTxXr/59FpjJkPrW3xD9V6uYc901/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/k9KaB/btsLHoNTxXr/59FpjJkPrW3xD9V6uYc901/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/k9KaB/btsLHoNTxXr/59FpjJkPrW3xD9V6uYc901/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fk9KaB%2FbtsLHoNTxXr%2F59FpjJkPrW3xD9V6uYc901%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;578&quot; height=&quot;445&quot; data-origin-width=&quot;1184&quot; data-origin-height=&quot;912&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;443&quot; data-origin-height=&quot;131&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/qQFia/btsLG5gxrWT/MxGLqeFtgafJHdSlCbjVy0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/qQFia/btsLG5gxrWT/MxGLqeFtgafJHdSlCbjVy0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/qQFia/btsLG5gxrWT/MxGLqeFtgafJHdSlCbjVy0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FqQFia%2FbtsLG5gxrWT%2FMxGLqeFtgafJHdSlCbjVy0%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;328&quot; height=&quot;97&quot; data-origin-width=&quot;443&quot; data-origin-height=&quot;131&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;868&quot; data-origin-height=&quot;166&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/qQf2L/btsLFCfxRmL/VvkXaqhigG897xhNUAEr7k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/qQf2L/btsLFCfxRmL/VvkXaqhigG897xhNUAEr7k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/qQf2L/btsLFCfxRmL/VvkXaqhigG897xhNUAEr7k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FqQf2L%2FbtsLFCfxRmL%2FVvkXaqhigG897xhNUAEr7k%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;868&quot; height=&quot;166&quot; data-origin-width=&quot;868&quot; data-origin-height=&quot;166&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;짠!!&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&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;figure id=&quot;og_1736301076458&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;[티스토리 블로그 테마] - 1. 코드 블록 디자인을 mac 코드 스타일로 바꾸기&quot; data-og-description=&quot;글을 읽기 전 미리 보는 완성본은 다음과 같다.&amp;nbsp;어떻게 만들었고 적용했는지 궁금하신 분들은 아래로 스크롤!&amp;nbsp;See the Pen tistory code block by MiJeong Kim (@sap03110) on CodePen.&amp;nbsp;&amp;nbsp;발단여느 날과 다름없이 &quot; data-og-host=&quot;guiyomi.tistory.com&quot; data-og-source-url=&quot;https://guiyomi.tistory.com/132&quot; data-og-url=&quot;https://guiyomi.tistory.com/132&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/fSO27/hyXWC8jR21/sBSVJCdE5GRktB2UU4mycK/img.png?width=800&amp;amp;height=164&amp;amp;face=0_0_800_164,https://scrap.kakaocdn.net/dn/cRulta/hyXWrlutVQ/lVNA7514hhkPEgRB3twKn1/img.png?width=800&amp;amp;height=164&amp;amp;face=0_0_800_164,https://scrap.kakaocdn.net/dn/mwLI1/hyX0thCGQl/ROzXHJ3KfsQdiSsSuGC2c1/img.png?width=996&amp;amp;height=1756&amp;amp;face=0_0_996_1756&quot;&gt;&lt;a href=&quot;https://guiyomi.tistory.com/132&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://guiyomi.tistory.com/132&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/fSO27/hyXWC8jR21/sBSVJCdE5GRktB2UU4mycK/img.png?width=800&amp;amp;height=164&amp;amp;face=0_0_800_164,https://scrap.kakaocdn.net/dn/cRulta/hyXWrlutVQ/lVNA7514hhkPEgRB3twKn1/img.png?width=800&amp;amp;height=164&amp;amp;face=0_0_800_164,https://scrap.kakaocdn.net/dn/mwLI1/hyX0thCGQl/ROzXHJ3KfsQdiSsSuGC2c1/img.png?width=996&amp;amp;height=1756&amp;amp;face=0_0_996_1756');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;[티스토리 블로그 테마] - 1. 코드 블록 디자인을 mac 코드 스타일로 바꾸기&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;글을 읽기 전 미리 보는 완성본은 다음과 같다.&amp;nbsp;어떻게 만들었고 적용했는지 궁금하신 분들은 아래로 스크롤!&amp;nbsp;See the Pen tistory code block by MiJeong Kim (@sap03110) on CodePen.&amp;nbsp;&amp;nbsp;발단여느 날과 다름없이&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;guiyomi.tistory.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>Etc</category>
      <category>atom one light</category>
      <category>mac 스타일</category>
      <category>코드 블록 디자인 커스텀</category>
      <category>코드블록 mac</category>
      <category>코드블록 변경</category>
      <category>티스토리 꾸미기</category>
      <category>티스토리 블로그 테마</category>
      <category>티스토리 스킨 꾸미기</category>
      <category>티스토리 스킨 커스텀</category>
      <category>티스토리 코드블록 mac</category>
      <author>gxxg</author>
      <guid isPermaLink="true">https://zero-talk.tistory.com/157</guid>
      <comments>https://zero-talk.tistory.com/157#entry157comment</comments>
      <pubDate>Wed, 8 Jan 2025 10:31:47 +0900</pubDate>
    </item>
    <item>
      <title>[Deep Dive] CSS 기초 개념 완전 정복(3) - CSS 색을 표현하는 방법</title>
      <link>https://zero-talk.tistory.com/154</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;css logo.png&quot; data-origin-width=&quot;500&quot; data-origin-height=&quot;705&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cDykt9/btsKOlj53BW/smkPn1uZzZVyMQQhqg0sB1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cDykt9/btsKOlj53BW/smkPn1uZzZVyMQQhqg0sB1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cDykt9/btsKOlj53BW/smkPn1uZzZVyMQQhqg0sB1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcDykt9%2FbtsKOlj53BW%2FsmkPn1uZzZVyMQQhqg0sB1%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;200&quot; height=&quot;282&quot; data-filename=&quot;css logo.png&quot; data-origin-width=&quot;500&quot; data-origin-height=&quot;705&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&quot;&gt;CSS에서 &lt;b&gt;&lt;span style=&quot;background-color: #fffa00;&quot;&gt;색을 표현하는 방법&lt;/span&gt;&lt;/b&gt;들에 대해 알아보겠습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;b&gt;색을 표현하는 방법?&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&quot;&gt;1. 색 이름&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&quot;&gt;Ex. black, red, blue, ...&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p 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;2. RGB값&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&quot;&gt;RGB는 색상을 측정하는 보다 정확한 방법이다. 모든 색상을 &lt;span style=&quot;background-color: #fffa00;&quot;&gt;&lt;b&gt;빨강(R), 초록(G). 파랑(B)의 조합&lt;/b&gt;&lt;/span&gt;을 사용해서 만든다.&lt;/span&gt;&lt;/p&gt;
&lt;p 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;b&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&quot;&gt;RGB의 특징?&lt;/span&gt;&lt;/b&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;RGB 숫자의 값은 0부터 255따지 표현할 수 있다. (0~255)&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;Ex. rgb(0, 150, 255)&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;Ex. rgb(0, 0, 0) =&amp;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;Ex. rgb(255, 255, 255) =&amp;gt; 흰&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p 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;3. Hex값&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;RGB를 작성하는 또 다른 방법 Ex. &lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;#&lt;/span&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;00&lt;/span&gt;&lt;span style=&quot;color: #009a87;&quot;&gt;96&lt;/span&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;FF&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&quot;&gt;Hax값의 특징?&lt;/span&gt;&lt;/b&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;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&quot;&gt;Hax의 모든 각 문자는 16진수로 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F (16개의 가능한 값)&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&quot;&gt;처음 2개의 문자를 사용하여 0 ~ 255에서 16 * 16 = 256개의 가능한 값을 가질 수 있다.&lt;/span&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&quot;&gt;00 = 0&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&quot;&gt;01 = 1&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&quot;&gt;...&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&quot;&gt;0F = 15&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&quot;&gt;10 = 16&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&quot;&gt;11 = (1*16) + 1 = 17&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&quot;&gt;...&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&quot;&gt;FF = (15 * 15) + 15 = 255&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&quot;&gt;RGB와 동일한 범위이므로 &lt;span style=&quot;background-color: #fffa00;&quot;&gt;&lt;b&gt;Hax의 처음 2자는 빨간색, 두 번째 2자는 초록색, 세 번째 2자는 파란색&lt;/b&gt;&lt;/span&gt;을 나타낸다.&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p 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;4. RGBA값&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&quot;&gt;rgb(0. 150, 255, 0.5)&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&quot;&gt;추가값 A(알파값)을 제외하고 RGB와 동일하다.&lt;b&gt;&lt;span style=&quot;background-color: #fffa00;&quot;&gt; A 값은 색상이 얼마나 투명한지를 결정&lt;/span&gt;&lt;/b&gt;한다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&quot;&gt;0 = 완전히 투명함.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&quot;&gt;1 = 단색 및 그렇지 않음.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&quot;&gt;0.5 = 50% See-Through이다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000; text-align: start;&quot;&gt;아래 (1)번 포스팅부터 차례대로 봐주세요!&lt;/span&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1731976095402&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;[Deep Dive] CSS 기초 개념 완전 정복(1) - CSS란?&quot; data-og-description=&quot;오늘은 CSS에 대해 알아보는 시간을 갖겠습니다.&amp;nbsp;&amp;nbsp;CSS(Cascading Style Sheet)란 무엇인가?CSS는 사용자에게 문서를 표시하는 방법을 지정하는 언어이다. ex) 스타일, 레이아웃 등. - MDN웹 사이트에서 화&quot; data-og-host=&quot;zero-talk.tistory.com&quot; data-og-source-url=&quot;https://zero-talk.tistory.com/151&quot; data-og-url=&quot;https://zero-talk.tistory.com/151&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/cptEta/hyXzL5bBPD/6KVOYkN1aNGwH6qB7fPiu1/img.png?width=500&amp;amp;height=705&amp;amp;face=0_0_500_705,https://scrap.kakaocdn.net/dn/wUPKg/hyXzVtaUCj/LcTDZzqVzv3o51zk6mxGj0/img.png?width=500&amp;amp;height=705&amp;amp;face=0_0_500_705,https://scrap.kakaocdn.net/dn/bfou4l/hyXzOt4M57/irrk93Mg6G28iCJUykfmn1/img.png?width=634&amp;amp;height=465&amp;amp;face=0_0_634_465&quot;&gt;&lt;a href=&quot;https://zero-talk.tistory.com/151&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://zero-talk.tistory.com/151&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/cptEta/hyXzL5bBPD/6KVOYkN1aNGwH6qB7fPiu1/img.png?width=500&amp;amp;height=705&amp;amp;face=0_0_500_705,https://scrap.kakaocdn.net/dn/wUPKg/hyXzVtaUCj/LcTDZzqVzv3o51zk6mxGj0/img.png?width=500&amp;amp;height=705&amp;amp;face=0_0_500_705,https://scrap.kakaocdn.net/dn/bfou4l/hyXzOt4M57/irrk93Mg6G28iCJUykfmn1/img.png?width=634&amp;amp;height=465&amp;amp;face=0_0_634_465');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;[Deep Dive] CSS 기초 개념 완전 정복(1) - CSS란?&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;오늘은 CSS에 대해 알아보는 시간을 갖겠습니다.&amp;nbsp;&amp;nbsp;CSS(Cascading Style Sheet)란 무엇인가?CSS는 사용자에게 문서를 표시하는 방법을 지정하는 언어이다. ex) 스타일, 레이아웃 등. - MDN웹 사이트에서 화&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;zero-talk.tistory.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>☁️ 구름 x 카카오 Deep Dive 풀스택</category>
      <category>CSS</category>
      <category>css기초완전정복</category>
      <category>css색표현하는법</category>
      <category>HAX</category>
      <category>HTML</category>
      <category>rgb</category>
      <category>rgba</category>
      <category>빨강초록파랑</category>
      <category>색상표현</category>
      <category>색이름</category>
      <author>gxxg</author>
      <guid isPermaLink="true">https://zero-talk.tistory.com/154</guid>
      <comments>https://zero-talk.tistory.com/154#entry154comment</comments>
      <pubDate>Tue, 19 Nov 2024 09:29:47 +0900</pubDate>
    </item>
    <item>
      <title>[HTML] &amp;lt;div&amp;gt; 태그의 모든 것 - 중첩 &amp;lt;div&amp;gt;</title>
      <link>https://zero-talk.tistory.com/153</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;html logo.png&quot; data-origin-width=&quot;2000&quot; data-origin-height=&quot;2000&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/babnoO/btsKMH23GTJ/DjWWF4qaMEZgxknk4dJ8qK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/babnoO/btsKMH23GTJ/DjWWF4qaMEZgxknk4dJ8qK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/babnoO/btsKMH23GTJ/DjWWF4qaMEZgxknk4dJ8qK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbabnoO%2FbtsKMH23GTJ%2FDjWWF4qaMEZgxknk4dJ8qK%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;200&quot; height=&quot;200&quot; data-filename=&quot;html logo.png&quot; data-origin-width=&quot;2000&quot; data-origin-height=&quot;2000&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&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 style=&quot;background-color: #fffa00;&quot;&gt;&lt;b&gt;&amp;lt;div&amp;gt; 태그를 중첩으로 여러개 쓰는 게 좋지 않은 코드&lt;/b&gt;&lt;/span&gt;라는 말을 들었다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&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;&amp;lt;div&amp;gt; 태그를 써야 옳바른지, &amp;lt;div&amp;gt; 태그를 중첩으로 쓰지 않으려면 어떻게 해야하는지&lt;/b&gt; 알아봤다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;text-align: left;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&quot;&gt;&amp;lt;div&amp;gt; 태그란 무엇일까?&lt;/span&gt;&lt;/b&gt;&lt;/h3&gt;
&lt;p style=&quot;text-align: left;&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;lt;div&amp;gt; 태그는 Division의 약자로 body 문서 안에서 각 영역의 세션을 구분, 정의 한다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&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;gt; 구역을 나누는 태그. 가로줄 전체를 다 차지한다. 이 말은 너비(width)가 100%인 것과 같다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&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;lt;div&amp;gt; 태그는 &lt;b&gt;&lt;span style=&quot;background-color: #fffa00;&quot;&gt;특정 콘텐츠를 그룹화하거나 레이아웃을 구성할 때 사용되는 기본 블록 요소&lt;/span&gt;&lt;/b&gt;로, 시맨틱적인 의미는 없다. 즉, &lt;b&gt;레이아웃(Layout) 구조 틀을 만들고 CSS를 통해 위치 및 레이어(Layer)를 구분하는 등 HTML 요소의 컨테이너 역할&lt;/b&gt;을 한다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;text-align: left;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&quot;&gt;&lt;b&gt;&amp;lt;div&amp;gt; 태그의 주요 특징?&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p 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;1. 의미 없음 (Non-semantic)&lt;/b&gt;&lt;/span&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;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&quot;&gt;자체적으로 콘텐츠의 의미를 전달하지 않는다.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&quot;&gt;단순히 요소를 묶는 용도로 사용한다.&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p 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;2. 블록 레벨 요소&lt;/b&gt;&lt;/span&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;span style=&quot;background-color: #fffa00; font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&quot;&gt;&lt;b&gt;화면 전체 너비를 차지하며, 다음 요소는 아래로 배치된다.&lt;/b&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p 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;3. 다양한 용도&lt;/b&gt;&lt;/span&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;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&quot;&gt;CSS로 스타일을 적용하거나 JS로 조작할 때 유용하다.&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p 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;4. 시맨틱 태그의 대체 용도&lt;/b&gt;&lt;/span&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;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&quot;&gt;시맨틱 태그를 사용할 수 없는 경우 (Ex. 레이아웃 컨테이너) &amp;lt;div&amp;gt; 태그를 사용한다.&lt;/span&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;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&quot;&gt;* 가능한한 &lt;b&gt;&lt;span style=&quot;background-color: #fffa00;&quot;&gt;시맨틱 태그를 우선적&lt;/span&gt;&lt;/b&gt;으로 사용하고, &amp;lt;div&amp;gt; 태그는 &lt;span style=&quot;background-color: #fffa00;&quot;&gt;&lt;b&gt;스타일링이나 레이아웃 목적 등 의미가 필요하지 않은 경우&lt;/b&gt;&lt;/span&gt;에만 사용한다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&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;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;&amp;lt;div&amp;gt; 태그와 시맨틱 태그 비교 코드&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;1. 페이지 레이아웃&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&amp;lt;div&amp;gt; 태그 사용할 경우&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1731941314281&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;lt;div class = &quot;header&quot;&amp;gt;
  &amp;lt;div class = &quot;logo&quot;&amp;gt;My Logo&amp;lt;/div&amp;gt;
  &amp;lt;div class = &quot;nav&quot;&amp;gt;Navigation&amp;lt;/div&amp;gt;
&amp;lt;/div&amp;gt;

&amp;lt;div class = &quot;content&quot;&amp;gt;
  &amp;lt;div class = &quot;main&quot;&amp;gt;Main Content&amp;lt;/div&amp;gt;
  &amp;lt;div class = &quot;aside&quot;&amp;gt;Sidebar&amp;lt;/div&amp;gt;
&amp;lt;/div&amp;gt;

&amp;lt;div class = &quot;footer&quot;&amp;gt;Footer Content&amp;lt;/div&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;시맨틱 태그를 사용할 경우&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1731941533331&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;lt;header&amp;gt;
  &amp;lt;div class = &quot;logo&quot;&amp;gt;My Logo&amp;lt;/div&amp;gt;
  &amp;lt;nav&amp;gt;Navigation&amp;lt;/nav&amp;gt;
&amp;lt;/header&amp;gt;

&amp;lt;main&amp;gt;
  &amp;lt;section class = &quot;main&quot;&amp;gt;Main Content&amp;lt;/section&amp;gt;
  &amp;lt;aside class = &quot;aside&quot;&amp;gt;Sidebar&amp;lt;/aside&amp;gt;
&amp;lt;/main&amp;gt;

&amp;lt;footer&amp;gt;Footer Content&amp;lt;/footer&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&quot;&gt;&lt;b&gt;2.&amp;nbsp; 프로필 정보&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000; text-align: start;&quot;&gt; &amp;lt;div&amp;gt; 태그 사용할 경우 &lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1731941698942&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;lt;div class = &quot;propile&quot;&amp;gt;
  &amp;lt;div class = &quot;name&quot;&amp;gt;My name is John Doe&amp;lt;/div&amp;gt;
  &amp;lt;div class = &quot;bio&quot;&amp;gt;Web Developer vased in NYC.&amp;lt;/div&amp;gt;
&amp;lt;/div&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p 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;pre id=&quot;code_1731941771833&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;lt;section class = &quot;propile&quot;&amp;gt;
  &amp;lt;h2&amp;gt;John Doe&amp;lt;/h2&amp;gt;
  &amp;lt;p&amp;gt;Web Developer vased in NYC.&amp;lt;/p&amp;gt;
&amp;lt;/section&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&quot;&gt;&amp;there4; &lt;span style=&quot;background-color: #fffa00;&quot;&gt;&lt;b&gt;&amp;lt;div&amp;gt; 태그는 의미 없는 그룹화에 적합&lt;/b&gt;&lt;/span&gt;하지만, &lt;b&gt;콘텐츠의 의미나 역할이 명확할 경우 시맨틱 태그&lt;/b&gt;를 사용하는 것이 더 좋은 코드를 작성하는 방법 중 하나라고 볼 수 있다. 시맨틱 태그는 코드의 구조를 이해하기 쉽게 만들고 접근성과 SEO를 개선하는 데 큰 도움을 준다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&quot;&gt;&lt;b&gt;언제 &amp;lt;div&amp;gt; 태그를 써도 괜찮을까?&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&quot;&gt;시맨틱 태그를 사용하기 어려운 경우에는 &amp;lt;div&amp;gt; 태그를 쓸 수 있다.&lt;/span&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;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&quot;&gt;&lt;b&gt;&lt;span style=&quot;background-color: #fffa00;&quot;&gt;레이아웃을 위한 컨테이너(Ex. 그리드, 플렉스 박스 등)를 구성&lt;/span&gt;&lt;/b&gt;할 때&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&quot;&gt;특정한 시맨틱 의미를 부여할 필요가 없는 &lt;span style=&quot;background-color: #fffa00;&quot;&gt;&lt;b&gt;단순한 그룹화&lt;/b&gt;&lt;/span&gt;가 필요할 때&lt;/span&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;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&quot;&gt;1. 레이아웃 컨테이너로 사용&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1731942470660&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;lt;div class=&quot;flex-container&quot;&amp;gt;
  &amp;lt;div class=&quot;flex-item&quot;&amp;gt;Item 1&amp;lt;/div&amp;gt;
  &amp;lt;div class=&quot;flex-item&quot;&amp;gt;Item 2&amp;lt;/div&amp;gt;
  &amp;lt;div class=&quot;flex-item&quot;&amp;gt;Item 3&amp;lt;/div&amp;gt;
&amp;lt;/div&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&quot;&gt;=&amp;gt; 단순히 &lt;b&gt;&lt;span style=&quot;background-color: #fffa00;&quot;&gt;레이아웃의 스타일을 조정&lt;/span&gt;&lt;/b&gt;하기 위한 컨테이너 역할&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&quot;&gt;=&amp;gt;** &lt;b&gt;class = &quot;flex-container&quot;&lt;/b&gt; **는 &lt;b&gt;Flexbox 컨테이너&lt;/b&gt;로 시맨틱 의미가 필요하지 않으므로 &amp;lt;div&amp;gt; 태그 사용&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&quot;&gt;2. 재사용 가능한 컴포넌트&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1731942599346&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;lt;div class=&quot;card&quot;&amp;gt;
  &amp;lt;div class=&quot;card-header&quot;&amp;gt;Card Title&amp;lt;/div&amp;gt;
  &amp;lt;div class=&quot;card-body&quot;&amp;gt;This is the card content.&amp;lt;/div&amp;gt;
  &amp;lt;div class=&quot;card-footer&quot;&amp;gt;Footer Info&amp;lt;/div&amp;gt;
&amp;lt;/div&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&quot;&gt;3. 스타일링 또는 애니메이션 컨테이너&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1731942637700&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;lt;div class=&quot;background&quot;&amp;gt;
  &amp;lt;div class=&quot;content&quot;&amp;gt;
    &amp;lt;h1&amp;gt;Welcome!&amp;lt;/h1&amp;gt;
    &amp;lt;p&amp;gt;This is a hero section.&amp;lt;/p&amp;gt;
  &amp;lt;/div&amp;gt;
&amp;lt;/div&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&quot;&gt;=&amp;gt; &lt;b&gt;&lt;span style=&quot;background-color: #fffa00;&quot;&gt;시각적인 효과(배경, 애니메이션)를 추가&lt;/span&gt;&lt;/b&gt;하기 위한 목적으로 &amp;lt;div&amp;gt; 태그 사용 가능&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&quot;&gt;=&amp;gt; ** &lt;b&gt;class=&quot;background&quot;&lt;/b&gt; **는 &lt;b&gt;배경 이미지를 추가하거나 애니메이션을 적용&lt;/b&gt;하는 데 사용&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&quot;&gt;4. 그룹화가 필요할 때&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1731942734643&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;lt;div class=&quot;button-group&quot;&amp;gt;
  &amp;lt;button&amp;gt;Button 1&amp;lt;/button&amp;gt;
  &amp;lt;button&amp;gt;Button 2&amp;lt;/button&amp;gt;
  &amp;lt;button&amp;gt;Button 3&amp;lt;/button&amp;gt;
&amp;lt;/div&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&quot;&gt;5. CSS Grid의 컨테이너&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1731942763300&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;lt;-- css Grid 레이아웃 --&amp;gt;
&amp;lt;div class=&quot;grid-container&quot;&amp;gt;
  &amp;lt;div class=&quot;grid-item&quot;&amp;gt;1&amp;lt;/div&amp;gt;
  &amp;lt;div class=&quot;grid-item&quot;&amp;gt;2&amp;lt;/div&amp;gt;
  &amp;lt;div class=&quot;grid-item&quot;&amp;gt;3&amp;lt;/div&amp;gt;
  &amp;lt;div class=&quot;grid-item&quot;&amp;gt;4&amp;lt;/div&amp;gt;
&amp;lt;/div&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&quot;&gt;=&amp;gt; &amp;lt;div&amp;gt; 태그는 CSS Grid &lt;b&gt;&lt;span style=&quot;background-color: #fffa00;&quot;&gt;레이아웃에서 행(row)과 열(column)을 나누는 데 유용&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;</description>
      <category>☁️ 구름 x 카카오 Deep Dive 풀스택/html, css</category>
      <category>div태그</category>
      <category>flexbox</category>
      <category>HTML</category>
      <category>그룹화</category>
      <category>그리드</category>
      <category>레이아웃</category>
      <category>스타일링</category>
      <category>스타일조정</category>
      <category>시맨틱태그</category>
      <category>애니메이션</category>
      <author>gxxg</author>
      <guid isPermaLink="true">https://zero-talk.tistory.com/153</guid>
      <comments>https://zero-talk.tistory.com/153#entry153comment</comments>
      <pubDate>Tue, 19 Nov 2024 00:19:09 +0900</pubDate>
    </item>
    <item>
      <title>[Deep Dive] CSS 기초 개념 완전 정복(2) - CSS 기본 속성</title>
      <link>https://zero-talk.tistory.com/152</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;css logo.png&quot; data-origin-width=&quot;500&quot; data-origin-height=&quot;705&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bWqxIV/btsKLoPTgxn/fCesrYNkhSUx1zadqFy5tK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bWqxIV/btsKLoPTgxn/fCesrYNkhSUx1zadqFy5tK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bWqxIV/btsKLoPTgxn/fCesrYNkhSUx1zadqFy5tK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbWqxIV%2FbtsKLoPTgxn%2FfCesrYNkhSUx1zadqFy5tK%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;200&quot; height=&quot;282&quot; data-filename=&quot;css logo.png&quot; data-origin-width=&quot;500&quot; data-origin-height=&quot;705&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&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;&lt;span style=&quot;background-color: #fffa00;&quot;&gt;자주 사용하는 CSS 기본 속성&lt;/span&gt;&lt;/b&gt;들에 대해 포스팅하려고 해요.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;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;p&gt;&lt;figure class=&quot;imageblock floatLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;558&quot; data-origin-height=&quot;884&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bwCCc9/btsKMEdkjVV/dy7SQIJhPyb3yMyVxZJAUK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bwCCc9/btsKMEdkjVV/dy7SQIJhPyb3yMyVxZJAUK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bwCCc9/btsKMEdkjVV/dy7SQIJhPyb3yMyVxZJAUK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbwCCc9%2FbtsKMEdkjVV%2Fdy7SQIJhPyb3yMyVxZJAUK%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;591&quot; height=&quot;936&quot; data-origin-width=&quot;558&quot; data-origin-height=&quot;884&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&quot;&gt;1. 백그라운드 색 지정&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&quot;&gt;- 색 이름: white, blue, black&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&quot;&gt;- rgb값: rgb(10. 150, 255)&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&quot;&gt;- Hax값: #FFFA00&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&quot;&gt;2. 텍스트 색 지정&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&quot;&gt;- 색 이름: white, blue, black&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&quot;&gt;- rgb값: rgb(10. 150, 255)&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&quot;&gt;- Hax값: #FFFA00&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&quot;&gt;3. 높이 지정&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&quot;&gt;- 픽셀 값: 50px&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&quot;&gt;- 퍼센티지: 100%&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&quot;&gt;4. 너비 지정&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&quot;&gt;- 픽셀 값: 50px&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&quot;&gt;- 퍼센티지: 100%&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&quot;&gt;5. border 제거&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&quot;&gt;6. 모서리 둥글게&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&quot;&gt;7. 요소 위로 마우스를 가져갈 때&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&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;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&quot;&gt;8. 테두리 색상 설정&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&quot;&gt;9 테두리 스타일 설정&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&quot;&gt;- dotted&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&quot;&gt;- dashed&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&quot;&gt;- solid&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&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;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #000000; 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;CSS 기초 개념 완전 정복(1) - CSS란?&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #000000; 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;내부 스타일 시트를 처음 들어보시는 분&lt;/b&gt;은 아래 (1)번 포스팅부터 봐주세요!&lt;/span&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1731835576057&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;[Deep Dive] CSS 기초 개념 완전 정복(1) - CSS란?&quot; data-og-description=&quot;오늘은 CSS에 대해 알아보는 시간을 갖겠습니다.&amp;nbsp;&amp;nbsp;CSS(Cascading Style Sheet)란 무엇인가?CSS는 사용자에게 문서를 표시하는 방법을 지정하는 언어이다. ex) 스타일, 레이아웃 등. - MDN웹 사이트에서 화&quot; data-og-host=&quot;zero-talk.tistory.com&quot; data-og-source-url=&quot;https://zero-talk.tistory.com/151&quot; data-og-url=&quot;https://zero-talk.tistory.com/151&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/bEFvnP/hyXzTn3iSK/eEFedKUfnpHBlZoGzxbQg0/img.png?width=615&amp;amp;height=198&amp;amp;face=0_0_615_198,https://scrap.kakaocdn.net/dn/bLDHWc/hyXzT2Fp08/0rShstd65YHxJI6azAcUyK/img.png?width=615&amp;amp;height=198&amp;amp;face=0_0_615_198,https://scrap.kakaocdn.net/dn/c997iO/hyXzHVtgYA/LnEaAUtfkLYQUe2t4HIxNk/img.png?width=634&amp;amp;height=465&amp;amp;face=0_0_634_465&quot;&gt;&lt;a href=&quot;https://zero-talk.tistory.com/151&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://zero-talk.tistory.com/151&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/bEFvnP/hyXzTn3iSK/eEFedKUfnpHBlZoGzxbQg0/img.png?width=615&amp;amp;height=198&amp;amp;face=0_0_615_198,https://scrap.kakaocdn.net/dn/bLDHWc/hyXzT2Fp08/0rShstd65YHxJI6azAcUyK/img.png?width=615&amp;amp;height=198&amp;amp;face=0_0_615_198,https://scrap.kakaocdn.net/dn/c997iO/hyXzHVtgYA/LnEaAUtfkLYQUe2t4HIxNk/img.png?width=634&amp;amp;height=465&amp;amp;face=0_0_634_465');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;[Deep Dive] CSS 기초 개념 완전 정복(1) - CSS란?&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;오늘은 CSS에 대해 알아보는 시간을 갖겠습니다.&amp;nbsp;&amp;nbsp;CSS(Cascading Style Sheet)란 무엇인가?CSS는 사용자에게 문서를 표시하는 방법을 지정하는 언어이다. ex) 스타일, 레이아웃 등. - MDN웹 사이트에서 화&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;zero-talk.tistory.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>☁️ 구름 x 카카오 Deep Dive 풀스택</category>
      <category>CSS</category>
      <category>css기본속성</category>
      <category>css기초</category>
      <category>css속성</category>
      <category>css속성기초</category>
      <category>css완전정복</category>
      <category>HTML</category>
      <category>개념정복</category>
      <category>내부스타일</category>
      <category>내부스타일시트</category>
      <author>gxxg</author>
      <guid isPermaLink="true">https://zero-talk.tistory.com/152</guid>
      <comments>https://zero-talk.tistory.com/152#entry152comment</comments>
      <pubDate>Sun, 17 Nov 2024 18:29:34 +0900</pubDate>
    </item>
    <item>
      <title>[Deep Dive] CSS 기초 개념 완전 정복(1) - CSS란?</title>
      <link>https://zero-talk.tistory.com/151</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;css logo.png&quot; data-origin-width=&quot;500&quot; data-origin-height=&quot;705&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bD9fit/btsKK80SnRz/zxmvkZxFeiQUSXUk5frj71/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bD9fit/btsKK80SnRz/zxmvkZxFeiQUSXUk5frj71/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bD9fit/btsKK80SnRz/zxmvkZxFeiQUSXUk5frj71/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbD9fit%2FbtsKK80SnRz%2FzxmvkZxFeiQUSXUk5frj71%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;200&quot; height=&quot;282&quot; data-filename=&quot;css logo.png&quot; data-origin-width=&quot;500&quot; data-origin-height=&quot;705&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;오늘은 CSS에 대해 알아보는 시간을 갖겠습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style1&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;CSS(Cascading Style Sheet)란 무엇인가?&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/blockquote&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&quot;&gt;CSS는 사용자에게 문서를 표시하는 방법을 지정하는 언어이다. ex) 스타일, 레이아웃 등. - MDN&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&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;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&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;&lt;span style=&quot;background-color: #fffa00;&quot;&gt;html은 문장의 구조를 만들고 css는 문장을 브라우저에 어떻게 보여줄지 지정&lt;/span&gt;&lt;/b&gt;하는 언어&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&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;615&quot; data-origin-height=&quot;198&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/rdo1L/btsKLpgMY0p/wkSfOgbw3GrBSp7tit4mzK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/rdo1L/btsKLpgMY0p/wkSfOgbw3GrBSp7tit4mzK/img.png&quot; data-alt=&quot;구조 HTML, 디자인 CSS&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/rdo1L/btsKLpgMY0p/wkSfOgbw3GrBSp7tit4mzK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Frdo1L%2FbtsKLpgMY0p%2FwkSfOgbw3GrBSp7tit4mzK%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;615&quot; height=&quot;198&quot; data-origin-width=&quot;615&quot; data-origin-height=&quot;198&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;구조 HTML, 디자인 CSS&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: center;&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;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;style6&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;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&quot;&gt;&lt;b&gt; &lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000; text-align: center;&quot;&gt; &lt;/span&gt; CSS를 사용하는 방법은?&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;color: #000000; font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;1. HTML 안에서 Style 속성을 이용 (인라인 스타일)&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;color: #000000; font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;=&amp;gt; &lt;span style=&quot;background-color: #fffa00;&quot;&gt;&lt;b&gt;태그 안에 스타일 속성&lt;/b&gt;&lt;/span&gt;을 주고 속성값을 넣어주는 방법&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;767&quot; data-origin-height=&quot;45&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bDYedb/btsKK27pupf/1C0K5t54vddK7S0ELz7xlk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bDYedb/btsKK27pupf/1C0K5t54vddK7S0ELz7xlk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bDYedb/btsKK27pupf/1C0K5t54vddK7S0ELz7xlk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbDYedb%2FbtsKK27pupf%2F1C0K5t54vddK7S0ELz7xlk%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;700&quot; height=&quot;41&quot; data-origin-width=&quot;767&quot; data-origin-height=&quot;45&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;color: #000000; font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;2. &amp;lt;style&amp;gt; 태그를 통해 HTML 문서 내부에서 이용 (내부 스타일 시트)&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;color: #000000; font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;=&amp;gt; &lt;span style=&quot;background-color: #fffa00;&quot;&gt;&lt;b&gt;&amp;lt;head&amp;gt; 태그 안에 &amp;lt;style&amp;gt; 태그&lt;/b&gt;&lt;/span&gt;를 넣어주고 타입으로 &quot;text/css&quot; 속성값을 주는 방법&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;535&quot; data-origin-height=&quot;285&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bgCpfm/btsKLqz05UY/JtdlpVTqnd0vkUn5ghCV71/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bgCpfm/btsKLqz05UY/JtdlpVTqnd0vkUn5ghCV71/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bgCpfm/btsKLqz05UY/JtdlpVTqnd0vkUn5ghCV71/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbgCpfm%2FbtsKLqz05UY%2FJtdlpVTqnd0vkUn5ghCV71%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;330&quot; height=&quot;176&quot; data-origin-width=&quot;535&quot; data-origin-height=&quot;285&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;color: #000000; font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;3. 별도로 CSS 파일을 분리하여 HTML의 문서에 연결 (외부 스타일 시트)&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;color: #000000; font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;=&amp;gt; 기존에 *.html 파일 말고도 *.css 파일을 생성해 &lt;span style=&quot;background-color: #fffa00;&quot;&gt;&lt;b&gt;.css 파일 내에서 스타일링을 하고 html에서 연결&lt;/b&gt;&lt;/span&gt;하는 방법&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;color: #000000; font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;=&amp;gt; &lt;span style=&quot;background-color: #fffa00;&quot;&gt;&lt;b&gt;link라는 태그&lt;/b&gt;&lt;/span&gt;를 이용해 css 파일 이름을 넣어주면 &lt;span style=&quot;background-color: #fffa00;&quot;&gt;&lt;b&gt;*.html 파일이 해당 css 파일을 로드&lt;/b&gt;&lt;/span&gt;함&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dpASDg/btsKNcfX74u/rNWbhNGwRnJn5Al7FI57U0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dpASDg/btsKNcfX74u/rNWbhNGwRnJn5Al7FI57U0/img.png&quot; data-origin-width=&quot;840&quot; data-origin-height=&quot;118&quot; data-is-animation=&quot;false&quot; width=&quot;700&quot; height=&quot;98&quot; style=&quot;width: 66.9914%; margin-right: 10px;&quot; data-widthpercent=&quot;67.78&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dpASDg/btsKNcfX74u/rNWbhNGwRnJn5Al7FI57U0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdpASDg%2FbtsKNcfX74u%2FrNWbhNGwRnJn5Al7FI57U0%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;840&quot; height=&quot;118&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cN0MqP/btsKM5BmWKX/fueOuLiAvIUpzoQumbi6n1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cN0MqP/btsKM5BmWKX/fueOuLiAvIUpzoQumbi6n1/img.png&quot; data-origin-width=&quot;423&quot; data-origin-height=&quot;125&quot; data-is-animation=&quot;false&quot; width=&quot;350&quot; height=&quot;103&quot; data-widthpercent=&quot;32.22&quot; style=&quot;width: 31.8458%;&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cN0MqP/btsKM5BmWKX/fueOuLiAvIUpzoQumbi6n1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcN0MqP%2FbtsKM5BmWKX%2FfueOuLiAvIUpzoQumbi6n1%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;423&quot; height=&quot;125&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;321&quot; data-origin-height=&quot;146&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dNDOE5/btsKMPrYPHJ/oxL411Ijgf2CeCCH2cK3A1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dNDOE5/btsKMPrYPHJ/oxL411Ijgf2CeCCH2cK3A1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dNDOE5/btsKMPrYPHJ/oxL411Ijgf2CeCCH2cK3A1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdNDOE5%2FbtsKMPrYPHJ%2FoxL411Ijgf2CeCCH2cK3A1%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;250&quot; height=&quot;114&quot; data-origin-width=&quot;321&quot; data-origin-height=&quot;146&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;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;b&gt; &lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000; text-align: center;&quot;&gt; &lt;/span&gt; 스타일 적용의 우선 순위&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;background-color: #fffa00;&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&quot;&gt;인라인 스타일 &amp;gt; 내부 스타일 시트, 외부 시타일 시트 &amp;gt; 웹 브라우저 기본 스타일&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p 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;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt; &lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000; text-align: center;&quot;&gt; &lt;/span&gt; CSS 기본 구조&lt;/span&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;634&quot; data-origin-height=&quot;465&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/byjMyN/btsKMH8ANo4/Hok4ZesdRKfagiNrrTARq0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/byjMyN/btsKMH8ANo4/Hok4ZesdRKfagiNrrTARq0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/byjMyN/btsKMH8ANo4/Hok4ZesdRKfagiNrrTARq0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbyjMyN%2FbtsKMH8ANo4%2FHok4ZesdRKfagiNrrTARq0%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;600&quot; height=&quot;440&quot; data-origin-width=&quot;634&quot; data-origin-height=&quot;465&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&quot;&gt;다음엔 CSS 기본 속성에 대해 포스팅 하겠습니다! (업로드 완료)&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&quot;&gt;CSS&amp;nbsp;기초&amp;nbsp;개념&amp;nbsp;완전&amp;nbsp;정복(2)&amp;nbsp;-&amp;nbsp;CSS&amp;nbsp;기본&amp;nbsp;속성&lt;/span&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1731835865190&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;[Deep Dive] CSS 기초 개념 완전 정복(2) - css 기본 속성&quot; data-og-description=&quot;오늘은 자주 사용하는 CSS 기본 속성들에 대해 포스팅하려고 해요.&amp;nbsp;&amp;nbsp;예시 코드는 내부 스타일 시트를 사용했습니다.&amp;nbsp;1. 백그라운드 색 지정- 색 이름: white, blue, black- rgb값: rgb(10. 150, 255)- Hax값: #F&quot; data-og-host=&quot;zero-talk.tistory.com&quot; data-og-source-url=&quot;https://zero-talk.tistory.com/152&quot; data-og-url=&quot;https://zero-talk.tistory.com/152&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/ev0X6v/hyXwtK48uN/N2BI4g4ButxiRsK5cQBac1/img.png?width=558&amp;amp;height=884&amp;amp;face=0_0_558_884,https://scrap.kakaocdn.net/dn/XhEUk/hyXzJ6OhVw/gc0J3xDUWKmjrH06yaPd6k/img.png?width=558&amp;amp;height=884&amp;amp;face=0_0_558_884,https://scrap.kakaocdn.net/dn/5MBoo/hyXzJZ2ydU/NHWl2hSjEjs9Yq7RJHvKv1/img.png?width=558&amp;amp;height=884&amp;amp;face=0_0_558_884&quot;&gt;&lt;a href=&quot;https://zero-talk.tistory.com/152&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://zero-talk.tistory.com/152&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/ev0X6v/hyXwtK48uN/N2BI4g4ButxiRsK5cQBac1/img.png?width=558&amp;amp;height=884&amp;amp;face=0_0_558_884,https://scrap.kakaocdn.net/dn/XhEUk/hyXzJ6OhVw/gc0J3xDUWKmjrH06yaPd6k/img.png?width=558&amp;amp;height=884&amp;amp;face=0_0_558_884,https://scrap.kakaocdn.net/dn/5MBoo/hyXzJZ2ydU/NHWl2hSjEjs9Yq7RJHvKv1/img.png?width=558&amp;amp;height=884&amp;amp;face=0_0_558_884');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;[Deep Dive] CSS 기초 개념 완전 정복(2) - css 기본 속성&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;오늘은 자주 사용하는 CSS 기본 속성들에 대해 포스팅하려고 해요.&amp;nbsp;&amp;nbsp;예시 코드는 내부 스타일 시트를 사용했습니다.&amp;nbsp;1. 백그라운드 색 지정- 색 이름: white, blue, black- rgb값: rgb(10. 150, 255)- Hax값: #F&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;zero-talk.tistory.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>☁️ 구름 x 카카오 Deep Dive 풀스택</category>
      <category>CSS</category>
      <category>css파일로드</category>
      <category>HTML</category>
      <category>값</category>
      <category>내부스타일시트</category>
      <category>문장구조</category>
      <category>선택자</category>
      <category>외부스타일시트</category>
      <category>인라인스타일</category>
      <category>프로퍼티</category>
      <author>gxxg</author>
      <guid isPermaLink="true">https://zero-talk.tistory.com/151</guid>
      <comments>https://zero-talk.tistory.com/151#entry151comment</comments>
      <pubDate>Sun, 17 Nov 2024 11:22:37 +0900</pubDate>
    </item>
    <item>
      <title>[GitHub] Organizations 팀 프로젝트를 내 Repositories로 가져오기</title>
      <link>https://zero-talk.tistory.com/150</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;GitHub logo.png&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;1156&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/OPQqt/btsKMG9L1AF/9KpQUuYzZAMhpL8qEpU9u1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/OPQqt/btsKMG9L1AF/9KpQUuYzZAMhpL8qEpU9u1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/OPQqt/btsKMG9L1AF/9KpQUuYzZAMhpL8qEpU9u1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FOPQqt%2FbtsKMG9L1AF%2F9KpQUuYzZAMhpL8qEpU9u1%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;200&quot; height=&quot;181&quot; data-filename=&quot;GitHub logo.png&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;1156&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&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;프로젝트들이 모두 Organizations&lt;/b&gt;에 남아 있어&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&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;내 프로필에서 보이지 않는다&lt;/b&gt;는 걸 발견했다. 이를 해결하기 위한 여정&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&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;&lt;span style=&quot;background-color: #fffa00;&quot;&gt;Fork&lt;/span&gt; &lt;/b&gt;기능으로 내 개인 레포지토리로 &lt;span style=&quot;background-color: #fffa00;&quot;&gt;&lt;b&gt;프로젝트를 복사&lt;/b&gt;&lt;/span&gt;할 수 있는데 문제는...&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&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 style=&quot;background-color: #fffa00;&quot;&gt;&lt;b&gt;레포지토리 한 개만 가져올 수 있다는 것&lt;/b&gt;&lt;/span&gt;이다..&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&quot;&gt;아래 사진을 보다시피 해당 팀 프로젝트는 레포지토리가 4개이다.&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;444&quot; data-origin-height=&quot;329&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dQ1WqX/btsKLk7BYbk/g59YMI3u7zUrktyyghRReK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dQ1WqX/btsKLk7BYbk/g59YMI3u7zUrktyyghRReK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dQ1WqX/btsKLk7BYbk/g59YMI3u7zUrktyyghRReK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdQ1WqX%2FbtsKLk7BYbk%2Fg59YMI3u7zUrktyyghRReK%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;444&quot; height=&quot;329&quot; data-origin-width=&quot;444&quot; data-origin-height=&quot;329&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&quot;&gt;1. &lt;b&gt;모노레포(Monorepo)&lt;/b&gt; 방식으로 통합하기&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&quot;&gt;2. &lt;b&gt;Git Submodule&lt;/b&gt; 사용하기&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&quot;&gt;나의 경우 하나로 통합해서 Fork 하는 게 목적이기에 2번 방식을 택했다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&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 style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000; text-align: center;&quot;&gt; &lt;/span&gt;&amp;nbsp;&lt;b&gt;새로운 Repositories 생성&lt;/b&gt;&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;918&quot; data-origin-height=&quot;117&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/tetCW/btsKMCTTA2I/ikVv1fuDsCO0nNpJhK39Hk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/tetCW/btsKMCTTA2I/ikVv1fuDsCO0nNpJhK39Hk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/tetCW/btsKMCTTA2I/ikVv1fuDsCO0nNpJhK39Hk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FtetCW%2FbtsKMCTTA2I%2FikVv1fuDsCO0nNpJhK39Hk%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;918&quot; height=&quot;117&quot; data-origin-width=&quot;918&quot; data-origin-height=&quot;117&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&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 style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000; text-align: center;&quot;&gt; &lt;/span&gt;&amp;nbsp;&lt;b&gt;로컬에서 레포지토리 클론&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&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;&lt;span style=&quot;background-color: #fffa00;&quot;&gt;명령어는 git bash&lt;/span&gt;&lt;/b&gt;에서 치셔야 합니다&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1731764870654&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;bash

git clone https://github.com/username/my-project.git
cd my-project&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&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 style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000; text-align: center;&quot;&gt; &lt;/span&gt; &lt;b&gt;각 레포지토리를 서브모듈로 추가 &lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1731768456360&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;bash

git submodule add https://github.com/organization-name/backend-repo.git backend
git submodule add https://github.com/organization-name/frontend-repo.git frontend
git submodule add https://github.com/organization-name/ai-repo.git ai-model
git submodule add https://github.com/organization-name/full-repo.git full-project&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&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 style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000; text-align: center;&quot;&gt; &lt;/span&gt;&lt;b&gt; 변경사항 커밋 및 푸시&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1731768611386&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;bash

git commit -m &quot;Add submodules for all projects&quot;
git push origin main&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&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 style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000; text-align: center;&quot;&gt; &lt;/span&gt; &lt;b&gt;결과&lt;/b&gt;&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;2088&quot; data-origin-height=&quot;827&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/1qOzR/btsKLoIX20y/pwVQw3O3Nkllp3kSRtzESk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/1qOzR/btsKLoIX20y/pwVQw3O3Nkllp3kSRtzESk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/1qOzR/btsKLoIX20y/pwVQw3O3Nkllp3kSRtzESk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F1qOzR%2FbtsKLoIX20y%2FpwVQw3O3Nkllp3kSRtzESk%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;2088&quot; height=&quot;827&quot; data-origin-width=&quot;2088&quot; data-origin-height=&quot;827&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: center;&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 style=&quot;background-color: #fffa00;&quot;&gt;&lt;b&gt;4개의 레포지토리가 서브 모듈로 추가&lt;/b&gt;&lt;/span&gt;됩니다!&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&quot;&gt;Submodule의 특징&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&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;p style=&quot;text-align: center;&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;</description>
      <category>Etc</category>
      <category>git bash</category>
      <category>git submodule</category>
      <category>github</category>
      <category>Organizations</category>
      <category>repositories</category>
      <category>submodule</category>
      <category>깃허브</category>
      <category>독립적 유지</category>
      <category>모노레포</category>
      <category>서브모듈</category>
      <category>오블완</category>
      <category>티스토리챌린지</category>
      <author>gxxg</author>
      <guid isPermaLink="true">https://zero-talk.tistory.com/150</guid>
      <comments>https://zero-talk.tistory.com/150#entry150comment</comments>
      <pubDate>Sat, 16 Nov 2024 23:56:38 +0900</pubDate>
    </item>
    <item>
      <title>[SQLD] 문자 함수 예제 모음</title>
      <link>https://zero-talk.tistory.com/149</link>
      <description>&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;함수가 안 외워져서 노랭이 푸는데 버벅거리는 상황 ^-^&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;잊어버리지 않으려고 아예 문자열 함수 예제만 찾아서 풀음.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;대소문자 변환 함수 - UPPER, LOWER&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;UPPER - 문자열을 대문자로&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1731479351476&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;lt;-- UPPER(대상) --&amp;gt;
SELECT UPPER('Hello')
FROM DUAL;

&amp;lt;-- 결과 HELLO --&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1731479632666&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;lt;-- 예제 --&amp;gt;
SELECT UPPER('sqld')
FROM DUAL;

SELECT UPPER('hello world')
FROM DUAL;

SELECT UPPER('database')
FROM DUAL;

SELECT UPPER('sql developer')
FROM DUAL;

SELECT UPPER('data analysis')
FROM DUAL;

SELECT UPPER('welcome')
FROM DUAL;

SELECT UPPER('substring')
FROM DUAL;

SELECT UPPER('learning sql')
FROM DUAL;

SELECT UPPER('programming')
FROM DUAL;

SELECT UPPER('banana')
FROM DUAL;&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;LOWER - 문자열을 소문자로&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1731479722357&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;lt;-- LOWER(대상) --&amp;gt;
SELECT LOWER('HELLO')
FROM DUAL;

&amp;lt;-- 결과 hello --&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1731479797447&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;lt;-- 예제 --&amp;gt;
SELECT LOWER('SQLD');
FROM DUAL;

SELECT LOWER('HELLO WORLD');
FROM DUAL;

SELECT LOWER('LOWERCASE');
FROM DUAL;

SELECT LOWER('DATABASE');
FROM DUAL;

SELECT LOWER('SQL DEVELOPER');
FROM DUAL;

SELECT LOWER('DATA ANALYSIS');
FROM DUAL;

SELECT LOWER('WELCOME');
FROM DUAL;

SELECT LOWER('SUBSTRING');
FROM DUAL;

SELECT LOWER('LEARNING SQL');
FROM DUAL;

SELECT LOWER('PROGRAMMING');
FROM DUAL;&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt; SUBSTR - 문자열 중 m 위치에서 n개의 문자열 추출&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;* n 생략 시 끝까지 추출&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1731484903920&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;lt;-- SUBSTR(대상, m, n) --&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1731484945754&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;SELECT SUBSTR('Database', 1, 4); 결과: 'Data'
FROM DUAL;

SELECT SUBSTR('Management', 3, 5); 결과: 'nage'
FROM DUAL;

SELECT SUBSTR('Information', 5, 3); 결과: 'orm'
FROM DUAL;

SELECT SUBSTR('System', 2, 4); 결과: 'yste'
FROM DUAL;

SELECT SUBSTR('SQL Developer', 1, 3); 결과: 'SQL'
FROM DUAL;

SELECT SUBSTR('Data Analysis', 6, 7); 결과: 'Analysis'
FROM DUAL;

SELECT SUBSTR('Welcome to SQLD', 4, 2); 결과: 'co'
FROM DUAL;

SELECT SUBSTR('Substring', 1, 9); 결과: 'Substring'
FROM DUAL;

SELECT SUBSTR('Learning SQL', 10, 3); 결과: 'SQL'
FROM DUAL;

SELECT SUBSTR('Programming', 2, 6); 결과: 'rogram'
FROM DUAL;&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;INSTR - 찾을 문자열 위치 반환&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;* m과 n 생략 시 1로 해석&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;INSTR(대상, 찾을 문자열, m, n)&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1731484981718&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;SELECT INSTR('SQLD', 'L'); 결과: 3

SELECT INSTR('Hello World', 'o'); 결과: 5

SELECT INSTR('Database', 'a'); 결과: 2

SELECT INSTR('Management', 'e'); 결과: 6

SELECT INSTR('Information', 'n'); 결과: 6

SELECT INSTR('System', 's'); 결과: 3

SELECT INSTR('Developer', 'v'); 결과: 3

SELECT INSTR('Analysis', 'l'); 결과: 6

SELECT INSTR('Welcome', 'e'); 결과: 2

SELECT INSTR('Substring', 't'); 결과: 4&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;LTRIM - 문자열 중 특정 문자열을 왼쪽에서 삭제&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;LTRIM(대상, 삭제 문자열)&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;RTRIM - 문자열 중 특정 문자열을 오른쪽에서 삭제&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;RTRIN(대상, 삭제 문자열)&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;TRIM - 문자열 중 특정 문자열을 양쪽에서 삭제&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;TRIM(대상)&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1731485047018&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;SELECT TRIM(' SQLD '); 결과: 'SQLD'

SELECT TRIM('Hello '); 결과: 'Hello'

SELECT TRIM(' World'); 결과: 'World'

SELECT TRIM(' Data Management '); 결과: 'Data Management'

SELECT TRIM(' SQL '); 결과: 'SQL'

SELECT TRIM(' Text '); 결과: 'Text'

SELECT TRIM(' '); 결과: ''

SELECT TRIM('Non-Trimmable'); 결과: 'Non-Trimmable'

SELECT TRIM(' Spaces Everywhere '); 결과: 'Spaces Everywhere'

SELECT TRIM(' Leading and Trailing '); 결과: 'Leading and Trailing'&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;LPAD -대상 왼쪽에 문자열을 추가하여 총 n개의 길이 리턴&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;LPAD(대상, n, 문자열)&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1731485084729&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;SELECT LPAD('SQL', 5, '*'); 결과: '**SQL'

SELECT LPAD('Hello', 8, '-'); 결과: '---Hello'

SELECT LPAD('World', 10, ' '); 결과: ' World'

SELECT LPAD('Data', 6, '0'); 결과: '00Data'

SELECT LPAD('Analysis', 10, '#'); 결과: '##Analysis'

SELECT LPAD('SQLD', 7, '@'); 결과: '@@@SQLD'

SELECT LPAD('Program', 9, '='); 결과: '==Program'

SELECT LPAD('Function', 12, '%'); 결과: '%%%%Function'

SELECT LPAD('String', 8, '!'); 결과: '!!String'

SELECT LPAD('Test', 6, '^'); 결과: '^^Test'&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;RPAD - 대상 오른쪽에 문자열을 추가하여 총 n개의 길이 리턴&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;RPAD(대상, n, 문자열)&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1731485095086&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;SELECT RPAD('SQL', 5, '*'); 결과: 'SQL**'

SELECT RPAD('Hello', 8, '-'); 결과: 'Hello---'

SELECT RPAD('World', 10, ' '); 결과: 'World '

SELECT RPAD('Data', 6, '0'); 결과: 'Data00'

SELECT RPAD('Analysis', 10, '#'); 결과: 'Analysis##'

SELECT RPAD('SQLD', 7, '@'); 결과: 'SQLD@@@'

SELECT RPAD('Program', 9, '='); 결과: 'Program=='

SELECT RPAD('Function', 12, '%'); 결과: 'Function%%%%'

SELECT RPAD('String', 8, '!'); 결과: 'String!!'

SELECT RPAD('Test', 6, '^'); 결과: 'Test^^'&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;CONCAT - 문자열 결함&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;CONCAT(대상1, 대상2)&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1731485021767&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;SELECT CONCAT('SQL', 'D'); 결과: 'SQLD'

SELECT CONCAT('Hello', ' World'); 결과: 'Hello World'

SELECT CONCAT('Data', 'base'); 결과: 'Database'

SELECT CONCAT('123', '456'); 결과: '123456'

SELECT CONCAT('Test', 'ing'); 결과: 'Testing'

SELECT CONCAT('Concaten', 'ate'); 결과: 'Concatenate'

SELECT CONCAT('A', 'B', 'C'); 결과: 'ABC'

SELECT CONCAT('Example', 'String'); 결과: 'ExampleString'

SELECT CONCAT('SQL', 'Server'); 결과: 'SQLServer'

SELECT CONCAT('First', 'Second'); 결과: 'FirstSecond'&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;LENGTH - 문자열 길이&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;LENGTH(대상)&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1731485007195&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;SELECT LENGTH('SQLD'); 결과: 4

SELECT LENGTH('Hello'); 결과: 5

SELECT LENGTH(' '); 결과: 1

SELECT LENGTH('Database Management'); 결과: 19

SELECT LENGTH('A B C'); 결과: 5

SELECT LENGTH('12345'); 결과: 5

SELECT LENGTH('Special@#$&amp;amp;*'); 결과: 11

SELECT LENGTH('Multi word string'); 결과: 17

SELECT LENGTH('한글 테스트'); 결과: 6

SELECT LENGTH(''); 결과: 0&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;REPLACE - 문자열 치환 및 삭제&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;REPLACE(대상, 찾을 문자열, 바꿀 문자열)&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1731485066053&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;SELECT REPLACE('SQLD', 'L', 'Q'); 결과: 'SQQD'

SELECT REPLACE('Hello World', 'World', 'SQLD'); 결과: 'Hello SQLD'

SELECT REPLACE('Database', 'Data', 'Meta'); 결과: 'Metabase'

SELECT REPLACE('Management', 'Manage', 'Govern'); 결과: 'Governent'

SELECT REPLACE('Information', 'Info', 'Data'); 결과: 'Datamation'

SELECT REPLACE('System', 'Sys', 'Net'); 결과: 'Nettem'

SELECT REPLACE('Developer', 'Devel', 'Code'); 결과: 'Coder'

SELECT REPLACE('Analysis', 'Anal', 'Test'); 결과: 'Testsis'

SELECT REPLACE('Welcome', 'Wel', 'Hel'); 결과: 'Helcome'

SELECT REPLACE('Substring', 'Sub', 'Main'); 결과: 'Mainstring'&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;TRANSLATE - 글자를 1대1로 치환&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;TRANSLATE(대상, 찾을 문자열, 바꿀 문자열)&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1731485135017&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;SELECT TRANSLATE('SQLD', 'SQL', 'XYZ'); 결과: 'XYZD'

SELECT TRANSLATE('HELLO WORLD', 'HELLO', '12345'); 결과: '12345 W1RD'

SELECT TRANSLATE('DATABASE MANAGEMENT', 'DATA', 'INFO'); 결과: 'INFABASE MNINFOEMENT'

SELECT TRANSLATE('ABCDEFGHIJ', 'ABCD', '1234'); 결과: '1234EFGHIJ'

SELECT TRANSLATE('SQL IS FUN', 'SQL', '123'); 결과: '123 IS FUN'

SELECT TRANSLATE('PROGRAMMING', 'PRO', 'XYZ'); 결과: 'XYZGRAMMING'

SELECT TRANSLATE('WELCOME TO SQLD', 'WELCOME', 'HELLOOO'); 결과: 'HELLOOO TO SQLD'

SELECT TRANSLATE('FUNCTIONS', 'FUNCTION', '1234567'); 결과: '1234567S'

SELECT TRANSLATE('REPLACE TEXT', 'REPLACE', '1234567'); 결과: '1234567 TEXT'

SELECT TRANSLATE('ABCDEFGHI', 'ACE', 'XYZ'); 결과:&lt;/code&gt;&lt;/pre&gt;</description>
      <category>SQLD</category>
      <category>sql</category>
      <category>sql 문자 함수</category>
      <category>SQLD</category>
      <category>결합</category>
      <category>단일행 함수</category>
      <category>문자 함수 모음</category>
      <category>문자함수</category>
      <category>문자함수 예제</category>
      <category>삭제</category>
      <category>오블완</category>
      <category>추출</category>
      <category>티스토리챌린지</category>
      <author>gxxg</author>
      <guid isPermaLink="true">https://zero-talk.tistory.com/149</guid>
      <comments>https://zero-talk.tistory.com/149#entry149comment</comments>
      <pubDate>Wed, 13 Nov 2024 17:08:53 +0900</pubDate>
    </item>
    <item>
      <title>프로그래머스 0단계 편지 (Java 자바)</title>
      <link>https://zero-talk.tistory.com/148</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;프로그래머스 로고.png&quot; data-origin-width=&quot;604&quot; data-origin-height=&quot;128&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bH7YwK/btsKDXca5O6/OkGW4ovVKBNDazBzvWGUD0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bH7YwK/btsKDXca5O6/OkGW4ovVKBNDazBzvWGUD0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bH7YwK/btsKDXca5O6/OkGW4ovVKBNDazBzvWGUD0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbH7YwK%2FbtsKDXca5O6%2FOkGW4ovVKBNDazBzvWGUD0%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;604&quot; height=&quot;128&quot; data-filename=&quot;프로그래머스 로고.png&quot; data-origin-width=&quot;604&quot; data-origin-height=&quot;128&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;&amp;nbsp;&lt;/p&gt;
&lt;figure id=&quot;og_1731069071283&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;프로그래머스&quot; data-og-description=&quot;SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프&quot; data-og-host=&quot;programmers.co.kr&quot; data-og-source-url=&quot;https://school.programmers.co.kr/learn/courses/30/lessons/120898&quot; data-og-url=&quot;https://programmers.co.kr/&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/cFuL8r/hyXsXrSn2V/vegyyvyLHCtzXMpZJDKJFk/img.png?width=1920&amp;amp;height=960&amp;amp;face=0_0_1920_960,https://scrap.kakaocdn.net/dn/brnDTC/hyXwi18FMS/UH1B8wBIA8kJOhwqJO0UV0/img.png?width=1920&amp;amp;height=960&amp;amp;face=0_0_1920_960&quot;&gt;&lt;a href=&quot;https://school.programmers.co.kr/learn/courses/30/lessons/120898&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://school.programmers.co.kr/learn/courses/30/lessons/120898&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/cFuL8r/hyXsXrSn2V/vegyyvyLHCtzXMpZJDKJFk/img.png?width=1920&amp;amp;height=960&amp;amp;face=0_0_1920_960,https://scrap.kakaocdn.net/dn/brnDTC/hyXwi18FMS/UH1B8wBIA8kJOhwqJO0UV0/img.png?width=1920&amp;amp;height=960&amp;amp;face=0_0_1920_960');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;프로그래머스&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;programmers.co.kr&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&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;744&quot; data-origin-height=&quot;777&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/c48Ss0/btsKDUmdwBE/oJsskeMO4uB7bc2aVJ6kS1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/c48Ss0/btsKDUmdwBE/oJsskeMO4uB7bc2aVJ6kS1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/c48Ss0/btsKDUmdwBE/oJsskeMO4uB7bc2aVJ6kS1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fc48Ss0%2FbtsKDUmdwBE%2FoJsskeMO4uB7bc2aVJ6kS1%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;750&quot; height=&quot;783&quot; data-origin-width=&quot;744&quot; data-origin-height=&quot;777&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;&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_1731071545550&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;class Solution {
    public int solution(String message) {
        int answer = 0;
        
        answer = message.length() * 2;
        
        return answer;
    }
}&lt;/code&gt;&lt;/pre&gt;</description>
      <category>오블완</category>
      <category>티스토리챌린지</category>
      <author>gxxg</author>
      <guid isPermaLink="true">https://zero-talk.tistory.com/148</guid>
      <comments>https://zero-talk.tistory.com/148#entry148comment</comments>
      <pubDate>Fri, 8 Nov 2024 22:12:39 +0900</pubDate>
    </item>
    <item>
      <title>프로그래머스 0단계 분수의 덧셈 (Java 자바)</title>
      <link>https://zero-talk.tistory.com/147</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;프로그래머스 로고.png&quot; data-origin-width=&quot;604&quot; data-origin-height=&quot;128&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dGR58t/btsKBK48Hfn/MZIOvwJLXESJKZrUm2eWn1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dGR58t/btsKBK48Hfn/MZIOvwJLXESJKZrUm2eWn1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dGR58t/btsKBK48Hfn/MZIOvwJLXESJKZrUm2eWn1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdGR58t%2FbtsKBK48Hfn%2FMZIOvwJLXESJKZrUm2eWn1%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;604&quot; height=&quot;128&quot; data-filename=&quot;프로그래머스 로고.png&quot; data-origin-width=&quot;604&quot; data-origin-height=&quot;128&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&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;758&quot; data-origin-height=&quot;688&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cMH7uc/btsKAAoMlPA/8AfKmdJLKheKgzcoNkIBck/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cMH7uc/btsKAAoMlPA/8AfKmdJLKheKgzcoNkIBck/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cMH7uc/btsKAAoMlPA/8AfKmdJLKheKgzcoNkIBck/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcMH7uc%2FbtsKAAoMlPA%2F8AfKmdJLKheKgzcoNkIBck%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;750&quot; height=&quot;681&quot; data-origin-width=&quot;758&quot; data-origin-height=&quot;688&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&quot;&gt;풀이&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p 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;조건이 기약분수일 경우 최대공약수를 구하는 것&lt;/b&gt;을 기억할 것. 분모와 분자 중 어떤 게 더 큰 값인지 알 수 없으므로 &amp;amp;&amp;amp; 연산자를 사용하여 max 값을 찾는다. max를 찾으면 최대공약수를 업데이트 하고 약분을 한다. 그 값을 배열에 넣으면 끝. 원래는 맨 위에 있던 int[] answer = { }; 를 아래쪽으로 옮겼다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&quot;&gt;1. 분수의 덧셈을 위해 통분한다. 통분 결과를 저장할 변수 numer, denom을 생성한다.&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1730973172500&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;int numer = numer1 * denom2 + numer2 * denom1;
int denom = denom1 * denom2;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&quot;&gt;2. 최대공약수를 구한다&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1730973269813&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt; for (int i=1; i&amp;lt;=numer &amp;amp;&amp;amp; i&amp;lt;=denom; i++) {
            if (numer%i == 0 &amp;amp;&amp;amp; denom%i == 0 ) {
                max = i; // 최대공약수 업데이트
            }
        }&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&quot;&gt;3. 약분한다.&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1730973296970&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;numer = numer/max;
denom = denom/max;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&quot;&gt;전체 코드&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1730972883656&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;class Solution {
    public int[] solution(int numer1, int denom1, int numer2, int denom2) {
        
        // 1. 분수의 덧셈을 위해 통분
        int numer = numer1 * denom2 + numer2 * denom1;
        int denom = denom1 * denom2;
        
        // 2. 조건이 기약분수 =&amp;gt; 최대공약수로 약분
        // 분모와 분자 중 어떤 게 더 큰 값일지 알 수 없으므로
        int max = 1; // 최대공약수
        
        for (int i=1; i&amp;lt;=numer &amp;amp;&amp;amp; i&amp;lt;=denom; i++) {
            if (numer%i == 0 &amp;amp;&amp;amp; denom%i == 0 ) {
                max = i; // 최대공약수 업데이트
            }
        }
            
        // 3. 최대공약수를 구했으니 약분
        numer = numer/max;
        denom = denom/max;
        
        // 4. 분자와 분모를 순서대로 담은 배열
        int[] answer = {numer, denom};
        
        return answer;
    }
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;color: #dddddd; font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;참고 &lt;/span&gt;&lt;span style=&quot;color: #dddddd; font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;a style=&quot;color: #dddddd;&quot; href=&quot;https://tripleup.tistory.com/50&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://tripleup.tistory.com/50&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;color: #dddddd; font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;a style=&quot;color: #dddddd;&quot; href=&quot;https://nahwasa.tistory.com/entry/%EC%9E%90%EB%B0%94-%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%8A%A4-%EB%B6%84%EC%88%98%EC%9D%98-%EB%8D%A7%EC%85%88-Lv0-Java&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://nahwasa.tistory.com/entry/%EC%9E%90%EB%B0%94-%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%8A%A4-%EB%B6%84%EC%88%98%EC%9D%98-%EB%8D%A7%EC%85%88-Lv0-Java&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;</description>
      <category>  코딩테스트/programmers</category>
      <category>0단계</category>
      <category>java</category>
      <category>Lv0</category>
      <category>programmers</category>
      <category>기약 분수</category>
      <category>분수의 덧셈</category>
      <category>자바</category>
      <category>코딩테스트</category>
      <category>코테</category>
      <category>프로그래머스</category>
      <author>gxxg</author>
      <guid isPermaLink="true">https://zero-talk.tistory.com/147</guid>
      <comments>https://zero-talk.tistory.com/147#entry147comment</comments>
      <pubDate>Thu, 7 Nov 2024 18:57:21 +0900</pubDate>
    </item>
    <item>
      <title>프로그래머스 0단계 양꼬치 (Java 자바)</title>
      <link>https://zero-talk.tistory.com/146</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;프로그래머스 로고.png&quot; data-origin-width=&quot;604&quot; data-origin-height=&quot;128&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/KixLt/btsKADZjke3/Sfwpk4fUHaeAHgUKy4dBV0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/KixLt/btsKADZjke3/Sfwpk4fUHaeAHgUKy4dBV0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/KixLt/btsKADZjke3/Sfwpk4fUHaeAHgUKy4dBV0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FKixLt%2FbtsKADZjke3%2FSfwpk4fUHaeAHgUKy4dBV0%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;604&quot; height=&quot;128&quot; data-filename=&quot;프로그래머스 로고.png&quot; data-origin-width=&quot;604&quot; data-origin-height=&quot;128&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;figure id=&quot;og_1730953938993&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;프로그래머스&quot; data-og-description=&quot;SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프&quot; data-og-host=&quot;programmers.co.kr&quot; data-og-source-url=&quot;https://school.programmers.co.kr/learn/courses/30/lessons/120830&quot; data-og-url=&quot;https://programmers.co.kr/&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/blyhTZ/hyXwi1UUAR/DzeWgCh0ySF67hIT2zvnfk/img.png?width=1920&amp;amp;height=960&amp;amp;face=0_0_1920_960,https://scrap.kakaocdn.net/dn/Qo7Tu/hyXsTpd19y/PrXbKdRV3H6TmR3AjeqGb0/img.png?width=1920&amp;amp;height=960&amp;amp;face=0_0_1920_960&quot;&gt;&lt;a href=&quot;https://school.programmers.co.kr/learn/courses/30/lessons/120830&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://school.programmers.co.kr/learn/courses/30/lessons/120830&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/blyhTZ/hyXwi1UUAR/DzeWgCh0ySF67hIT2zvnfk/img.png?width=1920&amp;amp;height=960&amp;amp;face=0_0_1920_960,https://scrap.kakaocdn.net/dn/Qo7Tu/hyXsTpd19y/PrXbKdRV3H6TmR3AjeqGb0/img.png?width=1920&amp;amp;height=960&amp;amp;face=0_0_1920_960');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;프로그래머스&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;programmers.co.kr&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&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;754&quot; data-origin-height=&quot;674&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/vGWUV/btsKzHahUFT/WXNjGeI698izBsGkOisQ3k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/vGWUV/btsKzHahUFT/WXNjGeI698izBsGkOisQ3k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/vGWUV/btsKzHahUFT/WXNjGeI698izBsGkOisQ3k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FvGWUV%2FbtsKzHahUFT%2FWXNjGeI698izBsGkOisQ3k%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;750&quot; height=&quot;670&quot; data-origin-width=&quot;754&quot; data-origin-height=&quot;674&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;풀이&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&quot;&gt;양꼬치 + 음료수 = 총합이므로 먼저 n * 12000 + k * 2000이다. 여기서 양꼬치를 10인분 먹었을 때 음료수 한 개가 공짜이므로 &lt;b&gt;k에서 양꼬치 n을 10으로 나눴을 때 나머지가 0이 되는 것을 빼야&lt;/b&gt; 한다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p 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;pre id=&quot;code_1730958435573&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;class Solution {
    public int solution(int n, int k) {
        int answer = 0;
        
        if (n == 10) {
        answer = n * 12000 + (k-1) * 2000;    
        }
        
        else
            answer = n * 12000 + k * 2000;
                   
        return answer;
    }
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&quot;&gt;바보인 듯... 양꼬치를 10개 먹었을 경우만 따져서 k-1을 해버렸다..&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&quot;&gt;1. 양꼬치를 n개 먹었을 때&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1730958926746&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;n * 12000&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&quot;&gt;2. 음료수 k개 마셨을 때&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1730958953490&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;k * 2000&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&quot;&gt;3. 양꼬치 10인분을 먹고 음료수 가격이 빠졌을 때&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1730959009057&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;(k-(n/10)) * 2000&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;전체 코드 (정답)&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1730958881371&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;class Solution {
    public int solution(int n, int k) {
        int answer = 0;
        
        answer = n * 12000 + (k-(n/10)) * 2000;
        
        return answer;
    }
}&lt;/code&gt;&lt;/pre&gt;</description>
      <category>  코딩테스트/programmers</category>
      <category>0단계</category>
      <category>if문</category>
      <category>java</category>
      <category>Lv0</category>
      <category>programmers</category>
      <category>양꼬치</category>
      <category>자바</category>
      <category>코딩테스트</category>
      <category>코테</category>
      <category>프로그래머스</category>
      <author>gxxg</author>
      <guid isPermaLink="true">https://zero-talk.tistory.com/146</guid>
      <comments>https://zero-talk.tistory.com/146#entry146comment</comments>
      <pubDate>Thu, 7 Nov 2024 14:58:53 +0900</pubDate>
    </item>
    <item>
      <title>프로그래머스 1단계 약수의 합 (Java 자바)</title>
      <link>https://zero-talk.tistory.com/145</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;프로그래머스 로고.png&quot; data-origin-width=&quot;604&quot; data-origin-height=&quot;128&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cKF1I6/btsKzks2Kjw/MnUTtPnrI45wV2q7wyAoU1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cKF1I6/btsKzks2Kjw/MnUTtPnrI45wV2q7wyAoU1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cKF1I6/btsKzks2Kjw/MnUTtPnrI45wV2q7wyAoU1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcKF1I6%2FbtsKzks2Kjw%2FMnUTtPnrI45wV2q7wyAoU1%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;604&quot; height=&quot;128&quot; data-filename=&quot;프로그래머스 로고.png&quot; data-origin-width=&quot;604&quot; data-origin-height=&quot;128&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;figure id=&quot;og_1730953134405&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;프로그래머스&quot; data-og-description=&quot;SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프&quot; data-og-host=&quot;programmers.co.kr&quot; data-og-source-url=&quot;https://school.programmers.co.kr/learn/courses/30/lessons/12928&quot; data-og-url=&quot;https://programmers.co.kr/&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/byBpBO/hyXs3ekODx/NTivboey0uFxrOWQZuNoxk/img.png?width=1920&amp;amp;height=960&amp;amp;face=0_0_1920_960,https://scrap.kakaocdn.net/dn/nWulV/hyXwrLkcVp/MgJAE9UAkL9frqtySooORK/img.png?width=1920&amp;amp;height=960&amp;amp;face=0_0_1920_960&quot;&gt;&lt;a href=&quot;https://school.programmers.co.kr/learn/courses/30/lessons/12928&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://school.programmers.co.kr/learn/courses/30/lessons/12928&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/byBpBO/hyXs3ekODx/NTivboey0uFxrOWQZuNoxk/img.png?width=1920&amp;amp;height=960&amp;amp;face=0_0_1920_960,https://scrap.kakaocdn.net/dn/nWulV/hyXwrLkcVp/MgJAE9UAkL9frqtySooORK/img.png?width=1920&amp;amp;height=960&amp;amp;face=0_0_1920_960');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;프로그래머스&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;programmers.co.kr&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&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;604&quot; data-origin-height=&quot;510&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b67PnY/btsKAG9rNFg/UdzrsIACp9XHYlEvYEPGUk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b67PnY/btsKAG9rNFg/UdzrsIACp9XHYlEvYEPGUk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b67PnY/btsKAG9rNFg/UdzrsIACp9XHYlEvYEPGUk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb67PnY%2FbtsKAG9rNFg%2FUdzrsIACp9XHYlEvYEPGUk%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;650&quot; height=&quot;549&quot; data-origin-width=&quot;604&quot; data-origin-height=&quot;510&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p 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;풀이&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&quot;&gt;정수 n의 약수를 구하는 방법은 &lt;b&gt;1부터 n까지 어떤 값으로 나눴을 때 나머지가 0이 되면 그 수는 정수 n의 약수&lt;/b&gt;임을 뜻한다. 예를들면 정수 10이 있다고 가정하자. 10을 1, 2, 5, 10으로 나누면 나머지가 0이고 1, 2, 5, 10은 곧 10의 약수라는 의미가 된다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&quot;&gt;1. 정수 n의 약수를 구하는 방법은 1부터 n까지 어떤 값으로 나눴을 때 &lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1730953505261&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;for (int i = 1; i &amp;lt;= n; i++) {   }&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&quot;&gt;2. 나머지가 0이 되면 그 수는 정수 n의 약수 &lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1730953551064&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;if (n % i == 0) {   }&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&quot;&gt;3. 약수의 합&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1730953572986&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;answer += i;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p 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;전체 코드&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1730953114348&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;class Solution {
    public int solution(int n) {
        int answer = 0;
        
        for (int i = 1; i &amp;lt;= n; i++) {
            
            if (n % i == 0) {
                answer += i;
            }
        }
        return answer;
    }
}&lt;/code&gt;&lt;/pre&gt;</description>
      <category>  코딩테스트/programmers</category>
      <category>1단계</category>
      <category>java</category>
      <category>LV1</category>
      <category>programmers</category>
      <category>약수</category>
      <category>약수의합</category>
      <category>오블완</category>
      <category>자바</category>
      <category>코딩테스트</category>
      <category>코테</category>
      <category>티스토리챌린지</category>
      <category>프로그래머스</category>
      <author>gxxg</author>
      <guid isPermaLink="true">https://zero-talk.tistory.com/145</guid>
      <comments>https://zero-talk.tistory.com/145#entry145comment</comments>
      <pubDate>Thu, 7 Nov 2024 13:29:53 +0900</pubDate>
    </item>
    <item>
      <title>프로그래머스 0단계 각도기 (Java 자바)</title>
      <link>https://zero-talk.tistory.com/144</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;프로그래머스 로고.png&quot; data-origin-width=&quot;604&quot; data-origin-height=&quot;128&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/kRuqI/btsKyjhf5Pj/LVY9sbbXKg4yCgQtQFc2dk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/kRuqI/btsKyjhf5Pj/LVY9sbbXKg4yCgQtQFc2dk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/kRuqI/btsKyjhf5Pj/LVY9sbbXKg4yCgQtQFc2dk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FkRuqI%2FbtsKyjhf5Pj%2FLVY9sbbXKg4yCgQtQFc2dk%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;604&quot; height=&quot;128&quot; data-filename=&quot;프로그래머스 로고.png&quot; data-origin-width=&quot;604&quot; data-origin-height=&quot;128&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;figure id=&quot;og_1730895878630&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;프로그래머스&quot; data-og-description=&quot;SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프&quot; data-og-host=&quot;programmers.co.kr&quot; data-og-source-url=&quot;https://school.programmers.co.kr/learn/courses/30/lessons/120829?language=java&quot; data-og-url=&quot;https://programmers.co.kr/&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/pZTRy/hyXsTJquW0/h74K1OgiJkKrBo6yLgi4WK/img.png?width=1920&amp;amp;height=960&amp;amp;face=0_0_1920_960,https://scrap.kakaocdn.net/dn/HlQFg/hyXs4c4583/pd29kIVoNurKS1P12BuKg0/img.png?width=1920&amp;amp;height=960&amp;amp;face=0_0_1920_960&quot;&gt;&lt;a href=&quot;https://school.programmers.co.kr/learn/courses/30/lessons/120829?language=java&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://school.programmers.co.kr/learn/courses/30/lessons/120829?language=java&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/pZTRy/hyXsTJquW0/h74K1OgiJkKrBo6yLgi4WK/img.png?width=1920&amp;amp;height=960&amp;amp;face=0_0_1920_960,https://scrap.kakaocdn.net/dn/HlQFg/hyXs4c4583/pd29kIVoNurKS1P12BuKg0/img.png?width=1920&amp;amp;height=960&amp;amp;face=0_0_1920_960');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;프로그래머스&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;programmers.co.kr&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&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;751&quot; data-origin-height=&quot;757&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/z4on5/btsKzo9tgqn/bBi7bArQhzbKgWz1GZs9lk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/z4on5/btsKzo9tgqn/bBi7bArQhzbKgWz1GZs9lk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/z4on5/btsKzo9tgqn/bBi7bArQhzbKgWz1GZs9lk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fz4on5%2FbtsKzo9tgqn%2FbBi7bArQhzbKgWz1GZs9lk%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;750&quot; height=&quot;756&quot; data-origin-width=&quot;751&quot; data-origin-height=&quot;757&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&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;풀이&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&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;if문을 사용할 수 있느냐&lt;/b&gt;의 문제이다. 정확히는 if, else if, else문을.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&quot;&gt;1. 예각일 때&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1730896344444&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;if (0&amp;lt;angle &amp;amp;&amp;amp; angle&amp;lt;90) {
            answer = 1;
   }&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&quot;&gt;2. 직각일 때&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1730896384785&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;else if (angle == 90) {
            answer = 2;
        }&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&quot;&gt;4. 둔각일 때&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1730896404608&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;else if (90&amp;lt;angle &amp;amp;&amp;amp; angle &amp;lt;180) {
            answer = 3;
        }&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&quot;&gt;5. 평각일 때&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1730896439161&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;else {
          answer = 4;
     }&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&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;전체 코드&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1730896492545&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;class Solution {
    public int solution(int angle) {
        int answer = 0;
        
        if (0&amp;lt;angle &amp;amp;&amp;amp; angle&amp;lt;90) {
            answer = 1;
        }
        
        else if (angle == 90) {
            answer = 2;
        }
        
        else if (90&amp;lt;angle &amp;amp;&amp;amp; angle &amp;lt;180) {
            answer = 3;
        }
        
        else {
            answer = 4;
        }
        
        return answer;
    }
}&lt;/code&gt;&lt;/pre&gt;</description>
      <category>  코딩테스트/programmers</category>
      <category>0단계</category>
      <category>else if문</category>
      <category>if문</category>
      <category>java</category>
      <category>Lv0</category>
      <category>programmers</category>
      <category>자바</category>
      <category>코딩테스트</category>
      <category>코테</category>
      <category>프로그래머스</category>
      <author>gxxg</author>
      <guid isPermaLink="true">https://zero-talk.tistory.com/144</guid>
      <comments>https://zero-talk.tistory.com/144#entry144comment</comments>
      <pubDate>Wed, 6 Nov 2024 21:37:09 +0900</pubDate>
    </item>
    <item>
      <title>프로그래머스 0단계 두 수의 나눗셈 (Java 자바)</title>
      <link>https://zero-talk.tistory.com/143</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;프로그래머스 로고.png&quot; data-origin-width=&quot;604&quot; data-origin-height=&quot;128&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/1Jlq0/btsKdZoYnHK/EXeXwbr6YMkK3nQAuzeAtK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/1Jlq0/btsKdZoYnHK/EXeXwbr6YMkK3nQAuzeAtK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/1Jlq0/btsKdZoYnHK/EXeXwbr6YMkK3nQAuzeAtK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F1Jlq0%2FbtsKdZoYnHK%2FEXeXwbr6YMkK3nQAuzeAtK%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;604&quot; height=&quot;128&quot; data-filename=&quot;프로그래머스 로고.png&quot; data-origin-width=&quot;604&quot; data-origin-height=&quot;128&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;figure id=&quot;og_1729498265230&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;프로그래머스&quot; data-og-description=&quot;코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.&quot; data-og-host=&quot;programmers.co.kr&quot; data-og-source-url=&quot;https://school.programmers.co.kr/learn/courses/30/lessons/120806&quot; data-og-url=&quot;https://programmers.co.kr/&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/dZYqpA/hyXlTV6NlG/GcW8IgHXStP5S9fTopRpOk/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630,https://scrap.kakaocdn.net/dn/c7mD9E/hyXlRYhSnP/poSHKwntitOynoQAnFQS50/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630&quot;&gt;&lt;a href=&quot;https://school.programmers.co.kr/learn/courses/30/lessons/120806&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://school.programmers.co.kr/learn/courses/30/lessons/120806&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/dZYqpA/hyXlTV6NlG/GcW8IgHXStP5S9fTopRpOk/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630,https://scrap.kakaocdn.net/dn/c7mD9E/hyXlRYhSnP/poSHKwntitOynoQAnFQS50/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;프로그래머스&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;programmers.co.kr&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&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;937&quot; data-origin-height=&quot;1023&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bJP03B/btsKdvBWrCr/hHHZIuaRN4nC24mH3ypfm0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bJP03B/btsKdvBWrCr/hHHZIuaRN4nC24mH3ypfm0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bJP03B/btsKdvBWrCr/hHHZIuaRN4nC24mH3ypfm0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbJP03B%2FbtsKdvBWrCr%2FhHHZIuaRN4nC24mH3ypfm0%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;750&quot; height=&quot;819&quot; data-origin-width=&quot;937&quot; data-origin-height=&quot;1023&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&quot;&gt;풀이&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p 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;형변환&lt;/b&gt;과 관련된 문제이다. answer가 int일 때 어떤 값이어도 &lt;b&gt;정수 부분만 return하기 때문에&lt;/b&gt; 소수 부분도 return할 수 있도록 &lt;b&gt;형변환&lt;/b&gt;을 해주어야 한다. 나의 경우 강제 형변환을 사용했다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&quot;&gt;1. 처음에 int로 선언된 answer를 double로 바꿨다.&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1729499065363&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;double answer = 0 ;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&quot;&gt;2. &lt;b&gt;강제형변환&lt;/b&gt;을 통해 num1을 num2로 나눈 값에 1000을 곱했다. (문제 내용)&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1729499117277&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;(double) num1 / num2 * 1000 ;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&quot;&gt;3. 소수 자리까지 출력할 텐데, 이때 최종 결과물은 정수만 나와야 하므로 다시 한 번 강제 형변환을 통해 answer를 int로 바꾼다.&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1729499163680&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;(int) answer&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&quot;&gt;전체 코드&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1729499207727&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;class Solution {
    public int solution(int num1, int num2) {
        
        double answer = 0 ;
        
        answer = (double) num1 / num2 * 1000 ;        
        
        return (int) answer;
    }
}&lt;/code&gt;&lt;/pre&gt;</description>
      <category>  코딩테스트/programmers</category>
      <category>0단계</category>
      <category>java</category>
      <category>Lv0</category>
      <category>programmers</category>
      <category>두 수의 나눗셈</category>
      <category>자바</category>
      <category>코딩테스트</category>
      <category>코테</category>
      <category>프로그래머스</category>
      <category>형변환</category>
      <author>gxxg</author>
      <guid isPermaLink="true">https://zero-talk.tistory.com/143</guid>
      <comments>https://zero-talk.tistory.com/143#entry143comment</comments>
      <pubDate>Mon, 21 Oct 2024 17:49:41 +0900</pubDate>
    </item>
    <item>
      <title>깃허브(gitHub) 백준, 프로그래머스 연동하기 (자동 커밋)</title>
      <link>https://zero-talk.tistory.com/142</link>
      <description>&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;프로그래머스 로고.png&quot; data-origin-width=&quot;604&quot; data-origin-height=&quot;128&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bVnGud/btsJ58UMDpM/LdhnkvczfYNUxYKkbghmE1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bVnGud/btsJ58UMDpM/LdhnkvczfYNUxYKkbghmE1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bVnGud/btsJ58UMDpM/LdhnkvczfYNUxYKkbghmE1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbVnGud%2FbtsJ58UMDpM%2FLdhnkvczfYNUxYKkbghmE1%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;604&quot; height=&quot;128&quot; data-filename=&quot;프로그래머스 로고.png&quot; data-origin-width=&quot;604&quot; data-origin-height=&quot;128&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&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 style=&quot;background-color: #fffa00;&quot;&gt;&lt;b&gt;백준 및 프로그래머스&lt;/b&gt; 문제를 풀면 &lt;b&gt;자동으로 깃허브에 커밋&lt;/b&gt;&lt;/span&gt;(commit)되는 법을 알아보겠습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000; text-align: center;&quot;&gt;   &lt;b&gt;크롬 확장 프로그램 &amp;gt; 백준 허브 설치&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;figure id=&quot;og_1729045642132&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;백준허브(BaekjoonHub) - Chrome 웹 스토어&quot; data-og-description=&quot;Automatically integrate your BOJ submissions to GitHub&quot; data-og-host=&quot;chromewebstore.google.com&quot; data-og-source-url=&quot;https://chromewebstore.google.com/detail/%EB%B0%B1%EC%A4%80%ED%97%88%EB%B8%8Cbaekjoonhub/ccammcjdkpgjmcpijpahlehmapgmphmk?hl=ko&quot; data-og-url=&quot;https://chromewebstore.google.com/detail/백준허브baekjoonhub/ccammcjdkpgjmcpijpahlehmapgmphmk&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/hsu9S/hyXhOHZvze/K8JsAgJwqRUQJI3klJsRLk/img.jpg?width=128&amp;amp;height=128&amp;amp;face=0_0_128_128&quot;&gt;&lt;a href=&quot;https://chromewebstore.google.com/detail/%EB%B0%B1%EC%A4%80%ED%97%88%EB%B8%8Cbaekjoonhub/ccammcjdkpgjmcpijpahlehmapgmphmk?hl=ko&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://chromewebstore.google.com/detail/%EB%B0%B1%EC%A4%80%ED%97%88%EB%B8%8Cbaekjoonhub/ccammcjdkpgjmcpijpahlehmapgmphmk?hl=ko&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/hsu9S/hyXhOHZvze/K8JsAgJwqRUQJI3klJsRLk/img.jpg?width=128&amp;amp;height=128&amp;amp;face=0_0_128_128');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;백준허브(BaekjoonHub) - Chrome 웹 스토어&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;Automatically integrate your BOJ submissions to GitHub&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;chromewebstore.google.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000; text-align: center;&quot;&gt;위 사이트에 들어가서 &lt;b&gt;백준 허브를 추가&lt;/b&gt;합니다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&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;1654&quot; data-origin-height=&quot;255&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/UeuQB/btsJ5Dm8rR7/MsYca8Qi5UnUSu4NWXMbL1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/UeuQB/btsJ5Dm8rR7/MsYca8Qi5UnUSu4NWXMbL1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/UeuQB/btsJ5Dm8rR7/MsYca8Qi5UnUSu4NWXMbL1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FUeuQB%2FbtsJ5Dm8rR7%2FMsYca8Qi5UnUSu4NWXMbL1%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;1654&quot; height=&quot;255&quot; data-origin-width=&quot;1654&quot; data-origin-height=&quot;255&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000; text-align: center;&quot;&gt;   &lt;b&gt;백준 허브 시작하기&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000; text-align: center;&quot;&gt; &lt;span style=&quot;color: #333333; text-align: center;&quot;&gt;✔️&lt;/span&gt; 우측 상단에 퍼즐 모양 같은 걸 클릭&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&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;437&quot; data-origin-height=&quot;129&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bCZk2x/btsJ6U9qpgt/m6ozI6dxKyk91ykzDzTKUK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bCZk2x/btsJ6U9qpgt/m6ozI6dxKyk91ykzDzTKUK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bCZk2x/btsJ6U9qpgt/m6ozI6dxKyk91ykzDzTKUK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbCZk2x%2FbtsJ6U9qpgt%2Fm6ozI6dxKyk91ykzDzTKUK%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;300&quot; height=&quot;89&quot; data-origin-width=&quot;437&quot; data-origin-height=&quot;129&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000; text-align: center;&quot;&gt;&lt;b&gt; &lt;span style=&quot;color: #333333; text-align: center;&quot;&gt;✔️&lt;/span&gt; 확장 프로그램 목록&lt;/b&gt;이 뜨는데 백준 고정&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&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;438&quot; data-origin-height=&quot;56&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b8p8n4/btsJ5CoboUQ/PCIu9jtxWitw7kS8buuBa1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b8p8n4/btsJ5CoboUQ/PCIu9jtxWitw7kS8buuBa1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b8p8n4/btsJ5CoboUQ/PCIu9jtxWitw7kS8buuBa1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb8p8n4%2FbtsJ5CoboUQ%2FPCIu9jtxWitw7kS8buuBa1%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;438&quot; height=&quot;56&quot; data-origin-width=&quot;438&quot; data-origin-height=&quot;56&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&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 style=&quot;color: #333333; text-align: center;&quot;&gt;✔️&lt;/span&gt; 아래와 같이 백준 허브가 고정됨&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&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;111&quot; data-origin-height=&quot;48&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/MLXY7/btsJ8p74UKV/shfTmkc2l9zEdQFlNfKKGk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/MLXY7/btsJ8p74UKV/shfTmkc2l9zEdQFlNfKKGk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/MLXY7/btsJ8p74UKV/shfTmkc2l9zEdQFlNfKKGk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FMLXY7%2FbtsJ8p74UKV%2FshfTmkc2l9zEdQFlNfKKGk%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;111&quot; height=&quot;48&quot; data-origin-width=&quot;111&quot; data-origin-height=&quot;48&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&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 style=&quot;color: #333333; text-align: center;&quot;&gt;✔️&lt;/span&gt; 클릭하면 창이 뜨는데, &lt;span style=&quot;background-color: #fffa00;&quot;&gt;&lt;b&gt;Authenticcate 버튼을 눌러 자신의 깃허브와 연동&lt;/b&gt;&lt;/span&gt;해준다&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&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;591&quot; data-origin-height=&quot;545&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/d3aBFn/btsJ6q1MUpP/NS2cC4CLunFr4iuD2WNGyK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/d3aBFn/btsJ6q1MUpP/NS2cC4CLunFr4iuD2WNGyK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/d3aBFn/btsJ6q1MUpP/NS2cC4CLunFr4iuD2WNGyK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fd3aBFn%2FbtsJ6q1MUpP%2FNS2cC4CLunFr4iuD2WNGyK%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;400&quot; height=&quot;369&quot; data-origin-width=&quot;591&quot; data-origin-height=&quot;545&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&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 style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #333333; text-align: center;&quot;&gt;✔️&lt;/span&gt; 아래와 같은 화면이 뜨는 것을 확인할 수 있습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&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;1751&quot; data-origin-height=&quot;1098&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/o4SyN/btsJ7sLdm15/wWymunqv93OkkWk2NvnOF0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/o4SyN/btsJ7sLdm15/wWymunqv93OkkWk2NvnOF0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/o4SyN/btsJ7sLdm15/wWymunqv93OkkWk2NvnOF0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fo4SyN%2FbtsJ7sLdm15%2FwWymunqv93OkkWk2NvnOF0%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;314&quot; data-origin-width=&quot;1751&quot; data-origin-height=&quot;1098&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&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;p style=&quot;text-align: center;&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;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&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;1003&quot; data-origin-height=&quot;220&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ceZzgb/btsJ57VThE7/xgkYtPLRSItinNNPb7Dbd1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ceZzgb/btsJ57VThE7/xgkYtPLRSItinNNPb7Dbd1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ceZzgb/btsJ57VThE7/xgkYtPLRSItinNNPb7Dbd1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FceZzgb%2FbtsJ57VThE7%2FxgkYtPLRSItinNNPb7Dbd1%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;110&quot; data-origin-width=&quot;1003&quot; data-origin-height=&quot;220&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&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;새로운 레포지토리를 생성&lt;/b&gt;하고 이름은 &lt;b&gt;programmers&lt;/b&gt;로 하겠습니다. (사진 참고)&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&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;1653&quot; data-origin-height=&quot;305&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/mOjAt/btsJ8tJp07j/L4KGe9X2cLUi6lmCcMxhh0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/mOjAt/btsJ8tJp07j/L4KGe9X2cLUi6lmCcMxhh0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/mOjAt/btsJ8tJp07j/L4KGe9X2cLUi6lmCcMxhh0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FmOjAt%2FbtsJ8tJp07j%2FL4KGe9X2cLUi6lmCcMxhh0%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;92&quot; data-origin-width=&quot;1653&quot; data-origin-height=&quot;305&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&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;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&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;557&quot; data-origin-height=&quot;119&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/K37Vo/btsJ5zLPPA6/G8o5NuJRXZrdnuTVk33FFk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/K37Vo/btsJ5zLPPA6/G8o5NuJRXZrdnuTVk33FFk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/K37Vo/btsJ5zLPPA6/G8o5NuJRXZrdnuTVk33FFk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FK37Vo%2FbtsJ5zLPPA6%2FG8o5NuJRXZrdnuTVk33FFk%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;107&quot; data-origin-width=&quot;557&quot; data-origin-height=&quot;119&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&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;레포지토리가 생성&lt;/b&gt;되었습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&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;1365&quot; data-origin-height=&quot;210&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/byHuVN/btsJ7700ffV/4GCb39cVVxa0dcMtwhxkc1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/byHuVN/btsJ7700ffV/4GCb39cVVxa0dcMtwhxkc1/img.png&quot; data-alt=&quot;\&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/byHuVN/btsJ7700ffV/4GCb39cVVxa0dcMtwhxkc1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbyHuVN%2FbtsJ7700ffV%2F4GCb39cVVxa0dcMtwhxkc1%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;1365&quot; height=&quot;210&quot; data-origin-width=&quot;1365&quot; data-origin-height=&quot;210&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;\&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&quot;&gt;테스트를 위해 프로그래머스 0단계 &lt;b&gt;문제를 풀고 제출&lt;/b&gt;했더니&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&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;자동으로 커밋&lt;/b&gt;되는 것을 확인하실 수 있습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&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;1361&quot; data-origin-height=&quot;555&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bBziE1/btsJ6HCnkGh/ZDJogQUyVTjQqeIF6cRtA1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bBziE1/btsJ6HCnkGh/ZDJogQUyVTjQqeIF6cRtA1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bBziE1/btsJ6HCnkGh/ZDJogQUyVTjQqeIF6cRtA1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbBziE1%2FbtsJ6HCnkGh%2FZDJogQUyVTjQqeIF6cRtA1%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;700&quot; height=&quot;285&quot; data-origin-width=&quot;1361&quot; data-origin-height=&quot;555&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&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;&lt;span style=&quot;background-color: #fffa00;&quot;&gt;분류해주는 건 물론, 레벨별로 정리&lt;/span&gt;&lt;/b&gt;해줍니다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&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;</description>
      <category>Etc</category>
      <category>Baekjoon</category>
      <category>github</category>
      <category>programmers</category>
      <category>깃허브</category>
      <category>백준</category>
      <category>백준깃허브연동</category>
      <category>코딩테스트</category>
      <category>프로그래머스</category>
      <category>프로그래머스깃허브연동</category>
      <author>gxxg</author>
      <guid isPermaLink="true">https://zero-talk.tistory.com/142</guid>
      <comments>https://zero-talk.tistory.com/142#entry142comment</comments>
      <pubDate>Wed, 16 Oct 2024 11:58:23 +0900</pubDate>
    </item>
    <item>
      <title>[SpringBoot] 네이버 번역 API 사용하기 (파파고)</title>
      <link>https://zero-talk.tistory.com/141</link>
      <description>&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&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;Spring logo.png&quot; data-origin-width=&quot;441&quot; data-origin-height=&quot;114&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bfGqMO/btsBj6i6oIE/LGmUKbbbJewH842p8AVcK1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bfGqMO/btsBj6i6oIE/LGmUKbbbJewH842p8AVcK1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bfGqMO/btsBj6i6oIE/LGmUKbbbJewH842p8AVcK1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbfGqMO%2FbtsBj6i6oIE%2FLGmUKbbbJewH842p8AVcK1%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;441&quot; height=&quot;114&quot; data-filename=&quot;Spring logo.png&quot; data-origin-width=&quot;441&quot; data-origin-height=&quot;114&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;오늘은 네이버 번역 API인 파파고를 사용해보겠습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;개발환경은 &lt;span style=&quot;background-color: #fffa00;&quot;&gt;&lt;b&gt;IntelliJ IDEA 2023.2.4 / Java 11 / SpringBoot 2.7.17 / React / Gradle / Oracle 11g&lt;/b&gt;&lt;/span&gt; 입니다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;기본적인 세팅이 되어있다는 가정 하에 API 사용하는 부분만 보여드리겠습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;  &lt;b&gt;API KEY 발급받기&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;figure id=&quot;og_1701655518544&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;NAVER Developers&quot; data-og-description=&quot;네이버 오픈 API들을 활용해 개발자들이 다양한 애플리케이션을 개발할 수 있도록 API 가이드와 SDK를 제공합니다. 제공중인 오픈 API에는 네이버 로그인, 검색, 단축URL, 캡차를 비롯 기계번역, 음&quot; data-og-host=&quot;developers.naver.com&quot; data-og-source-url=&quot;https://developers.naver.com/main/&quot; data-og-url=&quot;https://developers.naver.com/main&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/vAYaj/hyUE5lK9zg/FtP0sB3PunZNqsoLhCYlg0/img.jpg?width=940&amp;amp;height=492&amp;amp;face=0_0_940_492,https://scrap.kakaocdn.net/dn/bbVARu/hyUEZTnJQ4/7zh2tgkKQGTzwOnEwugS5k/img.jpg?width=940&amp;amp;height=492&amp;amp;face=0_0_940_492&quot;&gt;&lt;a href=&quot;https://developers.naver.com/main/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://developers.naver.com/main/&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/vAYaj/hyUE5lK9zg/FtP0sB3PunZNqsoLhCYlg0/img.jpg?width=940&amp;amp;height=492&amp;amp;face=0_0_940_492,https://scrap.kakaocdn.net/dn/bbVARu/hyUEZTnJQ4/7zh2tgkKQGTzwOnEwugS5k/img.jpg?width=940&amp;amp;height=492&amp;amp;face=0_0_940_492');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;NAVER Developers&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;네이버 오픈 API들을 활용해 개발자들이 다양한 애플리케이션을 개발할 수 있도록 API 가이드와 SDK를 제공합니다. 제공중인 오픈 API에는 네이버 로그인, 검색, 단축URL, 캡차를 비롯 기계번역, 음&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;developers.naver.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;위 사이트에 들어가서 로그인 후 사용할 API 키를 발급 받습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;✔️ Application &amp;gt; 내 애플리케이션&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;1624&quot; data-origin-height=&quot;191&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bmdfV0/btsBjBp7c2Y/YGt3MeGsrWOjHWCe2LZj1K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bmdfV0/btsBjBp7c2Y/YGt3MeGsrWOjHWCe2LZj1K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bmdfV0/btsBjBp7c2Y/YGt3MeGsrWOjHWCe2LZj1K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbmdfV0%2FbtsBjBp7c2Y%2FYGt3MeGsrWOjHWCe2LZj1K%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;1624&quot; height=&quot;191&quot; data-origin-width=&quot;1624&quot; data-origin-height=&quot;191&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;✔️ 애플리케이션 등록&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;1998&quot; data-origin-height=&quot;1124&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/rDwXL/btsBlaZRV3H/SHxLBLvYBazs3wLoPCue81/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/rDwXL/btsBlaZRV3H/SHxLBLvYBazs3wLoPCue81/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/rDwXL/btsBlaZRV3H/SHxLBLvYBazs3wLoPCue81/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FrDwXL%2FbtsBlaZRV3H%2FSHxLBLvYBazs3wLoPCue81%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;1998&quot; height=&quot;1124&quot; data-origin-width=&quot;1998&quot; data-origin-height=&quot;1124&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;✔️ 이름, 사용할 API, URL 설정 &amp;gt; 등록하기&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;1605&quot; data-origin-height=&quot;1127&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/c7Hewj/btsBqhRyMFe/DGynKhWuOUJEsTbnVHtjXk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/c7Hewj/btsBqhRyMFe/DGynKhWuOUJEsTbnVHtjXk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/c7Hewj/btsBqhRyMFe/DGynKhWuOUJEsTbnVHtjXk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fc7Hewj%2FbtsBqhRyMFe%2FDGynKhWuOUJEsTbnVHtjXk%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;1605&quot; height=&quot;1127&quot; data-origin-width=&quot;1605&quot; data-origin-height=&quot;1127&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;✔️ 내 어플리케이션에서 발급받은 키 확인 가능&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;1606&quot; data-origin-height=&quot;1099&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/duvxDd/btsBlcpQW2X/b9j7B9P6iuzUuvSim3a5p0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/duvxDd/btsBlcpQW2X/b9j7B9P6iuzUuvSim3a5p0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/duvxDd/btsBlcpQW2X/b9j7B9P6iuzUuvSim3a5p0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FduvxDd%2FbtsBlcpQW2X%2Fb9j7B9P6iuzUuvSim3a5p0%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;1606&quot; height=&quot;1099&quot; data-origin-width=&quot;1606&quot; data-origin-height=&quot;1099&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;  &lt;b&gt;컨트롤러, 서비스 클래스 코드&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;저는 포스트맨으로 테스트를 할 거라 프론트 코드는 작성하지 않겠습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;✔️ 파파고 컨트롤러 생성&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;211&quot; data-origin-height=&quot;191&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cT09pK/btsBh3H1cgZ/k6eAh4OcBhgcT1qLazKBH1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cT09pK/btsBh3H1cgZ/k6eAh4OcBhgcT1qLazKBH1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cT09pK/btsBh3H1cgZ/k6eAh4OcBhgcT1qLazKBH1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcT09pK%2FbtsBh3H1cgZ%2Fk6eAh4OcBhgcT1qLazKBH1%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;211&quot; height=&quot;191&quot; data-origin-width=&quot;211&quot; data-origin-height=&quot;191&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;프론트에서 매개변수로 search라는 텍스트를 받을 겁니다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;search는 파파고로 번역할 텍스트입니다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;예를들어 프론트에서 넘긴 search 값이 &quot;사과&quot;이면 사과라는 단어를 번역하는 거죠.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;  Controller&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1701692378366&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;@CrossOrigin(origins = &quot;httpL//localhost:3000&quot;)
@RestController
@RequestMapping(&quot;/api&quot;)
public class PapagoController {

    public Logger logger = LoggerFactory.getLogger(NaverPapagoService.class);

    @Autowired
    NaverPapagoService naverPapagoService;

    @PostMapping(&quot;/papago&quot;)
    public String papagoAPI(@RequestBody String search) {

        logger.info(&quot;***** *****&quot;);
        logger.info(&quot;papago 사용 전 text: {}&quot;, search);

        naverPapagoService.getTransSentence(search);
        logger.info(&quot;***** *****&quot;);
        logger.info(&quot;papago 사용 후 response: {}&quot;, naverPapagoService.getTransSentence(search));

        return naverPapagoService.getTransSentence(search);
    }
}&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;✔️ 파파고 서비스 생성&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;213&quot; data-origin-height=&quot;286&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/MOuSF/btsBlaGyJ2u/Icqya6sZaP1n07Sx9SY7Yk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/MOuSF/btsBlaGyJ2u/Icqya6sZaP1n07Sx9SY7Yk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/MOuSF/btsBlaGyJ2u/Icqya6sZaP1n07Sx9SY7Yk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FMOuSF%2FbtsBlaGyJ2u%2FIcqya6sZaP1n07Sx9SY7Yk%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;213&quot; height=&quot;286&quot; data-origin-width=&quot;213&quot; data-origin-height=&quot;286&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;  Service&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;서비스는 컨트롤러와 마찬가지로 한 개의 매개변수를 받습니다. (String search)&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;인코딩된 검색 텍스트를 저장하는 변수, 네이버 API ID, PW, API 엔드포인트를 선업합니다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;이 부분은 API 공식 문서에서 확인할 수 있습니다.&lt;/span&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1701742761051&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;Papago 번역 API 레퍼런스 - Papago API&quot; data-og-description=&quot;Papago 번역 API 레퍼런스 인공 신경망 기반 기계 번역 설명 인공 신경망 기반의 기계 번역(NMT, Neural Machine Translation) 결과를 반환합니다. 요청 URL https://openapi.naver.com/v1/papago/n2mt 프로토콜 HTTPS HTTP 메&quot; data-og-host=&quot;developers.naver.com&quot; data-og-source-url=&quot;https://developers.naver.com/docs/papago/papago-nmt-api-reference.md&quot; data-og-url=&quot;https://developers.naver.com/docs/papago/papago-nmt-api-reference.md&quot; data-og-image=&quot;&quot;&gt;&lt;a href=&quot;https://developers.naver.com/docs/papago/papago-nmt-api-reference.md&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://developers.naver.com/docs/papago/papago-nmt-api-reference.md&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url();&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;Papago 번역 API 레퍼런스 - Papago API&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;Papago 번역 API 레퍼런스 인공 신경망 기반 기계 번역 설명 인공 신경망 기반의 기계 번역(NMT, Neural Machine Translation) 결과를 반환합니다. 요청 URL https://openapi.naver.com/v1/papago/n2mt 프로토콜 HTTPS HTTP 메&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;developers.naver.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1205&quot; data-origin-height=&quot;257&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cpbhOh/btsBkjXPmBp/wEjUWDQavZ4HUKt0gRfqHk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cpbhOh/btsBkjXPmBp/wEjUWDQavZ4HUKt0gRfqHk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cpbhOh/btsBkjXPmBp/wEjUWDQavZ4HUKt0gRfqHk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcpbhOh%2FbtsBkjXPmBp%2FwEjUWDQavZ4HUKt0gRfqHk%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;1205&quot; height=&quot;257&quot; data-origin-width=&quot;1205&quot; data-origin-height=&quot;257&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;pre id=&quot;code_1701742266582&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;    String textContent;
    String clientId = &quot;&quot;;
    String clientSecret = &quot;&quot;;

    String apiURL = &quot;https://openapi.naver.com/v1/papago/n2mt&quot;;&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1701743379922&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;public String getTransSentence(String search) {

        String textContent;
        String clientId = &quot;&quot;;
        String clientSecret = &quot;&quot;;

        String apiURL = &quot;https://openapi.naver.com/v1/papago/n2mt&quot;;

        try {
            textContent = URLEncoder.encode(search, &quot;UTF-8&quot;);
        } catch (UnsupportedEncodingException e) {
            throw new RuntimeException(&quot;papago API 인코딩 에러&quot; + e);
        }

        Map&amp;lt;String, String&amp;gt; requestHeader = new HashMap&amp;lt;&amp;gt;();
        requestHeader.put(&quot;X-Naver-Client-Id&quot;, clientId);
        requestHeader.put(&quot;X-Naver-Client-Secret&quot;, clientSecret);

        String resonseBody = post(apiURL, requestHeader, textContent);

        logger.info(&quot;responseBody = {}&quot;, resonseBody);

        return convertToData(resonseBody);
    }&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt; 저는 쌍따옴표(&quot;)를 제외하고 DB에 저장할 거라 replace를 사용해 따옴표를 제거했습니다. &lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1701743415083&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;private String convertToData(String responseBody) {
        try {
            ObjectMapper objectMapper = new ObjectMapper();
            JsonNode jsonNode = objectMapper.readTree(responseBody);

            JsonNode resultNode = jsonNode.get(&quot;message&quot;).get(&quot;result&quot;);
            String translatedText = resultNode.get(&quot;translatedText&quot;).asText();

            translatedText = translatedText.replace(&quot;\&quot;&quot;, &quot;&quot;);

            return translatedText;
        } catch (Exception e) {
            throw new RuntimeException(&quot;API 응답 데이터를 처리하는데 실패했습니다.&quot;, e);
        }
    }&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1701743515160&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;private String post(String apiUrl, Map&amp;lt;String, String&amp;gt; requestHeaders, String text) {

        HttpURLConnection con = connect(apiUrl);

        String postParams = &quot;source=ko&amp;amp;target=en&amp;amp;text=&quot; + text;

        try {
            con.setRequestMethod(&quot;POST&quot;);
            for (Map.Entry&amp;lt;String, String&amp;gt; header : requestHeaders.entrySet()) {
                con.setRequestProperty(header.getKey(), header.getValue());
            }

            con.setDoOutput(true);
            try (DataOutputStream wr = new DataOutputStream(con.getOutputStream())) {
                wr.write(postParams.getBytes());
                wr.flush();
            }

            int responseCode = con.getResponseCode();
            if (responseCode == HttpURLConnection.HTTP_OK) {
                return readBody(con.getInputStream());
            } else {
                return readBody(con.getErrorStream());
            }
        } catch (IOException e) {
            throw new RuntimeException(&quot;API 요청과 응답 실패&quot;, e);
        } finally {
            con.disconnect();
        }
    }&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1701743553501&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;private HttpURLConnection connect(String apiUrl) {
        try {
            URL url = new URL(apiUrl);
            return (HttpURLConnection) url.openConnection();
        } catch (MalformedURLException e) {
            throw new RuntimeException(&quot;API URL이 잘못되었습니다. : &quot; + apiUrl, e);
        } catch (IOException e) {
            throw new RuntimeException(&quot;연결이 실패했습니다. : &quot; + apiUrl, e);
        }
    }&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1701743564724&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt; private String readBody(InputStream body) {
        InputStreamReader streamReader = new InputStreamReader(body);

        try (BufferedReader lineReader = new BufferedReader(streamReader)) {
            StringBuilder responseBody = new StringBuilder();

            String line;
            while ((line = lineReader.readLine()) != null) {
                responseBody.append(line);
            }

            return responseBody.toString();
        } catch (IOException e) {
            throw new RuntimeException(&quot;API 응답을 읽는데 실패했습니다.&quot;, e);
        }
    }&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;검색하면 이런식으로 DB에 값이 잘 저장되는 걸 확인할 수 있습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;span style=&quot;&quot;&gt;왼쪽 컬럼은 사용자 고유번호여서 신경쓰지 않으셔도 됩니다.&lt;/span&gt;&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;742&quot; data-origin-height=&quot;418&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/nnYXw/btsBoiRHfY0/qq9thjKRqXst7hVMkUxtp0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/nnYXw/btsBoiRHfY0/qq9thjKRqXst7hVMkUxtp0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/nnYXw/btsBoiRHfY0/qq9thjKRqXst7hVMkUxtp0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FnnYXw%2FbtsBoiRHfY0%2Fqq9thjKRqXst7hVMkUxtp0%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;400&quot; height=&quot;225&quot; data-origin-width=&quot;742&quot; data-origin-height=&quot;418&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;  &lt;b&gt;Mapper 클래스&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;변환된 단어를 기준으로 해서 중복된 값이 저장되지 않도록&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;매퍼(Mapper)는 아래와 같이 작성했습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1701743997084&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;@Insert(&quot;INSERT INTO VOCA (CRID, UNUM, WORD, RESULTWORD) &quot; +
            &quot;SELECT #{crid}, #{unum}, #{word}, #{resultWord} &quot; +
            &quot;FROM dual &quot; +
            &quot;WHERE NOT EXISTS (&quot; +
            &quot;    SELECT 1 &quot; +
            &quot;    FROM VOCA &quot; +
            &quot;    WHERE CRID = #{crid} AND UNUM = #{unum} AND RESULTWORD = #{resultWord}&quot; +
            &quot;)&quot;)
    int save(VocaDto vocaDto);&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;처음에는 변환할 텍스트 값인 word를 기준으로 해서&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;중복값이 저장되지 않도록 했었는데, 공백을 구분하지 못하더라고요.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;예를들어, &quot;사용할 수 없는&quot;을 입력했을 때 DB에 &quot;&lt;span style=&quot;background-color: #ffffff; color: #000000; text-align: left;&quot;&gt;unfit for use&lt;/span&gt;&quot;가 저장되는데&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;span style=&quot;&quot;&gt;&quot;사용할수없는&quot;을 입력했을 때에도 &lt;span style=&quot;color: #333333; text-align: center;&quot;&gt;&amp;nbsp;&quot;&lt;/span&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000; text-align: left;&quot;&gt;unfit for use&lt;/span&gt;&lt;span style=&quot;color: #333333; text-align: center;&quot;&gt;&quot;가 저장되더라고요.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;span style=&quot;&quot;&gt;&lt;span style=&quot;color: #333333; text-align: center;&quot;&gt;그래서 변환할 텍스트인 word가 아닌 변환된 텍스트인 resultword를 기준으로 잡아&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;span style=&quot;&quot;&gt;&lt;span style=&quot;color: #333333; text-align: center;&quot;&gt;중복값이 저장되지 않도록 했습니다.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;</description>
      <category>2023-02 몰입형 SW 정규 교육</category>
      <category>naver papago api</category>
      <category>papago</category>
      <category>PAPAGO API</category>
      <category>spring</category>
      <category>springboot</category>
      <category>네이버 번역 API</category>
      <category>네이버 파파고 api</category>
      <category>번역</category>
      <category>번역 API</category>
      <category>파파고 api</category>
      <author>gxxg</author>
      <guid isPermaLink="true">https://zero-talk.tistory.com/141</guid>
      <comments>https://zero-talk.tistory.com/141#entry141comment</comments>
      <pubDate>Tue, 5 Dec 2023 11:44:19 +0900</pubDate>
    </item>
    <item>
      <title>[Spring] TooManyResultsException 에러 해결</title>
      <link>https://zero-talk.tistory.com/140</link>
      <description>&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&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;Spring logo.png&quot; data-origin-width=&quot;441&quot; data-origin-height=&quot;114&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bd0H3W/btsBgayLDt4/O6oAlCq3cR3ntaQ0hZzlwK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bd0H3W/btsBgayLDt4/O6oAlCq3cR3ntaQ0hZzlwK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bd0H3W/btsBgayLDt4/O6oAlCq3cR3ntaQ0hZzlwK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbd0H3W%2FbtsBgayLDt4%2FO6oAlCq3cR3ntaQ0hZzlwK%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;441&quot; height=&quot;114&quot; data-filename=&quot;Spring logo.png&quot; data-origin-width=&quot;441&quot; data-origin-height=&quot;114&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;프로젝트를 하면서 발생했던 에러 &lt;b&gt;TooManyResultsException&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt; 프로젝트 병합 후 테스트를 하는데 500 에러가 났다. &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;683&quot; data-origin-height=&quot;770&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/0aeor/btsBbOjCM0n/VPIM2X4jdhc7iZQo3sRvrK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/0aeor/btsBbOjCM0n/VPIM2X4jdhc7iZQo3sRvrK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/0aeor/btsBbOjCM0n/VPIM2X4jdhc7iZQo3sRvrK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F0aeor%2FbtsBbOjCM0n%2FVPIM2X4jdhc7iZQo3sRvrK%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;400&quot; height=&quot;451&quot; data-origin-width=&quot;683&quot; data-origin-height=&quot;770&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&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;1382&quot; data-origin-height=&quot;72&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/c04xRa/btsBeVPBxcM/WqWQTJUoETary5etZf31g0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/c04xRa/btsBeVPBxcM/WqWQTJUoETary5etZf31g0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/c04xRa/btsBeVPBxcM/WqWQTJUoETary5etZf31g0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fc04xRa%2FbtsBeVPBxcM%2FWqWQTJUoETary5etZf31g0%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;1382&quot; height=&quot;72&quot; data-origin-width=&quot;1382&quot; data-origin-height=&quot;72&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;로그인에 성공하면 메인페이지로 넘어가야 하는데&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;아무런 반응이 없고&amp;nbsp;&lt;b&gt;TooManyResultsException&lt;/b&gt;가 뜨네요.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;Expected one result (or null) to be returned by selectOne(), but found: 6&lt;/span&gt;&lt;/blockquote&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;2023-12-01 10:35:34.981 ERROR 6360 --- [p-nio-80-exec-1] o.a.c.c.C.[.[.[/].[dispatcherServlet] : Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed; nested exception is org.mybatis.spring.MyBatisSystemException: nested exception is&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;org.apache.ibatis.exceptions.&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;TooManyResultsException: Expected one result (or null) to be returned by selectOne(), but found: 6&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;] with root cause org.apache.ibatis.exceptions.TooManyResultsException: Expected one result (or null) to be returned by selectOne(), but found: 6 at org.apache.ibatis.session.defaults.DefaultSqlSession.selectOne(DefaultSqlSession.java:81) ~[mybatis-3.5.13.jar:3.5.13] at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:na] at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:na] at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:na] at java.base/java.lang.reflect.Method.invoke(Method.java:566) ~[na:na] at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:425) ~[mybatis-spring-2.1.1.jar:2.1.1] at com.sun.proxy.$Proxy89.selectOne(Unknown Source) ~[na:na] at&lt;/span&gt;&lt;/blockquote&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;메일 인증 구현할 때 같은 메일로 회원가입을 진행했었는데,&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;DB를 확인해보니 데이터 중복 문제임을 확인할 수 있었습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&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;291&quot; data-origin-height=&quot;217&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dwMOkg/btsA8ORLujx/DtIzeopbFYQ9aHTBpD2sxK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dwMOkg/btsA8ORLujx/DtIzeopbFYQ9aHTBpD2sxK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dwMOkg/btsA8ORLujx/DtIzeopbFYQ9aHTBpD2sxK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdwMOkg%2FbtsA8ORLujx%2FDtIzeopbFYQ9aHTBpD2sxK%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;291&quot; height=&quot;217&quot; data-origin-width=&quot;291&quot; data-origin-height=&quot;217&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;test@test.com으로 로그인을 하고 있었는데 중복 계정이 6개나 있네요.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;에러 메세지였던 &quot; &lt;span style=&quot;background-color: #fcfcfc; color: #666666; text-align: left;&quot;&gt;Expected one result (or null) to be returned by selectOne(), but found: 6&lt;/span&gt; &quot;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;즉, &lt;b&gt;selectOne은 단일 데이터를 가져오는데 데이터 중복으로 인해&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;b&gt;여러개의 데이터를 가져오려고 하고 있기 때문에 발생한 에러&lt;/b&gt;였습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&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;295&quot; data-origin-height=&quot;117&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bpGhKs/btsA9RtVkai/yBkKBniXZSXNzwY8AItCH1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bpGhKs/btsA9RtVkai/yBkKBniXZSXNzwY8AItCH1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bpGhKs/btsA9RtVkai/yBkKBniXZSXNzwY8AItCH1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbpGhKs%2FbtsA9RtVkai%2FyBkKBniXZSXNzwY8AItCH1%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;295&quot; height=&quot;117&quot; data-origin-width=&quot;295&quot; data-origin-height=&quot;117&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;중복 데이터를 삭제한 후 로그인을 시도하니&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;세션에 값도 들어오고 메인페이지로 잘 이동합니다. ㅎㅎ&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&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;709&quot; data-origin-height=&quot;305&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/LvYSM/btsBbGMtOY5/caSQVfxDgmsMTfvSeJ7970/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/LvYSM/btsBbGMtOY5/caSQVfxDgmsMTfvSeJ7970/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/LvYSM/btsBbGMtOY5/caSQVfxDgmsMTfvSeJ7970/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FLvYSM%2FbtsBbGMtOY5%2FcaSQVfxDgmsMTfvSeJ7970%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;400&quot; height=&quot;172&quot; data-origin-width=&quot;709&quot; data-origin-height=&quot;305&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;클라이언트 쪽에서 기본적인 유효성 검사만 진행되도록 구현했었는데&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;서버쪽에서 DB에 이미 유효한 메일이 존재할 경우&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;회원가입을 진행할 수 없도록 양방향 유효성 검사를 하도록 수정해야겠습니다.&lt;/span&gt;&lt;/p&gt;</description>
      <category>벽돌깨기</category>
      <category>java</category>
      <category>mybatis</category>
      <category>returned by selectOne</category>
      <category>selectOne</category>
      <category>selectOne에러</category>
      <category>spring</category>
      <category>spring error</category>
      <category>springboot</category>
      <category>TooManyResultsException</category>
      <category>스프링 에러</category>
      <author>gxxg</author>
      <guid isPermaLink="true">https://zero-talk.tistory.com/140</guid>
      <comments>https://zero-talk.tistory.com/140#entry140comment</comments>
      <pubDate>Fri, 1 Dec 2023 10:50:52 +0900</pubDate>
    </item>
    <item>
      <title>[IntelliJ] Typo: in word ' ' 밑줄 제거</title>
      <link>https://zero-talk.tistory.com/138</link>
      <description>&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&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;IntelliJ logo.png&quot; data-origin-width=&quot;440&quot; data-origin-height=&quot;180&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/zfXVw/btsABy8GVdg/43k9ZMy5B70Pa187ZPmJhk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/zfXVw/btsABy8GVdg/43k9ZMy5B70Pa187ZPmJhk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/zfXVw/btsABy8GVdg/43k9ZMy5B70Pa187ZPmJhk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FzfXVw%2FbtsABy8GVdg%2F43k9ZMy5B70Pa187ZPmJhk%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;440&quot; height=&quot;180&quot; data-filename=&quot;IntelliJ logo.png&quot; data-origin-width=&quot;440&quot; data-origin-height=&quot;180&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;인텔리제이(IntelliJ)에서는 기본적으로 영문 스펠링을 인식하여 녹색 밑줄을 보여주는 기능을 제공합니다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;밑줄이 생기는 원인은 다양하지만 &lt;b&gt;에러는 아니며, 대표적으로 문법이나 맞춤법이 맞지 않을 때 발생&lt;/b&gt;합니다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;에러는 아니지만 코드를 작성할 때 신경쓰이기 때문에 제거하도록 하겠습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;이 초록색 밑줄을 제거하는 방법은 크게 두 가지가 있습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;✔️ Rename&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;✔️ 예외처리&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;Rename은 귀찮기도 하고 매번 문법적으로 올바른 스펠링만 쓸 수는 없으니...&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;File &amp;gt; Settings...&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;304&quot; data-origin-height=&quot;204&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bCUgh7/btsAyLVJxlP/I8xDMDHvKkSDFSxX0TG8y1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bCUgh7/btsAyLVJxlP/I8xDMDHvKkSDFSxX0TG8y1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bCUgh7/btsAyLVJxlP/I8xDMDHvKkSDFSxX0TG8y1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbCUgh7%2FbtsAyLVJxlP%2FI8xDMDHvKkSDFSxX0TG8y1%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;368&quot; height=&quot;247&quot; data-origin-width=&quot;304&quot; data-origin-height=&quot;204&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;(IntelliJ IDEA 2023.2.4 기준)&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;Editor &amp;gt; Inspections &amp;gt; Typo 검색 -&amp;gt; 체크 해제&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;(구버전은 Editor -&amp;gt; Inspections -&amp;gt; Spelling -&amp;gt; Typo 체크 해제)&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;973&quot; data-origin-height=&quot;718&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/du8899/btsAF1PMm7z/3vbdvEgccSIPlDxiefo9zk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/du8899/btsAF1PMm7z/3vbdvEgccSIPlDxiefo9zk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/du8899/btsAF1PMm7z/3vbdvEgccSIPlDxiefo9zk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fdu8899%2FbtsAF1PMm7z%2F3vbdvEgccSIPlDxiefo9zk%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;687&quot; height=&quot;507&quot; data-origin-width=&quot;973&quot; data-origin-height=&quot;718&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&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;273&quot; data-origin-height=&quot;78&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cqqTGg/btsAG2uaYn6/y4HiOnQQa1XoU4kVUhXgSk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cqqTGg/btsAG2uaYn6/y4HiOnQQa1XoU4kVUhXgSk/img.png&quot; data-alt=&quot;체크 해체 전 (녹색 밑줄)&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cqqTGg/btsAG2uaYn6/y4HiOnQQa1XoU4kVUhXgSk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcqqTGg%2FbtsAG2uaYn6%2Fy4HiOnQQa1XoU4kVUhXgSk%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;273&quot; height=&quot;78&quot; data-origin-width=&quot;273&quot; data-origin-height=&quot;78&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;체크 해체 전 (녹색 밑줄)&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&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;248&quot; data-origin-height=&quot;76&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/y4PzV/btsAD3USZ6A/zK129aOdQsKj7KOnwcF7Ak/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/y4PzV/btsAD3USZ6A/zK129aOdQsKj7KOnwcF7Ak/img.png&quot; data-alt=&quot;체크 해제 후&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/y4PzV/btsAD3USZ6A/zK129aOdQsKj7KOnwcF7Ak/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fy4PzV%2FbtsAD3USZ6A%2FzK129aOdQsKj7KOnwcF7Ak%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;248&quot; height=&quot;76&quot; data-origin-width=&quot;248&quot; data-origin-height=&quot;76&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;체크 해제 후&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;혹은 문제가 발생한 위치에서 Alt + Enter로 확장 기능을 실행하고&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;Typo: Change to ... -&amp;gt; Edit Inspection profile setting에 가서 Typo 체크를 해제하면 됩니다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #dddddd;&quot;&gt;참고: https://devfoxstar.github.io/java/typo-in-word/#google_vignette&lt;/span&gt;&lt;/p&gt;</description>
      <category>Etc</category>
      <category>in word</category>
      <category>Inspections</category>
      <category>intellij</category>
      <category>spelling</category>
      <category>typo</category>
      <category>Typo: in word</category>
      <category>녹색밑줄</category>
      <category>스펠링</category>
      <category>인텔리제이</category>
      <category>초록색밑줄</category>
      <author>gxxg</author>
      <guid isPermaLink="true">https://zero-talk.tistory.com/138</guid>
      <comments>https://zero-talk.tistory.com/138#entry138comment</comments>
      <pubDate>Mon, 20 Nov 2023 21:49:33 +0900</pubDate>
    </item>
    <item>
      <title>[Tomcat] 이클립스 톰캣 Multiple Contexts have a path of &amp;quot;/spring&amp;quot;. 에러 해결</title>
      <link>https://zero-talk.tistory.com/137</link>
      <description>&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&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;Tomcat logo.png&quot; data-origin-width=&quot;512&quot; data-origin-height=&quot;256&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/d25dFF/btsy7N0Fjld/W0Q3epnIDyHynvQpEo4jp1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/d25dFF/btsy7N0Fjld/W0Q3epnIDyHynvQpEo4jp1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/d25dFF/btsy7N0Fjld/W0Q3epnIDyHynvQpEo4jp1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fd25dFF%2Fbtsy7N0Fjld%2FW0Q3epnIDyHynvQpEo4jp1%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;512&quot; height=&quot;256&quot; data-filename=&quot;Tomcat logo.png&quot; data-origin-width=&quot;512&quot; data-origin-height=&quot;256&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 style=&quot;text-align: center;&quot; data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&quot;&gt;&lt;b&gt;  이클립스&amp;nbsp;톰캣&amp;nbsp;Multiple&amp;nbsp;Contexts&amp;nbsp;have&amp;nbsp;a&amp;nbsp;path&amp;nbsp;of&amp;nbsp;&quot;/spring&quot;.&amp;nbsp;에러&amp;nbsp;해결&lt;/b&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&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;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&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;469&quot; data-origin-height=&quot;388&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/LSm6S/btsy3gizlTV/q8VHAku7VZLsbUEdrj8Nx1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/LSm6S/btsy3gizlTV/q8VHAku7VZLsbUEdrj8Nx1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/LSm6S/btsy3gizlTV/q8VHAku7VZLsbUEdrj8Nx1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FLSm6S%2Fbtsy3gizlTV%2Fq8VHAku7VZLsbUEdrj8Nx1%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;350&quot; height=&quot;290&quot; data-origin-width=&quot;469&quot; data-origin-height=&quot;388&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&quot;&gt;Could not publish server configuration for Tomcat v9.0 Server at localhost.&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&quot;&gt;Multiple Contexts have a path of &quot;/spring&quot;.&lt;/span&gt;&lt;/blockquote&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&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;&lt;span style=&quot;background-color: #fffa00;&quot;&gt;&quot;/spring&quot;이라는 Context path가 중복이라 발생하는 에러이다.&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&quot;&gt; ✔️ 하단에 Servers 탭에서 Tomcat을 더블클릭한다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&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;522&quot; data-origin-height=&quot;65&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/qjkkS/btsy44Wa7Ea/Hd8AApXdhW2LNZFOoXuRJ1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/qjkkS/btsy44Wa7Ea/Hd8AApXdhW2LNZFOoXuRJ1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/qjkkS/btsy44Wa7Ea/Hd8AApXdhW2LNZFOoXuRJ1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FqjkkS%2Fbtsy44Wa7Ea%2FHd8AApXdhW2LNZFOoXuRJ1%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;522&quot; height=&quot;65&quot; data-origin-width=&quot;522&quot; data-origin-height=&quot;65&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&quot;&gt;✔️ 기본적으로 Overview를 보여주는데, Modules 탭을 클릭한다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&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;162&quot; data-origin-height=&quot;30&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/E2tAs/btsy6hueL6s/FMUPRibPA6AKhIRto2SKYk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/E2tAs/btsy6hueL6s/FMUPRibPA6AKhIRto2SKYk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/E2tAs/btsy6hueL6s/FMUPRibPA6AKhIRto2SKYk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FE2tAs%2Fbtsy6hueL6s%2FFMUPRibPA6AKhIRto2SKYk%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;162&quot; height=&quot;30&quot; data-origin-width=&quot;162&quot; data-origin-height=&quot;30&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&quot;&gt;✔️ Web Modules를 확인해보면 &quot;/spring&quot;이 중복이다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&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;&lt;span style=&quot;background-color: #fffa00;&quot;&gt;서로 다른 프로젝트가 &quot;/spring&quot;이라는 같은 path 명으로 등록&lt;/span&gt;&lt;/b&gt;되어 있어서 발생한 에러이다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&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;588&quot; data-origin-height=&quot;287&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bsZpMh/btsy9ir4Rtb/kBnkucxkRZs4skTs7PsHA1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bsZpMh/btsy9ir4Rtb/kBnkucxkRZs4skTs7PsHA1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bsZpMh/btsy9ir4Rtb/kBnkucxkRZs4skTs7PsHA1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbsZpMh%2Fbtsy9ir4Rtb%2FkBnkucxkRZs4skTs7PsHA1%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;244&quot; data-origin-width=&quot;588&quot; data-origin-height=&quot;287&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&quot;&gt;✔️ 우측에 Edit를 눌러서 path 명을 다르게 설정하거나&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&quot;&gt;✔️ Remove를 눌러서 중복 path를 가진 프로젝트를 삭제하면 된다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&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;&lt;span style=&quot;background-color: #fffa00;&quot;&gt;톰캣에 등록된 것만 삭제하는 것이라 프로젝트에는 문제가 없다.&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&quot;&gt;나중에 필요할 때 [Add Web Module...] 를 클릭해 다시 등록할 수도 있다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&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;256&quot; data-origin-height=&quot;172&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/rtRoM/btsy8nUH9ZW/xVPy1fgMzPbXUViFMvWMuK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/rtRoM/btsy8nUH9ZW/xVPy1fgMzPbXUViFMvWMuK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/rtRoM/btsy8nUH9ZW/xVPy1fgMzPbXUViFMvWMuK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FrtRoM%2Fbtsy8nUH9ZW%2FxVPy1fgMzPbXUViFMvWMuK%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;200&quot; height=&quot;134&quot; data-origin-width=&quot;256&quot; data-origin-height=&quot;172&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&quot;&gt;✔️ 나는 공부 목적으로 사용하고 있어서 현재 사용할 프로젝트만 남기고 Remove 했다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&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;595&quot; data-origin-height=&quot;285&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ccGD9c/btsy9Mfq3KI/NjPk0ad1HUAKdb5JffO3b0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ccGD9c/btsy9Mfq3KI/NjPk0ad1HUAKdb5JffO3b0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ccGD9c/btsy9Mfq3KI/NjPk0ad1HUAKdb5JffO3b0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FccGD9c%2Fbtsy9Mfq3KI%2FNjPk0ad1HUAKdb5JffO3b0%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;239&quot; data-origin-width=&quot;595&quot; data-origin-height=&quot;285&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&quot;&gt;✔️ Ctrl + S로 저장을 한 후 톰캣 서버를 재시작하면 정상적으로 동작한다.&lt;/span&gt;&lt;/p&gt;</description>
      <category>벽돌깨기</category>
      <category>/spring</category>
      <category>Could not publish server configuration</category>
      <category>Multiple Contexts</category>
      <category>Multiple Contexts have a path of &amp;quot;/spring&amp;quot;.</category>
      <category>path중복</category>
      <category>tomcat</category>
      <category>Tomcat9.0</category>
      <category>Web Module</category>
      <category>톰캣</category>
      <category>톰캣 path 중복</category>
      <author>gxxg</author>
      <guid isPermaLink="true">https://zero-talk.tistory.com/137</guid>
      <comments>https://zero-talk.tistory.com/137#entry137comment</comments>
      <pubDate>Wed, 25 Oct 2023 10:55:16 +0900</pubDate>
    </item>
    <item>
      <title>[Postman] 포스트맨 사용 방법</title>
      <link>https://zero-talk.tistory.com/136</link>
      <description>&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&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;Postman logo.png&quot; data-origin-width=&quot;1505&quot; data-origin-height=&quot;601&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/nAlcw/btszbiLT6mS/F4vKuSYvyHfdsYnH5r4Zy1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/nAlcw/btszbiLT6mS/F4vKuSYvyHfdsYnH5r4Zy1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/nAlcw/btszbiLT6mS/F4vKuSYvyHfdsYnH5r4Zy1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FnAlcw%2FbtszbiLT6mS%2FF4vKuSYvyHfdsYnH5r4Zy1%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;200&quot; data-filename=&quot;Postman logo.png&quot; data-origin-width=&quot;1505&quot; data-origin-height=&quot;601&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;b&gt;  포스트맨(Postman) 사용 방법&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;포스트맨은 URL 테스트 프로그램입니다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;get, post 등의 http 요청이 올바르게 이루어지고 있는지 확인할 수 있습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;  포스트맨의 장점은&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;✔️ 반복적인 테스트가 계속적으로 일어나기 때문에 많이 사용합니다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;예를 들어, 첫날에 URL 요청 테스트를 했다고 가정합시다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;10일, 20일, ... 이후에 테스트를 하려고 했을 때 사용 가능하다는 부분입니다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;시간이 지나도 사라지지 않는다는 장점이 있죠. (일회성 X)&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;어떻게 해서 값을 넘겨주는지 공유가 가능하고 이런 편리함 때문에 주로 사용합니다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;b&gt;  포스트맨(Postman) 실습&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;✔️ 포스트맨 회원가입 및 다운로드를 해주세요.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt; ⬇️ 회원가입 ⬇️ &lt;/span&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1698194501317&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;Postman API Platform | Sign Up for Free&quot; data-og-description=&quot;Postman is an API platform for building and using APIs. Postman simplifies each step of the API lifecycle and streamlines collaboration so you can create better APIs&amp;mdash;faster.&quot; data-og-host=&quot;www.postman.com&quot; data-og-source-url=&quot;https://www.postman.com/&quot; data-og-url=&quot;https://www.postman.com&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/eDX4z/hyUgHy8Zdr/CDax5bcKrKikcFTuKme2wk/img.jpg?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630,https://scrap.kakaocdn.net/dn/b3jBQQ/hyUlr8Vruj/ZnJ4MhuQP88kp8RQj6Dmjk/img.jpg?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630&quot;&gt;&lt;a href=&quot;https://www.postman.com/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://www.postman.com/&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/eDX4z/hyUgHy8Zdr/CDax5bcKrKikcFTuKme2wk/img.jpg?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630,https://scrap.kakaocdn.net/dn/b3jBQQ/hyUlr8Vruj/ZnJ4MhuQP88kp8RQj6Dmjk/img.jpg?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;Postman API Platform | Sign Up for Free&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;Postman is an API platform for building and using APIs. Postman simplifies each step of the API lifecycle and streamlines collaboration so you can create better APIs&amp;mdash;faster.&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;www.postman.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;⬇️ 다운로드 ⬇️&lt;/span&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1698194551924&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;Download Postman | Get Started for Free&quot; data-og-description=&quot;Try Postman for free! Join 25 million developers who rely on Postman, the collaboration platform for API development. Create better APIs&amp;mdash;faster.&quot; data-og-host=&quot;www.postman.com&quot; data-og-source-url=&quot;https://www.postman.com/downloads/&quot; data-og-url=&quot;https://www.postman.com/downloads/&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/bD0xgG/hyUgGmGSdZ/hjWiLSyCkkahUjsT2jUZV0/img.jpg?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630,https://scrap.kakaocdn.net/dn/j2haB/hyUgTzCaiP/3yoIxTULRlzLHBp08hj6c0/img.jpg?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630&quot;&gt;&lt;a href=&quot;https://www.postman.com/downloads/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://www.postman.com/downloads/&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/bD0xgG/hyUgGmGSdZ/hjWiLSyCkkahUjsT2jUZV0/img.jpg?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630,https://scrap.kakaocdn.net/dn/j2haB/hyUgTzCaiP/3yoIxTULRlzLHBp08hj6c0/img.jpg?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;Download Postman | Get Started for Free&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;Try Postman for free! Join 25 million developers who rely on Postman, the collaboration platform for API development. Create better APIs&amp;mdash;faster.&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;www.postman.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&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;1927&quot; data-origin-height=&quot;1198&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bsa3ed/btsy8saDkpv/q24tUqmDyM3i6z5oQUiF9K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bsa3ed/btsy8saDkpv/q24tUqmDyM3i6z5oQUiF9K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bsa3ed/btsy8saDkpv/q24tUqmDyM3i6z5oQUiF9K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbsa3ed%2Fbtsy8saDkpv%2Fq24tUqmDyM3i6z5oQUiF9K%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;1927&quot; height=&quot;1198&quot; data-origin-width=&quot;1927&quot; data-origin-height=&quot;1198&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;다운받은 포스트맨을 실행하고 로그인하면 첫화면이 뜰 것입니다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>get</category>
      <category>http</category>
      <category>http 요청 테스트</category>
      <category>HTTP요청</category>
      <category>POST</category>
      <category>Postman</category>
      <category>url</category>
      <category>URL 요청 테스트</category>
      <category>사용방법</category>
      <category>포스트맨</category>
      <author>gxxg</author>
      <guid isPermaLink="true">https://zero-talk.tistory.com/136</guid>
      <comments>https://zero-talk.tistory.com/136#entry136comment</comments>
      <pubDate>Tue, 24 Oct 2023 23:47:24 +0900</pubDate>
    </item>
    <item>
      <title>[Spring] 이클립스(eclipse) annotation 사용하여 객체 주입</title>
      <link>https://zero-talk.tistory.com/135</link>
      <description>&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&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;Spring logo.png&quot; data-origin-width=&quot;441&quot; data-origin-height=&quot;114&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Fu21i/btsy3Ol1Ub4/m5CwoY8OuBA8fwkahweoS0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Fu21i/btsy3Ol1Ub4/m5CwoY8OuBA8fwkahweoS0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Fu21i/btsy3Ol1Ub4/m5CwoY8OuBA8fwkahweoS0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FFu21i%2Fbtsy3Ol1Ub4%2Fm5CwoY8OuBA8fwkahweoS0%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;441&quot; height=&quot;114&quot; data-filename=&quot;Spring logo.png&quot; data-origin-width=&quot;441&quot; data-origin-height=&quot;114&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&quot;&gt;지난번에는 xml 파일을 생성하여 세터 및 생성자를 주입하는 방법을 알아봤습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 style=&quot;text-align: center;&quot; data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&quot;&gt;  오늘은 &lt;b&gt;&lt;span style=&quot;background-color: #fffa00;&quot;&gt;어노테이션(annotation)을 사용하여 객체를 사용&lt;/span&gt;&lt;/b&gt;할 수 있는 방법을 알아보겠습니다.&lt;/span&gt;&lt;/h4&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&quot;&gt;@Configuration을 사용하면 Beans 설정이 되는 파일임을 알릴 수 있습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&quot;&gt;기존에는 xml 파일을 생성하여 빈즈를 읽어 사용했는데, 이번엔 어노테이션으로&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&quot;&gt;불러올 것이기 때문에 &quot;어노테이션을 사용하여 만든 이 객체를 보낼 거야!&quot;를&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&quot;&gt;알리기 위해 @Bean 어노테이션을 사용하여 객체를 생성해야합니다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&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;b&gt;&lt;span style=&quot;background-color: #fffa00;&quot;&gt;@Configuration 어노테이션은 xml 파일에서 &amp;lt;Beans&amp;gt;&lt;/span&gt;&lt;/b&gt; 태그이고&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&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;&lt;span style=&quot;background-color: #fffa00;&quot;&gt;@Bean 어노테이션은 xml 파일에서 &amp;lt;Bean&amp;gt;&lt;/span&gt;&lt;/b&gt; 태그를 뜻합니다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&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;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 style=&quot;text-align: center;&quot; data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&quot;&gt;&lt;b&gt;  간단하게 이름, 나이, 취미를 출력하는 코드를 짜보겠습니다.&lt;/b&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&quot;&gt;✔️ getter 및 setter 생성&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1698156173892&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;package com.ex.spring;

import java.util.ArrayList;

public class Student {
	private String name;
	private int age;
	private ArrayList&amp;lt;String&amp;gt; hobbys;
	private double height;
	private double weight;

	public Student(String name, int age, ArrayList&amp;lt;String&amp;gt; hobbys) {
		this.name = name;
		this.age = age;
		this.hobbys = hobbys;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public int getAge() {
		return age;
	}

	public void setAge(int age) {
		this.age = age;
	}

	public ArrayList&amp;lt;String&amp;gt; getHobbys() {
		return hobbys;
	}

	public void setHobbys(ArrayList&amp;lt;String&amp;gt; hobbys) {
		this.hobbys = hobbys;
	}

	public double getHeight() {
		return height;
	}

	public void setHeight(double height) {
		this.height = height;
	}

	public double getWeight() {
		return weight;
	}

	public void setWeight(double weight) {
		this.weight = weight;
	}
}&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&quot;&gt;기존에 xml 파일에 작성했던 &amp;lt;Beans&amp;gt; 태그와 &amp;lt;Bean&amp;gt; 태그를&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&quot;&gt;java 클래스에서 사용하려면 아래와 같이 어노테이션을 붙여 사용하시면 됩니다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&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;&lt;span style=&quot;background-color: #fffa00;&quot;&gt;&lt;span style=&quot;background-color: #ffffff;&quot;&gt;✔️&lt;/span&gt; @Configuration, @Beans, @Bean 어노테이션&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&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;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1698156308444&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;package com.ex.spring;

import java.util.ArrayList;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
public class ApplicationConfig {

	@Bean
	public Student student1() {
		ArrayList&amp;lt;String&amp;gt; hobbys = new ArrayList&amp;lt;String&amp;gt;();

		hobbys.add(&quot;수영&quot;);
		hobbys.add(&quot;요리&quot;);

		Student student = new Student(&quot;홍길동&quot;, 20, hobbys);
		student.setHeight(180);
		student.setWeight(80);

		return student;
	}

	@Bean
	public Student student2() {
		ArrayList&amp;lt;String&amp;gt; hobbys = new ArrayList&amp;lt;String&amp;gt;();

		hobbys.add(&quot;독서&quot;);
		hobbys.add(&quot;음악감상&quot;);

		Student student = new Student(&quot;홍길순&quot;, 18, hobbys);
		student.setHeight(170);
		student.setWeight(55);

		return student;
	}
}&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&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;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&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;&lt;span style=&quot;background-color: #fffa00;&quot;&gt;AnnotationConfigApplicationContext&lt;/span&gt;&lt;/b&gt;를 사용하여&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&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;&lt;span style=&quot;background-color: #fffa00;&quot;&gt;@Beans와 @Bean으로 설정한 객체를 읽을 수 있도록&lt;/span&gt;&lt;/b&gt; 합니다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&quot;&gt;이렇게 설정하면 자동으로 annotation bean을 사용하여 만든 객체를 읽을 수 있게 되고&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&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;&lt;span style=&quot;background-color: #fffa00;&quot;&gt;getBean&lt;/span&gt;&lt;/b&gt;을 사용하면 해당 객체를 불러올 수 있습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1698156532512&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;package com.ex.spring;

import org.springframework.context.annotation.AnnotationConfigApplicationContext;

public class Main {

	public static void main(String[] args) {

		AnnotationConfigApplicationContext ctx = new AnnotationConfigApplicationContext(ApplicationConfig.class);

		Student student1 = ctx.getBean(&quot;student1&quot;, Student.class);
		System.out.println(&quot;이름: &quot; + student1.getName());
		System.out.println(&quot;나이: &quot; + student1.getAge());
		System.out.println(&quot;취미: &quot; + student1.getHobbys());
		System.out.println(&quot;신장: &quot; + student1.getHeight());
		System.out.println(&quot;몸무게: &quot; + student1.getWeight());

		Student student2 = ctx.getBean(&quot;student2&quot;, Student.class);
		System.out.println(&quot;이름: &quot; + student1.getName());
		System.out.println(&quot;나이: &quot; + student1.getAge());
		System.out.println(&quot;취미: &quot; + student1.getHobbys());
		System.out.println(&quot;신장: &quot; + student1.getHeight());
		System.out.println(&quot;몸무게: &quot; + student1.getWeight());

		ctx.close();
	}
}&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&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;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2458&quot; data-origin-height=&quot;235&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/U9xdK/btsy4o1kp4o/jFZrz1QxosUc6suQtAJmyk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/U9xdK/btsy4o1kp4o/jFZrz1QxosUc6suQtAJmyk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/U9xdK/btsy4o1kp4o/jFZrz1QxosUc6suQtAJmyk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FU9xdK%2Fbtsy4o1kp4o%2FjFZrz1QxosUc6suQtAJmyk%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;2458&quot; height=&quot;235&quot; data-origin-width=&quot;2458&quot; data-origin-height=&quot;235&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p 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;root of context hierarchy Exception in thread &quot;main&quot; java.lang.IllegalStateException:&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&quot;&gt;CGLIB is required to process @Configuration classes.&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&quot;&gt;Either add CGLIB to the classpath or remove the following @Configuration bean definitions: [applicationConfig]&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&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 style=&quot;background-color: #fcfcfc; text-align: left;&quot;&gt;&lt;b&gt;CGLIB&lt;/b&gt;&lt;b&gt; 라이브러리가 없다&lt;/b&gt;는 뜻입니다. &lt;/span&gt;&lt;span style=&quot;letter-spacing: 0px; background-color: #fcfcfc;&quot;&gt;CGLIB&lt;/span&gt;&lt;span style=&quot;background-color: #fcfcfc; letter-spacing: 0px;&quot;&gt; 는 Java 클래스를 조작하는 라이브러리로,&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;background-color: #fcfcfc; color: #000000; text-align: left; font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;b&gt;스프링에서 @Configuration 어노테이션을 처리하기 위해서 필요&lt;/b&gt;한 라이브러리입니다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;background-color: #fcfcfc; color: #000000; text-align: left; font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;Maven이나 Gradle 등 프로젝트 의존성 관리 도구를 사용하여 &lt;span style=&quot;background-color: #fcfcfc; text-align: left;&quot;&gt;CGLIB를 추가하는 방법이 있으나&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&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 style=&quot;background-color: #fcfcfc;&quot;&gt;저는 Maven이나 Gradle 프로젝트를 사용하지 않으므로... &lt;b&gt;pom.xml&lt;/b&gt; 파일에 아래와 같은 &lt;b&gt;코드를 추가&lt;/b&gt;했습니다.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1698156929722&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;lt;!-- https://mvnrepository.com/artifact/cglib/cglib --&amp;gt;
&amp;lt;dependency&amp;gt;
    &amp;lt;groupId&amp;gt;cglib&amp;lt;/groupId&amp;gt;
    &amp;lt;artifactId&amp;gt;cglib&amp;lt;/artifactId&amp;gt;
    &amp;lt;version&amp;gt;3.2.0&amp;lt;/version&amp;gt;
&amp;lt;/dependency&amp;gt;
 
&amp;lt;!-- https://mvnrepository.com/artifact/cglib/cglib-nodep --&amp;gt;
&amp;lt;dependency&amp;gt;
    &amp;lt;groupId&amp;gt;cglib&amp;lt;/groupId&amp;gt;
    &amp;lt;artifactId&amp;gt;cglib-nodep&amp;lt;/artifactId&amp;gt;
    &amp;lt;version&amp;gt;3.2.0&amp;lt;/version&amp;gt;
    &amp;lt;scope&amp;gt;test&amp;lt;/scope&amp;gt;
&amp;lt;/dependency&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&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;lt;dependency&amp;gt;는 부모가 있어야 한다고 합니다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&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;lt;dependency&amp;gt;는 &amp;lt;project&amp;gt; 안에 있더라고요.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&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;lt;dependency&amp;gt; 아래에 해당 코드를 추가했습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&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;814&quot; data-origin-height=&quot;367&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cMBFAn/btsy9SmfRmz/u0w6NyUCkuLpjJ3kGoYVMK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cMBFAn/btsy9SmfRmz/u0w6NyUCkuLpjJ3kGoYVMK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cMBFAn/btsy9SmfRmz/u0w6NyUCkuLpjJ3kGoYVMK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcMBFAn%2Fbtsy9SmfRmz%2Fu0w6NyUCkuLpjJ3kGoYVMK%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;600&quot; height=&quot;271&quot; data-origin-width=&quot;814&quot; data-origin-height=&quot;367&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&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 style=&quot;background-color: #fcfcfc; text-align: left;&quot;&gt;CGLIB&lt;/span&gt;&lt;span style=&quot;text-align: left;&quot;&gt; 라이브러리 에러가 더이상 뜨지 않는 것을 확인하실 수 있습니다.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 style=&quot;text-align: center;&quot; data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&quot;&gt;&lt;b&gt;&lt;span style=&quot;background-color: #fffa00;&quot;&gt;  xml에서 context:annotation-config 사용하기&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&quot;&gt;✔️ 메인클래스에서 student1은 남기고 student2는 삭제&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1698157519932&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;package com.ex.spring;

import org.springframework.context.annotation.AnnotationConfigApplicationContext;

public class Main {

	public static void main(String[] args) {

		AnnotationConfigApplicationContext ctx = new AnnotationConfigApplicationContext(ApplicationConfig.class);

		Student student1 = ctx.getBean(&quot;student1&quot;, Student.class);
		System.out.println(&quot;이름: &quot; + student1.getName());
		System.out.println(&quot;나이: &quot; + student1.getAge());
		System.out.println(&quot;취미: &quot; + student1.getHobbys());
		System.out.println(&quot;신장: &quot; + student1.getHeight());
		System.out.println(&quot;몸무게: &quot; + student1.getWeight());

		ctx.close();
	}
}&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&quot;&gt;✔️ xml 파일 생성하여 student2 객체 추가&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1698157546432&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&amp;gt;
&amp;lt;beans xmlns=&quot;http://www.springframework.org/schema/beans&quot;
	xmlns:xsi=&quot;http://www.w3.org/2001/XMLSchema-instance&quot;
	xsi:schemaLocation=&quot;http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd&quot;&amp;gt;

	&amp;lt;bean id=&quot;student2&quot; class=&quot;com.ex.spring.Student&quot;&amp;gt;
		&amp;lt;constructor-arg value=&quot;홍길동&quot; /&amp;gt;
		&amp;lt;constructor-arg value=&quot;30&quot; /&amp;gt;
		&amp;lt;constructor-arg&amp;gt;
			&amp;lt;list&amp;gt;
				&amp;lt;value&amp;gt;마라톤&amp;lt;/value&amp;gt;
				&amp;lt;value&amp;gt;요리&amp;lt;/value&amp;gt;
			&amp;lt;/list&amp;gt;
		&amp;lt;/constructor-arg&amp;gt;
		&amp;lt;property name=&quot;height&quot; value=&quot;190&quot; /&amp;gt;
		&amp;lt;property name=&quot;weight&quot; value=&quot;70&quot; /&amp;gt;
	&amp;lt;/bean&amp;gt;
	
&amp;lt;/beans&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&quot;&gt;xml에서 annotation을 사용한 java 파일을 불러와 사용하겠다는 걸 알리기 위해&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&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;lt;context:annotation-config /&amp;gt;를 추가합니다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1698157635941&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;lt;context:annotation-config /&amp;gt;
	&amp;lt;bean class=&quot;com.ex.spring.ApplicationConfig&quot; /&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&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;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&quot;&gt;✔️ Namespace에서 context를 추가하면 (체크) 에러가 사라집니다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&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;543&quot; data-origin-height=&quot;825&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/barUP9/btsy5fiIdjE/Xh2UtMjKm3qhUsKKRpsOm1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/barUP9/btsy5fiIdjE/Xh2UtMjKm3qhUsKKRpsOm1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/barUP9/btsy5fiIdjE/Xh2UtMjKm3qhUsKKRpsOm1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbarUP9%2Fbtsy5fiIdjE%2FXh2UtMjKm3qhUsKKRpsOm1%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;300&quot; height=&quot;456&quot; data-origin-width=&quot;543&quot; data-origin-height=&quot;825&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&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;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1698157838041&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;package com.ex.spring;

import org.springframework.context.support.AbstractApplicationContext;
import org.springframework.context.support.GenericXmlApplicationContext;

public class Main {

	public static void main(String[] args) {

		AbstractApplicationContext ctx = new GenericXmlApplicationContext(&quot;classpath:applicationCTX/xml&quot;);

		Student student1 = ctx.getBean(&quot;student1&quot;, Student.class);
		System.out.println(&quot;이름: &quot; + student1.getName());
		System.out.println(&quot;나이: &quot; + student1.getAge());
		System.out.println(&quot;취미: &quot; + student1.getHobbys());
		System.out.println(&quot;신장: &quot; + student1.getHeight());
		System.out.println(&quot;몸무게: &quot; + student1.getWeight());

		Student student2 = ctx.getBean(&quot;student2&quot;, Student.class);
		System.out.println(&quot;이름: &quot; + student2.getName());
		System.out.println(&quot;나이: &quot; + student2.getAge());
		System.out.println(&quot;취미: &quot; + student2.getHobbys());
		System.out.println(&quot;신장: &quot; + student2.getHeight());
		System.out.println(&quot;몸무게: &quot; + student2.getWeight());

		ctx.close();
	}
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>2023-02 몰입형 SW 정규 교육</category>
      <category>annotation</category>
      <category>bean</category>
      <category>beans</category>
      <category>cglib</category>
      <category>CGLIB라이브러리</category>
      <category>Configuration</category>
      <category>DI</category>
      <category>eclipse</category>
      <category>spring</category>
      <author>gxxg</author>
      <guid isPermaLink="true">https://zero-talk.tistory.com/135</guid>
      <comments>https://zero-talk.tistory.com/135#entry135comment</comments>
      <pubDate>Tue, 24 Oct 2023 23:38:49 +0900</pubDate>
    </item>
    <item>
      <title>[Spring] 이클립스(eclipse) XML 기반 세터/생성자 주입 (setter/constructor)</title>
      <link>https://zero-talk.tistory.com/134</link>
      <description>&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&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;Spring logo.png&quot; data-origin-width=&quot;441&quot; data-origin-height=&quot;114&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bSuDsx/btsy0iNuOST/gvlgD0DkXo5U1MZREuVhV1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bSuDsx/btsy0iNuOST/gvlgD0DkXo5U1MZREuVhV1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bSuDsx/btsy0iNuOST/gvlgD0DkXo5U1MZREuVhV1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbSuDsx%2Fbtsy0iNuOST%2FgvlgD0DkXo5U1MZREuVhV1%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;441&quot; height=&quot;114&quot; data-filename=&quot;Spring logo.png&quot; data-origin-width=&quot;441&quot; data-origin-height=&quot;114&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&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 style=&quot;background-color: #fffa00;&quot;&gt;&lt;b&gt;이클립스 XML에서 세터(setter) 및 생성자(constructor) 주입 방법&lt;/b&gt;&lt;/span&gt;을 알아볼 거예요.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&quot;&gt;그전에 DI(Dependency Injection)에 대해 간략하게 알아보도록 하겠습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&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 style=&quot;background-color: #fffa00;&quot;&gt;&lt;b&gt;DI란 쉽게 말해 의존성 주입&lt;/b&gt;&lt;/span&gt;이라고도 하는데요,&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&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 style=&quot;background-color: #fffa00;&quot;&gt;&lt;b&gt;객체 간 상호작용하여 다른 객체를 참조하거나 사용하는 상태&lt;/b&gt;&lt;/span&gt;를 말합니다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&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;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&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;1013&quot; data-origin-height=&quot;463&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bJWIAR/btsy2pr3zoN/WCfJKfJVSEFVKCF5sroHbk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bJWIAR/btsy2pr3zoN/WCfJKfJVSEFVKCF5sroHbk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bJWIAR/btsy2pr3zoN/WCfJKfJVSEFVKCF5sroHbk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbJWIAR%2Fbtsy2pr3zoN%2FWCfJKfJVSEFVKCF5sroHbk%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;400&quot; height=&quot;183&quot; data-origin-width=&quot;1013&quot; data-origin-height=&quot;463&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&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 style=&quot;background-color: #fffa00;&quot;&gt;&lt;b&gt;필요할 때마다 외부에서 객체를 가져와 사용&lt;/b&gt;&lt;/span&gt;한다고 이해할 수 있습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&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;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 style=&quot;text-align: center;&quot; data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;  실습은 간단한 계산기로 진행하겠습니다.&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&quot;&gt;먼저 순수 자바(Java) 코드로 작성해보겠습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&quot;&gt;✔️ 사칙연산에 필요한 getter 및 setter를 생성합니다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1698069254532&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;package com.smu.spring;

public class MyCalculation {

	Calculation calculation;
	private int firstNum;
	private int secondNum;

	public void setCalculator(Calculation calculator) {
		this.calculation = calculator;
	}

	public void add() {
		calculation.addition(firstNum, secondNum);
	}

	public void sub() {
		calculation.substraction(firstNum, secondNum);
	}

	public void mul() {
		calculation.multiplication(firstNum, secondNum);
	}

	public void div() {
		calculation.division(firstNum, secondNum);
	}

	public int getFirstNum() {
		return firstNum;
	}

	public void setFirstNum(int firstNum) {
		this.firstNum = firstNum;
	}

	public int getSecondNum() {
		return secondNum;
	}

	public void setSecondNum(int secondNum) {
		this.secondNum = secondNum;
	}
}&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&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;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1698069287317&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;package com.smu.spring;

public class Calculation {

	public void addition(int f, int s) {
		System.out.println(&quot;addition: &quot;);
		int result = f + s;
		System.out.println(f + &quot;+&quot; + s + &quot;=&quot; + result + &quot;\n&quot;);
	}

	public void substraction(int f, int s) {
		System.out.println(&quot;substraction&quot;);
		int result = f - s;
		System.out.println(f + &quot;-&quot; + s + &quot;=&quot; + result + &quot;\n&quot;);
	}

	public void multiplication(int f, int s) {
		System.out.println(&quot;multiplication&quot;);
		int result = f * s;
		System.out.println(f + &quot;*&quot; + s + &quot;=&quot; + result + &quot;\n&quot;);
	}

	public void division(int f, int s) {
		System.out.println(&quot;division&quot;);
		int result = f / s;
		System.out.println(f + &quot;/&quot; + s + &quot;=&quot; + result + &quot;\n&quot;);
	}
}&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&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 style=&quot;color: #000000;&quot;&gt;✔️ 메인 클래스에서 사칙연산을 실행해보겠습니다.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1698069356869&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;package com.smu.spring;

public class Main {

	public static void main(String[] args) {

		MyCalculation cal = new MyCalculation();
		cal.setCalculator(new Calculation());

		cal.setFirstNum(10);
		cal.setSecondNum(2);

		cal.add();
		cal.sub();
		cal.mul();
		cal.div();
	}
}&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&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;314&quot; data-origin-height=&quot;391&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/baCIYt/btsyXYuYdDy/rchujh4yX2RzDDtnEAqMw1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/baCIYt/btsyXYuYdDy/rchujh4yX2RzDDtnEAqMw1/img.png&quot; data-alt=&quot;Java Application 실행&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/baCIYt/btsyXYuYdDy/rchujh4yX2RzDDtnEAqMw1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbaCIYt%2FbtsyXYuYdDy%2Frchujh4yX2RzDDtnEAqMw1%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;200&quot; height=&quot;249&quot; data-origin-width=&quot;314&quot; data-origin-height=&quot;391&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;Java Application 실행&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;162&quot; data-origin-height=&quot;256&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/w0rrc/btsy5gguhy0/h5KXkM4xaLrCquljdrVKnK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/w0rrc/btsy5gguhy0/h5KXkM4xaLrCquljdrVKnK/img.png&quot; data-alt=&quot;실행결과&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/w0rrc/btsy5gguhy0/h5KXkM4xaLrCquljdrVKnK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fw0rrc%2Fbtsy5gguhy0%2Fh5KXkM4xaLrCquljdrVKnK%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;150&quot; height=&quot;237&quot; data-origin-width=&quot;162&quot; data-origin-height=&quot;256&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;실행결과&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 style=&quot;text-align: center;&quot; data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;  xml을 생성하여 외부에서 필요한 객체를 주입해보겠습니다.&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&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;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&quot;&gt;✔️ src &amp;gt; main &amp;gt; resource에 applicationCTX.xml 파일을 생성합니다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&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;1101&quot; data-origin-height=&quot;1037&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bnUy7Z/btsyV00x7C9/Iy5k9LxV8WSPDyaCMIiyLk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bnUy7Z/btsyV00x7C9/Iy5k9LxV8WSPDyaCMIiyLk/img.png&quot; data-alt=&quot;recource &amp;amp;gt; 우클릭 &amp;amp;gt; Spring Bean Configuration File 생성&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bnUy7Z/btsyV00x7C9/Iy5k9LxV8WSPDyaCMIiyLk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbnUy7Z%2FbtsyV00x7C9%2FIy5k9LxV8WSPDyaCMIiyLk%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;600&quot; height=&quot;565&quot; data-origin-width=&quot;1101&quot; data-origin-height=&quot;1037&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;recource &amp;gt; 우클릭 &amp;gt; Spring Bean Configuration File 생성&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&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;343&quot; data-origin-height=&quot;760&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/drcu1m/btsyTxq7jz1/YageUilz1UGaMNaqnwCC6k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/drcu1m/btsyTxq7jz1/YageUilz1UGaMNaqnwCC6k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/drcu1m/btsyTxq7jz1/YageUilz1UGaMNaqnwCC6k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fdrcu1m%2FbtsyTxq7jz1%2FYageUilz1UGaMNaqnwCC6k%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;250&quot; height=&quot;554&quot; data-origin-width=&quot;343&quot; data-origin-height=&quot;760&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&quot;&gt;✔️ xml 파일에 Bean을 생성합니다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1698070153922&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&amp;gt;
&amp;lt;beans xmlns=&quot;http://www.springframework.org/schema/beans&quot;
	xmlns:xsi=&quot;http://www.w3.org/2001/XMLSchema-instance&quot;
	xsi:schemaLocation=&quot;http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd&quot;&amp;gt;

	&amp;lt;bean id=&quot;Calculation&quot; class=&quot;com.smu.spring.Calculation&quot; /&amp;gt;

	&amp;lt;bean id=&quot;MyCalculation&quot; class=&quot;com.smu.spring.MyCalculation&quot;&amp;gt;
		&amp;lt;property name=&quot;calculator&quot;&amp;gt;
			&amp;lt;ref bean=&quot;Calculation&quot; /&amp;gt;
		&amp;lt;/property&amp;gt;

		&amp;lt;property name=&quot;firstNum&quot; value=&quot;10&quot; /&amp;gt;
		&amp;lt;property name=&quot;secondNum&quot; value=&quot;2&quot; /&amp;gt;
	&amp;lt;/bean&amp;gt;
&amp;lt;/beans&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size18&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;1649&quot; data-origin-height=&quot;714&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b9DMRQ/btsy0iGKTYS/sF7aCZk1rEOmMt3cfcJKUK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b9DMRQ/btsy0iGKTYS/sF7aCZk1rEOmMt3cfcJKUK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b9DMRQ/btsy0iGKTYS/sF7aCZk1rEOmMt3cfcJKUK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb9DMRQ%2Fbtsy0iGKTYS%2FsF7aCZk1rEOmMt3cfcJKUK%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;650&quot; height=&quot;281&quot; data-origin-width=&quot;1649&quot; data-origin-height=&quot;714&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: center;&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;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&quot;&gt;✔️ id는 변수를 설정,&amp;nbsp; property는 필드를 설정&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&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;1331&quot; data-origin-height=&quot;604&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bBjTJH/btsy4mH17GS/KTs5C9v0xBNie6NBMI0gC1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bBjTJH/btsy4mH17GS/KTs5C9v0xBNie6NBMI0gC1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bBjTJH/btsy4mH17GS/KTs5C9v0xBNie6NBMI0gC1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbBjTJH%2Fbtsy4mH17GS%2FKTs5C9v0xBNie6NBMI0gC1%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;650&quot; height=&quot;295&quot; data-origin-width=&quot;1331&quot; data-origin-height=&quot;604&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&quot;&gt;✔️ MyCalculation을 불러오는 것이기 때문에 id를 동일하게 작성해야 합니다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&quot;&gt;✔️ value에 값을 지정해주면 setter를 불러 사용하는 것으로 이해하시면 될 것 같습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&quot;&gt;✔️ 수정한 메인(main) 클래스&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1698071301908&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;package com.smu.spring;

import org.springframework.context.support.AbstractApplicationContext;
import org.springframework.context.support.GenericXmlApplicationContext;

public class Main {

	public static void main(String[] args) {

		String configLocation = &quot;classpath:applicationCTX.xml&quot;;
		AbstractApplicationContext ctx = new GenericXmlApplicationContext(configLocation);
		MyCalculation myCalculation = ctx.getBean(&quot;MyCalculation&quot;, MyCalculation.class);

		myCalculation.add();
		myCalculation.sub();
		myCalculation.mul();
		myCalculation.div();
	}
}&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 style=&quot;text-align: center;&quot; data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;  BMI를 이용한 예제&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&quot;&gt;✔️ BMI getter / setter 생성&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1698072233455&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;package com.smu.spring;

public class BMICalculator {

	private double lowWeight;
	private double normal;
	private double overWeight;
	private double obesity;
	BMICalculator bmiCalculator;

	public void bmicalculation(double weight, double height) {

		double h = height * 0.01;
		double result = weight / (h * h);

		System.out.println(&quot;BMI 지수 : &quot; + (int) result);

		if (result &amp;gt; obesity) {
			System.out.println(&quot;비만 입니다.&quot;);
		} else if (result &amp;gt; overWeight) {
			System.out.println(&quot;과체중 입니다.&quot;);
		} else if (result &amp;gt; normal) {
			System.out.println(&quot;정상 입니다.&quot;);
		} else {
			System.out.println(&quot;저체중 입니다.&quot;);
		}
	}

	// 객체 주입
	public void setbmicalculation(BMICalculator bmicalculation) {
		this.bmiCalculator = bmicalculation;
	}

	public double getLowWeight() {
		return lowWeight;
	}

	public void setLowWeight(double lowWeight) {
		this.lowWeight = lowWeight;
	}

	public void setNormal(double normal) {
		this.normal = normal;
	}

	public void setOverWeight(double overWeight) {
		this.overWeight = overWeight;
	}

	public void setObesity(double obesity) {
		this.obesity = obesity;
	}
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&quot;&gt;✔️ 내 신체 정보 getter / setter 생성&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1698072301960&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;package com.smu.spring;

import java.util.ArrayList;

public class MyInfo {

	private String name;
	private double height;
	private double weight;
	private ArrayList&amp;lt;String&amp;gt; hobbys;
	private BMICalculator bmiCalculator;

	public BMICalculator getBmiCalculator() {
		return bmiCalculator;
	}

	public void setBmiCalculator(BMICalculator bmiCalculator) {
		this.bmiCalculator = bmiCalculator;
	}

	public void setName(String name) {
		this.name = name;
	}

	public void setHeight(double height) {
		this.height = height;
	}

	public void setWeight(double weight) {
		this.weight = weight;
	}

	public void setHobbys(ArrayList&amp;lt;String&amp;gt; hobbys) {
		this.hobbys = hobbys;
	}

	public void bmiCalculation() {
		bmiCalculator.bmicalculation(weight, height);
	}

	public void getInfo() {
		System.out.println(&quot;이름 : &quot; + name);
		System.out.println(&quot;키 : &quot; + height);
		System.out.println(&quot;몸무게 : &quot; + weight);
		System.out.println(&quot;취미 : &quot; + hobbys);
		bmiCalculation();
	}
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&quot;&gt;✔️ xml 파일에 Bean 생성&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1698072576685&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&amp;gt;
&amp;lt;beans xmlns=&quot;http://www.springframework.org/schema/beans&quot;
	xmlns:xsi=&quot;http://www.w3.org/2001/XMLSchema-instance&quot;
	xsi:schemaLocation=&quot;http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd&quot;&amp;gt;

	&amp;lt;bean id=&quot;BMICalculator&quot; class=&quot;com.smu.spring.BMICalculator&quot;&amp;gt;
		&amp;lt;property name=&quot;lowWeight&quot; value=&quot;18.5&quot; /&amp;gt;
		&amp;lt;property name=&quot;normal&quot; value=&quot;23&quot; /&amp;gt;
		&amp;lt;property name=&quot;overWeight&quot; value=&quot;25&quot; /&amp;gt;
		&amp;lt;property name=&quot;obesity&quot; value=&quot;30&quot; /&amp;gt;
	&amp;lt;/bean&amp;gt;

	&amp;lt;bean id=&quot;myInfo&quot; class=&quot;com.smu.spring.MyInfo&quot;&amp;gt;
		&amp;lt;property name=&quot;bmiCalculator&quot;&amp;gt;
			&amp;lt;ref bean=&quot;BMICalculator&quot; /&amp;gt;
		&amp;lt;/property&amp;gt;
		&amp;lt;property name=&quot;name&quot; value=&quot;홍길동&quot; /&amp;gt;
		&amp;lt;property name=&quot;height&quot; value=&quot;180&quot; /&amp;gt;
		&amp;lt;property name=&quot;weight&quot; value=&quot;80&quot; /&amp;gt;
		&amp;lt;property name=&quot;hobbys&quot;&amp;gt;
			&amp;lt;list&amp;gt;
				&amp;lt;value&amp;gt;독서&amp;lt;/value&amp;gt;
				&amp;lt;value&amp;gt;음악감상&amp;lt;/value&amp;gt;
				&amp;lt;value&amp;gt;게임&amp;lt;/value&amp;gt;
			&amp;lt;/list&amp;gt;
		&amp;lt;/property&amp;gt;
	&amp;lt;/bean&amp;gt;

&amp;lt;/beans&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&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;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1698072635594&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;package com.smu.spring;

import java.util.ArrayList;
import java.util.Arrays;

import org.springframework.context.support.AbstractApplicationContext;
import org.springframework.context.support.GenericXmlApplicationContext;

public class Main {

	public static void main(String[] args) {

		// BMICalculator 객체 생성 및 설정
//		BMICalculator bmiCalculator = new BMICalculator();
//		bmiCalculator.setLowWeight(18.5);
//		bmiCalculator.setNormal(23);
//		bmiCalculator.setOverWeight(25);
//		bmiCalculator.setObesity(25);

		// MyInfo 객체 생성 및 설정
//		MyInfo myInfo = new MyInfo();
//		myInfo.setName(&quot;홍길동&quot;);
//		myInfo.setHeight(180);
//		myInfo.setWeight(80);
//		myInfo.setHobbys(new ArrayList&amp;lt;String&amp;gt;(Arrays.asList(&quot;독서&quot;, &quot;음악감상&quot;, &quot;게임&quot;)));
//		myInfo.setBmiCalculator(bmiCalculator);

		String configLocation = &quot;classpath:applicationCTX.xml&quot;;
		AbstractApplicationContext ctx = new GenericXmlApplicationContext(configLocation);
		MyInfo myInfo = ctx.getBean(&quot;myInfo&quot;, MyInfo.class);
		myInfo.getInfo();
		ctx.close();
	}
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&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;255&quot; data-origin-height=&quot;135&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/m5pfq/btsyWfKzEDg/Fwkn1ztIe8EF03ZeZeCDEk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/m5pfq/btsyWfKzEDg/Fwkn1ztIe8EF03ZeZeCDEk/img.png&quot; data-alt=&quot;실행결과&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/m5pfq/btsyWfKzEDg/Fwkn1ztIe8EF03ZeZeCDEk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fm5pfq%2FbtsyWfKzEDg%2FFwkn1ztIe8EF03ZeZeCDEk%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;200&quot; height=&quot;106&quot; data-origin-width=&quot;255&quot; data-origin-height=&quot;135&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>2023-02 몰입형 SW 정규 교육</category>
      <category>DI</category>
      <category>eclipse</category>
      <category>IOC</category>
      <category>spring</category>
      <category>XML</category>
      <category>XML 기반 의존성 주입</category>
      <category>스프링</category>
      <category>의존성</category>
      <category>의존성주입</category>
      <category>이클립스</category>
      <author>gxxg</author>
      <guid isPermaLink="true">https://zero-talk.tistory.com/134</guid>
      <comments>https://zero-talk.tistory.com/134#entry134comment</comments>
      <pubDate>Mon, 23 Oct 2023 23:54:19 +0900</pubDate>
    </item>
    <item>
      <title>[Spring] 이클립스(eclipse) 자바 스프링 프로젝트 생성 방법</title>
      <link>https://zero-talk.tistory.com/133</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;Spring logo.png&quot; data-origin-width=&quot;441&quot; data-origin-height=&quot;114&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dsQRML/btsyV1SHcEM/Y5qTMhe5K2QkeeB0FmQhKk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dsQRML/btsyV1SHcEM/Y5qTMhe5K2QkeeB0FmQhKk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dsQRML/btsyV1SHcEM/Y5qTMhe5K2QkeeB0FmQhKk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdsQRML%2FbtsyV1SHcEM%2FY5qTMhe5K2QkeeB0FmQhKk%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;441&quot; height=&quot;114&quot; data-filename=&quot;Spring logo.png&quot; data-origin-width=&quot;441&quot; data-origin-height=&quot;114&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&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;&lt;span style=&quot;background-color: #fffa00;&quot;&gt;이클립스에 스프링 프로젝트 생성 방법&lt;/span&gt;&lt;/b&gt;을 알아보겠습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&quot;&gt;먼저 사용하려는 스프링 버전과 JDK 버전이 호환되는지 확인해야합니다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&quot;&gt;저는 이클립스 2021-03, JDK 11, 톰캣 9.0을 사용하겠습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&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;이클립스, JDK, 톰캣(선택) 버전 확인&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&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;&lt;span style=&quot;background-color: #fffa00;&quot;&gt;스프링은 3.0 버전을 많이 사용하고 있는데, &lt;/span&gt;&lt;/b&gt;&lt;b&gt;&lt;span style=&quot;background-color: #fffa00;&quot;&gt;JDK 11 버전을 권장&lt;/span&gt;&lt;/b&gt;합니다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;figure id=&quot;og_1698061216661&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;Download the Latest Java LTS Free&quot; data-og-description=&quot;Subscribe to Java SE and get the most comprehensive Java support available, with 24/7 global access to the experts.&quot; data-og-host=&quot;www.oracle.com&quot; data-og-source-url=&quot;https://www.oracle.com/java/technologies/downloads/#java11&quot; data-og-url=&quot;https://www.oracle.com/java/technologies/downloads/#java11&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/2P0ap/hyUgPjkmIG/TrzPkyrfUWcYKPVOTYMMI0/img.jpg?width=1200&amp;amp;height=628&amp;amp;face=0_0_1200_628,https://scrap.kakaocdn.net/dn/kI30J/hyUj8uLyz9/SkFHtXxJvZseocHkcGBqo1/img.jpg?width=1200&amp;amp;height=1200&amp;amp;face=0_0_1200_1200&quot;&gt;&lt;a href=&quot;https://www.oracle.com/java/technologies/downloads/#java11&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://www.oracle.com/java/technologies/downloads/#java11&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/2P0ap/hyUgPjkmIG/TrzPkyrfUWcYKPVOTYMMI0/img.jpg?width=1200&amp;amp;height=628&amp;amp;face=0_0_1200_628,https://scrap.kakaocdn.net/dn/kI30J/hyUj8uLyz9/SkFHtXxJvZseocHkcGBqo1/img.jpg?width=1200&amp;amp;height=1200&amp;amp;face=0_0_1200_1200');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;Download the Latest Java LTS Free&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;Subscribe to Java SE and get the most comprehensive Java support available, with 24/7 global access to the experts.&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;www.oracle.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&quot;&gt;스크롤을 내리면 JDK 11 버전을 다운받을 수 있습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&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;1630&quot; data-origin-height=&quot;839&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/esioxA/btsy3gVQQ5C/5oM8SHFMpsRYbKC6bqRgJ1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/esioxA/btsy3gVQQ5C/5oM8SHFMpsRYbKC6bqRgJ1/img.png&quot; data-alt=&quot;Windows JDK 11&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/esioxA/btsy3gVQQ5C/5oM8SHFMpsRYbKC6bqRgJ1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FesioxA%2Fbtsy3gVQQ5C%2F5oM8SHFMpsRYbKC6bqRgJ1%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;860&quot; height=&quot;443&quot; data-origin-width=&quot;1630&quot; data-origin-height=&quot;839&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;Windows JDK 11&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&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;&lt;span style=&quot;background-color: #fffa00;&quot;&gt;이클립스는 2021-03 버전&lt;/span&gt;&lt;/b&gt;을 사용하시면 됩니다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&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;figure id=&quot;og_1698059775655&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;2021-03 R | Eclipse Packages&quot; data-og-description=&quot;519 MB 377,619 DOWNLOADS Tools for developers working with Java and Web applications, including a Java IDE, tools for JavaScript, TypeScript, JavaServer Pages and Faces, Yaml, Markdown, Web Services, JPA and Data Tools, Maven and Gradle, Git, and more. Cli&quot; data-og-host=&quot;www.eclipse.org&quot; data-og-source-url=&quot;https://www.eclipse.org/downloads/packages/release/2021-03/r&quot; data-og-url=&quot;https://www.eclipse.org/downloads/packages/release/2021-03/r&quot; data-og-image=&quot;&quot;&gt;&lt;a href=&quot;https://www.eclipse.org/downloads/packages/release/2021-03/r&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://www.eclipse.org/downloads/packages/release/2021-03/r&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url();&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;2021-03 R | Eclipse Packages&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;519 MB 377,619 DOWNLOADS Tools for developers working with Java and Web applications, including a Java IDE, tools for JavaScript, TypeScript, JavaServer Pages and Faces, Yaml, Markdown, Web Services, JPA and Data Tools, Maven and Gradle, Git, and more. Cli&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;www.eclipse.org&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&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;654&quot; data-origin-height=&quot;936&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/QRvUc/btsyWiUIdzr/YsmT0cbDBHkwxETKGJB1Qk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/QRvUc/btsyWiUIdzr/YsmT0cbDBHkwxETKGJB1Qk/img.png&quot; data-alt=&quot;Help &amp;amp;gt; Marketplace&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/QRvUc/btsyWiUIdzr/YsmT0cbDBHkwxETKGJB1Qk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FQRvUc%2FbtsyWiUIdzr%2FYsmT0cbDBHkwxETKGJB1Qk%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;300&quot; height=&quot;429&quot; data-origin-width=&quot;654&quot; data-origin-height=&quot;936&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;Help &amp;gt; Marketplace&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&quot;&gt;✔️ 이클립스 상단 Help 탭에서 Marketplace를 클릭&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&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;1082&quot; data-origin-height=&quot;911&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bAcK2t/btsy4clobT9/tS2T0liGZCK1im44DUDkl0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bAcK2t/btsy4clobT9/tS2T0liGZCK1im44DUDkl0/img.png&quot; data-alt=&quot;Spring Tools 3 Add-On for Spring Tools 4 3.9.22.RELEASE Install&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bAcK2t/btsy4clobT9/tS2T0liGZCK1im44DUDkl0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbAcK2t%2Fbtsy4clobT9%2FtS2T0liGZCK1im44DUDkl0%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;650&quot; height=&quot;547&quot; data-origin-width=&quot;1082&quot; data-origin-height=&quot;911&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;Spring Tools 3 Add-On for Spring Tools 4 3.9.22.RELEASE Install&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&quot;&gt;✔️ spring을 검색하여 &lt;b&gt;Spring Tools 3 Add-On for Spring Tools 4 3.9.22.RELEASE&lt;/b&gt;를 설치합니다&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&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;1183&quot; data-origin-height=&quot;997&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/c3ePAf/btsyVhV65xs/FpntUYjZPLmZ83Zl6qR3Ok/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/c3ePAf/btsyVhV65xs/FpntUYjZPLmZ83Zl6qR3Ok/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/c3ePAf/btsyVhV65xs/FpntUYjZPLmZ83Zl6qR3Ok/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fc3ePAf%2FbtsyVhV65xs%2FFpntUYjZPLmZ83Zl6qR3Ok%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;650&quot; height=&quot;548&quot; data-origin-width=&quot;1183&quot; data-origin-height=&quot;997&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: center;&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;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&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;352&quot; data-origin-height=&quot;24&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/A6h65/btsyT10dWn7/u3sFG6QoD2NToUjRH8rmUk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/A6h65/btsyT10dWn7/u3sFG6QoD2NToUjRH8rmUk/img.png&quot; data-alt=&quot;다운로드 확인&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/A6h65/btsyT10dWn7/u3sFG6QoD2NToUjRH8rmUk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FA6h65%2FbtsyT10dWn7%2Fu3sFG6QoD2NToUjRH8rmUk%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;352&quot; height=&quot;24&quot; data-origin-width=&quot;352&quot; data-origin-height=&quot;24&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;다운로드 확인&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: center;&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;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&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;1308&quot; data-origin-height=&quot;394&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/kOvuf/btsyUP6gXft/FnbFvHYk4cktSLtFTVuTQ1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/kOvuf/btsyUP6gXft/FnbFvHYk4cktSLtFTVuTQ1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/kOvuf/btsyUP6gXft/FnbFvHYk4cktSLtFTVuTQ1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FkOvuf%2FbtsyUP6gXft%2FFnbFvHYk4cktSLtFTVuTQ1%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;650&quot; height=&quot;196&quot; data-origin-width=&quot;1308&quot; data-origin-height=&quot;394&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&quot;&gt;✔️ Install anyway 클릭&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 style=&quot;text-align: center;&quot; data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;  스프링(Spring) 프로젝트 생성&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&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;1275&quot; data-origin-height=&quot;1088&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/c2irpb/btsyYpFKoE7/0SAH0YO8Y2e37KRQMuBls0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/c2irpb/btsyYpFKoE7/0SAH0YO8Y2e37KRQMuBls0/img.png&quot; data-alt=&quot;File &amp;amp;gt; New &amp;amp;gt; Other ...&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/c2irpb/btsyYpFKoE7/0SAH0YO8Y2e37KRQMuBls0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fc2irpb%2FbtsyYpFKoE7%2F0SAH0YO8Y2e37KRQMuBls0%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;427&quot; data-origin-width=&quot;1275&quot; data-origin-height=&quot;1088&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;File &amp;gt; New &amp;gt; Other ...&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&quot;&gt;✔️ 이클립스 상단 File 탭에서 New &amp;gt; Other 클릭&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&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;873&quot; data-origin-height=&quot;805&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/malaI/btsy3fCzWCz/qEkDLCyJQRO2uQx0aAbQWK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/malaI/btsy3fCzWCz/qEkDLCyJQRO2uQx0aAbQWK/img.png&quot; data-alt=&quot;Spring Legacy Project&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/malaI/btsy3fCzWCz/qEkDLCyJQRO2uQx0aAbQWK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FmalaI%2Fbtsy3fCzWCz%2FqEkDLCyJQRO2uQx0aAbQWK%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;461&quot; data-origin-width=&quot;873&quot; data-origin-height=&quot;805&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;Spring Legacy Project&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&quot;&gt;✔️ Spring&amp;nbsp; &amp;gt; &lt;b&gt;Spring Legacy Project&lt;/b&gt; 선택&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&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;615&quot; data-origin-height=&quot;1002&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bSBgAF/btsyTZ89c1r/xTExKwV5UrZlmrNOKZQwk0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bSBgAF/btsyTZ89c1r/xTExKwV5UrZlmrNOKZQwk0/img.png&quot; data-alt=&quot;Spring MVC Project&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bSBgAF/btsyTZ89c1r/xTExKwV5UrZlmrNOKZQwk0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbSBgAF%2FbtsyTZ89c1r%2FxTExKwV5UrZlmrNOKZQwk0%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;815&quot; data-origin-width=&quot;615&quot; data-origin-height=&quot;1002&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;Spring MVC Project&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&quot;&gt;✔️ 프로젝트 이름을 설정하고 MVC 패턴을 공부하고 있기 때문에 &lt;b&gt;Spring MVC Project&lt;/b&gt; 클릭&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&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;870&quot; data-origin-height=&quot;559&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/lrmt6/btsy4qXU504/OQeayBLkReoqIbNgtUAC7k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/lrmt6/btsy4qXU504/OQeayBLkReoqIbNgtUAC7k/img.png&quot; data-alt=&quot;package&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/lrmt6/btsy4qXU504/OQeayBLkReoqIbNgtUAC7k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Flrmt6%2Fbtsy4qXU504%2FOQeayBLkReoqIbNgtUAC7k%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;321&quot; data-origin-width=&quot;870&quot; data-origin-height=&quot;559&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;package&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&quot;&gt;✔️ 패키지명 입력하고 Finish 클릭&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&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 style=&quot;background-color: #fffa00;&quot;&gt;&lt;b&gt;com.company.app&lt;/b&gt;&lt;/span&gt; 형식으로 입력해야 합니다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&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;377&quot; data-origin-height=&quot;535&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/xulZ9/btsy4jkkCiG/2tykFdlUL1i28gB9smfvXk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/xulZ9/btsy4jkkCiG/2tykFdlUL1i28gB9smfvXk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/xulZ9/btsy4jkkCiG/2tykFdlUL1i28gB9smfvXk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FxulZ9%2Fbtsy4jkkCiG%2F2tykFdlUL1i28gB9smfvXk%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;330&quot; height=&quot;468&quot; data-origin-width=&quot;377&quot; data-origin-height=&quot;535&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: center;&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;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 style=&quot;text-align: center;&quot; data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;  스프링 프로젝트 실행&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&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;1229&quot; data-origin-height=&quot;849&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/baKEbO/btsy4kXOV1x/FrCILjDRuanmsYgNaeblTK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/baKEbO/btsy4kXOV1x/FrCILjDRuanmsYgNaeblTK/img.png&quot; data-alt=&quot;Run on Server&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/baKEbO/btsy4kXOV1x/FrCILjDRuanmsYgNaeblTK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbaKEbO%2Fbtsy4kXOV1x%2FFrCILjDRuanmsYgNaeblTK%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;650&quot; height=&quot;449&quot; data-origin-width=&quot;1229&quot; data-origin-height=&quot;849&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;Run on Server&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: center;&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;gt; Run As &amp;gt; Run on Server&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&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;667&quot; data-origin-height=&quot;819&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bDD9uq/btsy3Q3YOt4/N8tyBGAExbbKxkDtsgx0z1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bDD9uq/btsy3Q3YOt4/N8tyBGAExbbKxkDtsgx0z1/img.png&quot; data-alt=&quot;톰캣 설정 후 실행&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bDD9uq/btsy3Q3YOt4/N8tyBGAExbbKxkDtsgx0z1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbDD9uq%2Fbtsy3Q3YOt4%2FN8tyBGAExbbKxkDtsgx0z1%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;614&quot; data-origin-width=&quot;667&quot; data-origin-height=&quot;819&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;톰캣 설정 후 실행&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: center;&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;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;Hello World!&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&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;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>2023-02 몰입형 SW 정규 교육</category>
      <category>eclipse</category>
      <category>JDK11</category>
      <category>spring</category>
      <category>Spring legacy Project</category>
      <category>Spring MVC Project</category>
      <category>Spring Project</category>
      <category>스프링</category>
      <category>스프링 생성</category>
      <category>이클립스</category>
      <category>톰캣</category>
      <author>gxxg</author>
      <guid isPermaLink="true">https://zero-talk.tistory.com/133</guid>
      <comments>https://zero-talk.tistory.com/133#entry133comment</comments>
      <pubDate>Mon, 23 Oct 2023 21:58:24 +0900</pubDate>
    </item>
    <item>
      <title>[Eclipse] The selection did not contain any resources that can run on a server 에러 해결</title>
      <link>https://zero-talk.tistory.com/132</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;이클립스에 오라클DB 연동하고 MVC 패턴을 공부하던 중에.. 수정한 게시판을 실행하려고 하니 좀전까지 잘 돌아가던 톰캣이?&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;The selection did not contain any resources that can run on a server&lt;/blockquote&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;685&quot; data-origin-height=&quot;214&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ciYyBF/btsyQLh18bF/BUE3OF6s9KGojLQTCCUMl1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ciYyBF/btsyQLh18bF/BUE3OF6s9KGojLQTCCUMl1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ciYyBF/btsyQLh18bF/BUE3OF6s9KGojLQTCCUMl1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FciYyBF%2FbtsyQLh18bF%2FBUE3OF6s9KGojLQTCCUMl1%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;600&quot; height=&quot;187&quot; data-origin-width=&quot;685&quot; data-origin-height=&quot;214&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;다시 우클릭해서 서버를 실행하려고 하니 run configurations이 뜬다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1545&quot; data-origin-height=&quot;955&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/buNR4e/btsyPwTnxBV/ZI3edrre1ncHbejW5tXbyK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/buNR4e/btsyPwTnxBV/ZI3edrre1ncHbejW5tXbyK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/buNR4e/btsyPwTnxBV/ZI3edrre1ncHbejW5tXbyK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbuNR4e%2FbtsyPwTnxBV%2FZI3edrre1ncHbejW5tXbyK%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;1545&quot; height=&quot;955&quot; data-origin-width=&quot;1545&quot; data-origin-height=&quot;955&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;해당 프로젝트를 우클릭하여 가장 아래에 있는 Properties를 클릭한다. (Alt + enter)&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;1410&quot; data-origin-height=&quot;904&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/0JZ6o/btsyTi0BkHC/i0CYHgCRUY998uVIXSlgb0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/0JZ6o/btsyTi0BkHC/i0CYHgCRUY998uVIXSlgb0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/0JZ6o/btsyTi0BkHC/i0CYHgCRUY998uVIXSlgb0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F0JZ6o%2FbtsyTi0BkHC%2Fi0CYHgCRUY998uVIXSlgb0%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;1410&quot; height=&quot;904&quot; data-origin-width=&quot;1410&quot; data-origin-height=&quot;904&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;위 사진과 같이 Project Facets에서 Dynamic Web Project를 체크한 후에 저장을 해주면 정상적으로 톰캣 서버를 실행할 수 있게 된다.&lt;/p&gt;</description>
      <category>벽돌깨기</category>
      <category>eclipse</category>
      <category>resources that can run on a server</category>
      <category>server</category>
      <category>서버</category>
      <category>서버에러</category>
      <category>이클립스</category>
      <category>톰캣</category>
      <category>톰캣에러</category>
      <author>gxxg</author>
      <guid isPermaLink="true">https://zero-talk.tistory.com/132</guid>
      <comments>https://zero-talk.tistory.com/132#entry132comment</comments>
      <pubDate>Fri, 20 Oct 2023 17:00:04 +0900</pubDate>
    </item>
    <item>
      <title>[JSP] 게시판 MVC 패턴 흐름도</title>
      <link>https://zero-talk.tistory.com/131</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;2023. 10. 18&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;JSP 게시판 MVC 패턴 흐름도&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;1527&quot; data-origin-height=&quot;535&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cA5JIA/btsyMcTu2ly/Fu4XeStMmwabFB3qRwskj0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cA5JIA/btsyMcTu2ly/Fu4XeStMmwabFB3qRwskj0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cA5JIA/btsyMcTu2ly/Fu4XeStMmwabFB3qRwskj0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcA5JIA%2FbtsyMcTu2ly%2FFu4XeStMmwabFB3qRwskj0%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;1527&quot; height=&quot;535&quot; data-origin-width=&quot;1527&quot; data-origin-height=&quot;535&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2176&quot; data-origin-height=&quot;759&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/NxBL5/btsyLLPmon5/8Qt9LGEyOGFvRP5OkoSqq0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/NxBL5/btsyLLPmon5/8Qt9LGEyOGFvRP5OkoSqq0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/NxBL5/btsyLLPmon5/8Qt9LGEyOGFvRP5OkoSqq0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FNxBL5%2FbtsyLLPmon5%2F8Qt9LGEyOGFvRP5OkoSqq0%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;2176&quot; height=&quot;759&quot; data-origin-width=&quot;2176&quot; data-origin-height=&quot;759&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1657&quot; data-origin-height=&quot;507&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dZcGWh/btsyH5OR8bu/HaqtmhkKkZrkcSDANtv6M0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dZcGWh/btsyH5OR8bu/HaqtmhkKkZrkcSDANtv6M0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dZcGWh/btsyH5OR8bu/HaqtmhkKkZrkcSDANtv6M0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdZcGWh%2FbtsyH5OR8bu%2FHaqtmhkKkZrkcSDANtv6M0%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;1657&quot; height=&quot;507&quot; data-origin-width=&quot;1657&quot; data-origin-height=&quot;507&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1672&quot; data-origin-height=&quot;532&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bA650s/btsyLrp4iEc/JzLyU5DHMSIeelJe1Iaolk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bA650s/btsyLrp4iEc/JzLyU5DHMSIeelJe1Iaolk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bA650s/btsyLrp4iEc/JzLyU5DHMSIeelJe1Iaolk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbA650s%2FbtsyLrp4iEc%2FJzLyU5DHMSIeelJe1Iaolk%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;1672&quot; height=&quot;532&quot; data-origin-width=&quot;1672&quot; data-origin-height=&quot;532&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1180&quot; data-origin-height=&quot;415&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/35fUl/btsyMdx5LyS/5FCJ1hfoDuCKWE49ZZkPI1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/35fUl/btsyMdx5LyS/5FCJ1hfoDuCKWE49ZZkPI1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/35fUl/btsyMdx5LyS/5FCJ1hfoDuCKWE49ZZkPI1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F35fUl%2FbtsyMdx5LyS%2F5FCJ1hfoDuCKWE49ZZkPI1%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;1180&quot; height=&quot;415&quot; data-origin-width=&quot;1180&quot; data-origin-height=&quot;415&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1167&quot; data-origin-height=&quot;420&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/q9gof/btsyIGBiXC1/rPYDMHJfdpPmw0YhQ2qbA0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/q9gof/btsyIGBiXC1/rPYDMHJfdpPmw0YhQ2qbA0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/q9gof/btsyIGBiXC1/rPYDMHJfdpPmw0YhQ2qbA0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fq9gof%2FbtsyIGBiXC1%2FrPYDMHJfdpPmw0YhQ2qbA0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1167&quot; height=&quot;420&quot; data-origin-width=&quot;1167&quot; data-origin-height=&quot;420&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;</description>
      <category>JSP</category>
      <category>board</category>
      <category>JSP</category>
      <category>MVC</category>
      <category>게시판</category>
      <author>gxxg</author>
      <guid isPermaLink="true">https://zero-talk.tistory.com/131</guid>
      <comments>https://zero-talk.tistory.com/131#entry131comment</comments>
      <pubDate>Thu, 19 Oct 2023 00:23:31 +0900</pubDate>
    </item>
    <item>
      <title>프로그래머스 2단계 : 주식가격 (Java 자바)</title>
      <link>https://zero-talk.tistory.com/130</link>
      <description>&lt;figure id=&quot;og_1697627117139&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;프로그래머스&quot; data-og-description=&quot;코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.&quot; data-og-host=&quot;programmers.co.kr&quot; data-og-source-url=&quot;https://school.programmers.co.kr/learn/courses/30/lessons/42584&quot; data-og-url=&quot;https://programmers.co.kr/&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/C1Ojv/hyUd1qHDU9/mda3efrJA2ZeGaVvsmJQK0/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630,https://scrap.kakaocdn.net/dn/bJaB8U/hyUgNYDuFg/YxJiIF6d3odrhX6KG7vGg1/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630&quot;&gt;&lt;a href=&quot;https://school.programmers.co.kr/learn/courses/30/lessons/42584&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://school.programmers.co.kr/learn/courses/30/lessons/42584&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/C1Ojv/hyUd1qHDU9/mda3efrJA2ZeGaVvsmJQK0/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630,https://scrap.kakaocdn.net/dn/bJaB8U/hyUgNYDuFg/YxJiIF6d3odrhX6KG7vGg1/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;프로그래머스&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;programmers.co.kr&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;문제&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt; 설명&lt;/span&gt;&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;초&amp;nbsp;단위로&amp;nbsp;기록된&amp;nbsp;주식가격이&amp;nbsp;담긴&amp;nbsp;배열&amp;nbsp;prices가&amp;nbsp;매개변수로&amp;nbsp;주어질&amp;nbsp;때,&amp;nbsp;가격이&amp;nbsp;떨어지지&amp;nbsp;않은&amp;nbsp;기간은&amp;nbsp;몇&amp;nbsp;초인지를&amp;nbsp;return&amp;nbsp;하도록&amp;nbsp;solution&amp;nbsp;함수를&amp;nbsp;완성하세요. &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;제한사항 &lt;/span&gt;&lt;/blockquote&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;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;prices의&amp;nbsp;각&amp;nbsp;가격은&amp;nbsp;1&amp;nbsp;이상&amp;nbsp;10,000&amp;nbsp;이하인&amp;nbsp;자연수입니다. &lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;prices의&amp;nbsp;길이는&amp;nbsp;2&amp;nbsp;이상&amp;nbsp;100,000&amp;nbsp;이하입니다.&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;입출력 예&lt;/span&gt;&lt;/blockquote&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;328&quot; data-origin-height=&quot;93&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/7wzCp/btsyMcy58KP/1kCF8xhtzLtfjZlxgsKZg0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/7wzCp/btsyMcy58KP/1kCF8xhtzLtfjZlxgsKZg0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/7wzCp/btsyMcy58KP/1kCF8xhtzLtfjZlxgsKZg0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F7wzCp%2FbtsyMcy58KP%2F1kCF8xhtzLtfjZlxgsKZg0%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;300&quot; height=&quot;85&quot; data-origin-width=&quot;328&quot; data-origin-height=&quot;93&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;&amp;nbsp;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;풀이&lt;/span&gt;&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1697627207682&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;class Solution {
    public int[] solution(int[] prices) {
        // 결과를 저장할 배열 answer를 선언합니다. 크기는 입력된 prices 배열의 크기와 같습니다.
        int[] answer = new int[prices.length];

        // 모든 prices 요소에 대해 반복합니다.
        for (int i = 0; i &amp;lt; prices.length; i++) {

            // 현재 시점(i) 이후의 모든 시점(j)에 대해 반복합니다.
            for (int j = i + 1; j &amp;lt; prices.length; j++) {

                // 현재 시점(i)에서 가격이 떨어지지 않은 기간을 증가시킵니다.
                answer[i]++;

                // 만약 현재 시점(i)의 가격이 다음 시점(j)의 가격보다 크다면, 즉, 가격이 떨어진다면
                if (prices[i] &amp;gt; prices[j])
                    break;  // 이후의 시점들을 확인할 필요 없이 반복문을 종료(break)합니다.
            }
        }

        // 각 요소별로 계산된 결과가 담긴 answer 배열을 반환합니다.
        return answer;
    }
}&lt;/code&gt;&lt;/pre&gt;</description>
      <category>  코딩테스트/programmers</category>
      <category>2단계</category>
      <category>java</category>
      <category>Lv2</category>
      <category>programmers</category>
      <category>자바</category>
      <category>주식가격</category>
      <category>코딩테스트</category>
      <category>코테</category>
      <category>프로그래머스</category>
      <author>gxxg</author>
      <guid isPermaLink="true">https://zero-talk.tistory.com/130</guid>
      <comments>https://zero-talk.tistory.com/130#entry130comment</comments>
      <pubDate>Wed, 18 Oct 2023 22:30:57 +0900</pubDate>
    </item>
    <item>
      <title>프로그래머스 2단계 : 다리를 지나는 트럭 (Java 자바)</title>
      <link>https://zero-talk.tistory.com/129</link>
      <description>&lt;figure id=&quot;og_1697626251930&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;프로그래머스&quot; data-og-description=&quot;코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.&quot; data-og-host=&quot;programmers.co.kr&quot; data-og-source-url=&quot;https://school.programmers.co.kr/learn/courses/30/lessons/42583&quot; data-og-url=&quot;https://programmers.co.kr/&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/ecwf6v/hyUdUZtWdJ/MBg3otzmRyq0p3AzABiKS1/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630,https://scrap.kakaocdn.net/dn/gjffZ/hyUdYHx9Iv/2MS4Lup1M2uYFcqE4PwcVk/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630&quot;&gt;&lt;a href=&quot;https://school.programmers.co.kr/learn/courses/30/lessons/42583&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://school.programmers.co.kr/learn/courses/30/lessons/42583&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/ecwf6v/hyUdUZtWdJ/MBg3otzmRyq0p3AzABiKS1/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630,https://scrap.kakaocdn.net/dn/gjffZ/hyUdYHx9Iv/2MS4Lup1M2uYFcqE4PwcVk/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;프로그래머스&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;programmers.co.kr&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;문제 설명&lt;/span&gt;&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;트럭&amp;nbsp;여러&amp;nbsp;대가&amp;nbsp;강을&amp;nbsp;가로지르는&amp;nbsp;일차선&amp;nbsp;다리를&amp;nbsp;정해진&amp;nbsp;순으로&amp;nbsp;건너려&amp;nbsp;합니다.&amp;nbsp;모든&amp;nbsp;트럭이&amp;nbsp;다리를&amp;nbsp;건너려면&amp;nbsp;최소&amp;nbsp;몇&amp;nbsp;초가&amp;nbsp;걸리는지&amp;nbsp;알아내야&amp;nbsp;합니다.&amp;nbsp;다리에는&amp;nbsp;트럭이&amp;nbsp;최대&amp;nbsp;bridge_length대&amp;nbsp;올라갈&amp;nbsp;수&amp;nbsp;있으며,&amp;nbsp;다리는&amp;nbsp;weight&amp;nbsp;이하까지의&amp;nbsp;무게를&amp;nbsp;견딜&amp;nbsp;수&amp;nbsp;있습니다.&amp;nbsp;단,&amp;nbsp;다리에&amp;nbsp;완전히&amp;nbsp;오르지&amp;nbsp;않은&amp;nbsp;트럭의&amp;nbsp;무게는&amp;nbsp;무시합니다. &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;예를&amp;nbsp;들어,&amp;nbsp;트럭&amp;nbsp;2대가&amp;nbsp;올라갈&amp;nbsp;수&amp;nbsp;있고&amp;nbsp;무게를&amp;nbsp;10kg까지&amp;nbsp;견디는&amp;nbsp;다리가&amp;nbsp;있습니다.&amp;nbsp;무게가&amp;nbsp;[7,&amp;nbsp;4,&amp;nbsp;5,&amp;nbsp;6]kg인&amp;nbsp;트럭이&amp;nbsp;순서대로&amp;nbsp;최단&amp;nbsp;시간&amp;nbsp;안에&amp;nbsp;다리를&amp;nbsp;건너려면&amp;nbsp;다음과&amp;nbsp;같이&amp;nbsp;건너야&amp;nbsp;합니다.&lt;/span&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-origin-width=&quot;684&quot; data-origin-height=&quot;400&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/EJlyC/btsyNtG5xLi/pyg0tCnp67kzulNA3cGHVK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/EJlyC/btsyNtG5xLi/pyg0tCnp67kzulNA3cGHVK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/EJlyC/btsyNtG5xLi/pyg0tCnp67kzulNA3cGHVK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FEJlyC%2FbtsyNtG5xLi%2Fpyg0tCnp67kzulNA3cGHVK%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;400&quot; height=&quot;234&quot; data-origin-width=&quot;684&quot; data-origin-height=&quot;400&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;따라서,&amp;nbsp;모든&amp;nbsp;트럭이&amp;nbsp;다리를&amp;nbsp;지나려면&amp;nbsp;최소&amp;nbsp;8초가&amp;nbsp;걸립니다. &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;solution&amp;nbsp;함수의&amp;nbsp;매개변수로&amp;nbsp;다리에&amp;nbsp;올라갈&amp;nbsp;수&amp;nbsp;있는&amp;nbsp;트럭&amp;nbsp;수&amp;nbsp;bridge_length,&amp;nbsp;다리가&amp;nbsp;견딜&amp;nbsp;수&amp;nbsp;있는&amp;nbsp;무게&amp;nbsp;weight,&amp;nbsp;트럭&amp;nbsp;별&amp;nbsp;무게&amp;nbsp;truck_weights가&amp;nbsp;주어집니다.&amp;nbsp;이때&amp;nbsp;모든&amp;nbsp;트럭이&amp;nbsp;다리를&amp;nbsp;건너려면&amp;nbsp;최소&amp;nbsp;몇&amp;nbsp;초가&amp;nbsp;걸리는지&amp;nbsp;return&amp;nbsp;하도록&amp;nbsp;solution&amp;nbsp;함수를&amp;nbsp;완성하세요.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;제한사항&lt;/span&gt;&lt;/blockquote&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;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;bridge_length는&amp;nbsp;1&amp;nbsp;이상&amp;nbsp;10,000&amp;nbsp;이하입니다. &lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;weight는&amp;nbsp;1&amp;nbsp;이상&amp;nbsp;10,000&amp;nbsp;이하입니다. &lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;truck_weights의&amp;nbsp;길이는&amp;nbsp;1&amp;nbsp;이상&amp;nbsp;10,000&amp;nbsp;이하입니다. &lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;모든&amp;nbsp;트럭의&amp;nbsp;무게는&amp;nbsp;1&amp;nbsp;이상&amp;nbsp;weight&amp;nbsp;이하입니다.&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;입출력 예&lt;/span&gt;&lt;/blockquote&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;735&quot; data-origin-height=&quot;196&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/AMtYS/btsyIGOK2wq/AJzgLIOlDtnB4J2G7mkuYk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/AMtYS/btsyIGOK2wq/AJzgLIOlDtnB4J2G7mkuYk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/AMtYS/btsyIGOK2wq/AJzgLIOlDtnB4J2G7mkuYk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FAMtYS%2FbtsyIGOK2wq%2FAJzgLIOlDtnB4J2G7mkuYk%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;450&quot; height=&quot;120&quot; data-origin-width=&quot;735&quot; data-origin-height=&quot;196&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;&amp;nbsp;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;풀이&lt;/span&gt;&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1697626489954&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import java.util.LinkedList;
import java.util.Queue;

class Solution {
    public int solution(int bridge_length, int weight, int[] truck_weights) {
        int time = 0; // 경과 시간을 저장할 변수
        int sum = 0; // 현재 다리 위의 트럭 무게 합계를 저장할 변수
        Queue&amp;lt;Integer&amp;gt; q = new LinkedList&amp;lt;&amp;gt;(); // 다리 위의 트럭 상태를 저장할 큐

        for(int truck : truck_weights){ // 각 트럭에 대해
            while(true){
                if(q.isEmpty()){ // 만약 다리가 비어있다면
                    q.offer(truck); // 현재 트럭을 다리에 올림
                    sum += truck;   // 무게 합계 업데이트 
                    time++;         // 시간 증가 
                    break;
                }else if(q.size() == bridge_length){  // 만약 다리가 꽉 차 있다면 
                    sum -= q.poll();  // 가장 먼저 들어온(=가장 앞에 있는) 트럭이 나감 -&amp;gt; 무게 합계 업데이트 
                }else{
                    if(sum + truck&amp;lt;=weight){   // 현재 트럭 포함 무게 합계가 weight 이하일 때 
                        q.offer(truck);  	// 현재 트럭을 다리 위에 올림  
                        sum +=truck;      	// 무게 합계 업데이트    
                        time++;           	// 시간 증가       
                        break;                     
                    }else{                 	// 현재 트럭 포함 무게 합계가 weight 초과일 때   
                        q.offer(0);    	// 위치 이동만 하고 (다음 타임으로 넘어감), 실제로는 아무것도 하지 않음  
                        time++;          	// 시간 증가   
                    }
                }
            } 
        }
        return time+bridge_length; 	// 마지막으로 들어온 트럭이 완전히 나갈 때까지의 추가적인 시간 (다리 길이만큼) 을 최종 결과에 추가하여 반환  
    }
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>  코딩테스트/programmers</category>
      <category>2단계</category>
      <category>java</category>
      <category>Lv2</category>
      <category>programmers</category>
      <category>다리를지나는트럭</category>
      <category>자바</category>
      <category>코딩테스트</category>
      <category>코테</category>
      <category>프로그래머스</category>
      <author>gxxg</author>
      <guid isPermaLink="true">https://zero-talk.tistory.com/129</guid>
      <comments>https://zero-talk.tistory.com/129#entry129comment</comments>
      <pubDate>Wed, 18 Oct 2023 19:55:31 +0900</pubDate>
    </item>
    <item>
      <title>프로그래머스 3단계 : 파괴되지 않은 건물 (Java 자바)</title>
      <link>https://zero-talk.tistory.com/128</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;figure id=&quot;og_1697624156626&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;프로그래머스&quot; data-og-description=&quot;코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.&quot; data-og-host=&quot;programmers.co.kr&quot; data-og-source-url=&quot;https://school.programmers.co.kr/learn/courses/30/lessons/92344&quot; data-og-url=&quot;https://programmers.co.kr/&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/IpxKA/hyUgJhBELQ/lmsQYHVrgEBR7KcyKsfmJk/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630,https://scrap.kakaocdn.net/dn/dkGDKx/hyUgPIUI9K/Z3lhvpKkJmLTPxqksKa3iK/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630&quot;&gt;&lt;a href=&quot;https://school.programmers.co.kr/learn/courses/30/lessons/92344&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://school.programmers.co.kr/learn/courses/30/lessons/92344&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/IpxKA/hyUgJhBELQ/lmsQYHVrgEBR7KcyKsfmJk/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630,https://scrap.kakaocdn.net/dn/dkGDKx/hyUgPIUI9K/Z3lhvpKkJmLTPxqksKa3iK/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;프로그래머스&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;programmers.co.kr&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;문제 설명&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;N&amp;nbsp;x&amp;nbsp;M&amp;nbsp;크기의&amp;nbsp;행렬&amp;nbsp;모양의&amp;nbsp;게임&amp;nbsp;맵이&amp;nbsp;있습니다.&amp;nbsp;이&amp;nbsp;맵에는&amp;nbsp;내구도를&amp;nbsp;가진&amp;nbsp;건물이&amp;nbsp;각&amp;nbsp;칸마다&amp;nbsp;하나씩&amp;nbsp;있습니다.&amp;nbsp;적은&amp;nbsp;이&amp;nbsp;건물들을&amp;nbsp;공격하여&amp;nbsp;파괴하려고&amp;nbsp;합니다.&amp;nbsp;건물은&amp;nbsp;적의&amp;nbsp;공격을&amp;nbsp;받으면&amp;nbsp;내구도가&amp;nbsp;감소하고&amp;nbsp;내구도가&amp;nbsp;0이하가&amp;nbsp;되면&amp;nbsp;파괴됩니다.&amp;nbsp;반대로,&amp;nbsp;아군은&amp;nbsp;회복&amp;nbsp;스킬을&amp;nbsp;사용하여&amp;nbsp;건물들의&amp;nbsp;내구도를&amp;nbsp;높이려고&amp;nbsp;합니다. &lt;br /&gt;&lt;br /&gt;적의&amp;nbsp;공격과&amp;nbsp;아군의&amp;nbsp;회복&amp;nbsp;스킬은&amp;nbsp;항상&amp;nbsp;직사각형&amp;nbsp;모양입니다. &lt;br /&gt;예를&amp;nbsp;들어,&amp;nbsp;아래&amp;nbsp;사진은&amp;nbsp;크기가&amp;nbsp;4&amp;nbsp;x&amp;nbsp;5인&amp;nbsp;맵에&amp;nbsp;내구도가&amp;nbsp;5인&amp;nbsp;건물들이&amp;nbsp;있는&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;1000&quot; data-origin-height=&quot;830&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/EPA0h/btsyNrCvos0/4kc3MC2AIlntqubKzdOhS1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/EPA0h/btsyNrCvos0/4kc3MC2AIlntqubKzdOhS1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/EPA0h/btsyNrCvos0/4kc3MC2AIlntqubKzdOhS1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FEPA0h%2FbtsyNrCvos0%2F4kc3MC2AIlntqubKzdOhS1%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;400&quot; height=&quot;332&quot; data-origin-width=&quot;1000&quot; data-origin-height=&quot;830&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;첫&amp;nbsp;번째로&amp;nbsp;적이&amp;nbsp;맵의&amp;nbsp;(0,0)부터&amp;nbsp;(3,4)까지&amp;nbsp;공격하여&amp;nbsp;4만큼&amp;nbsp;건물의&amp;nbsp;내구도를&amp;nbsp;낮추면&amp;nbsp;아래와&amp;nbsp;같은&amp;nbsp;상태가&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;1000&quot; data-origin-height=&quot;830&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/m9hue/btsyHb9Jmdg/Jjr5kqWAAMHtxmVaIQAAW0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/m9hue/btsyHb9Jmdg/Jjr5kqWAAMHtxmVaIQAAW0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/m9hue/btsyHb9Jmdg/Jjr5kqWAAMHtxmVaIQAAW0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fm9hue%2FbtsyHb9Jmdg%2FJjr5kqWAAMHtxmVaIQAAW0%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;400&quot; height=&quot;332&quot; data-origin-width=&quot;1000&quot; data-origin-height=&quot;830&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;두&amp;nbsp;번째로&amp;nbsp;적이&amp;nbsp;맵의&amp;nbsp;(2,0)부터&amp;nbsp;(2,3)까지&amp;nbsp;공격하여&amp;nbsp;2만큼&amp;nbsp;건물의&amp;nbsp;내구도를&amp;nbsp;낮추면&amp;nbsp;아래와&amp;nbsp;같이&amp;nbsp;4개의&amp;nbsp;건물이&amp;nbsp;파괴되는&amp;nbsp;상태가&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;1000&quot; data-origin-height=&quot;830&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/F1XHb/btsyIO0gyhX/h1htgaMKVGGJpzQvIxpqoK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/F1XHb/btsyIO0gyhX/h1htgaMKVGGJpzQvIxpqoK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/F1XHb/btsyIO0gyhX/h1htgaMKVGGJpzQvIxpqoK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FF1XHb%2FbtsyIO0gyhX%2Fh1htgaMKVGGJpzQvIxpqoK%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;400&quot; height=&quot;332&quot; data-origin-width=&quot;1000&quot; data-origin-height=&quot;830&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;세&amp;nbsp;번째로&amp;nbsp;아군이&amp;nbsp;맵의&amp;nbsp;(1,0)부터&amp;nbsp;(3,1)까지&amp;nbsp;회복하여&amp;nbsp;2만큼&amp;nbsp;건물의&amp;nbsp;내구도를&amp;nbsp;높이면&amp;nbsp;아래와&amp;nbsp;같이&amp;nbsp;2개의&amp;nbsp;건물이&amp;nbsp;파괴되었다가&amp;nbsp;복구되고&amp;nbsp;2개의&amp;nbsp;건물만&amp;nbsp;파괴되어있는&amp;nbsp;상태가&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;1000&quot; data-origin-height=&quot;830&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/blE09O/btsyHYvizjW/kKpC0g9Oz4naVg2lJpHUx1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/blE09O/btsyHYvizjW/kKpC0g9Oz4naVg2lJpHUx1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/blE09O/btsyHYvizjW/kKpC0g9Oz4naVg2lJpHUx1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FblE09O%2FbtsyHYvizjW%2FkKpC0g9Oz4naVg2lJpHUx1%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;400&quot; height=&quot;332&quot; data-origin-width=&quot;1000&quot; data-origin-height=&quot;830&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;마지막으로&amp;nbsp;적이&amp;nbsp;맵의&amp;nbsp;(0,1)부터&amp;nbsp;(3,3)까지&amp;nbsp;공격하여&amp;nbsp;1만큼&amp;nbsp;건물의&amp;nbsp;내구도를&amp;nbsp;낮추면&amp;nbsp;아래와&amp;nbsp;같이&amp;nbsp;8개의&amp;nbsp;건물이&amp;nbsp;더&amp;nbsp;파괴되어&amp;nbsp;총&amp;nbsp;10개의&amp;nbsp;건물이&amp;nbsp;파괴된&amp;nbsp;상태가&amp;nbsp;됩니다.&amp;nbsp;(내구도가&amp;nbsp;0&amp;nbsp;이하가&amp;nbsp;된&amp;nbsp;이미&amp;nbsp;파괴된&amp;nbsp;건물도,&amp;nbsp;공격을&amp;nbsp;받으면&amp;nbsp;계속해서&amp;nbsp;내구도가&amp;nbsp;하락하는&amp;nbsp;것에&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;1000&quot; data-origin-height=&quot;830&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/btaidu/btsyNq4FF32/oxUtaJzCBGvY3Ucq6g52U1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/btaidu/btsyNq4FF32/oxUtaJzCBGvY3Ucq6g52U1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/btaidu/btsyNq4FF32/oxUtaJzCBGvY3Ucq6g52U1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbtaidu%2FbtsyNq4FF32%2FoxUtaJzCBGvY3Ucq6g52U1%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;400&quot; height=&quot;332&quot; data-origin-width=&quot;1000&quot; data-origin-height=&quot;830&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;최종적으로&amp;nbsp;총&amp;nbsp;10개의&amp;nbsp;건물이&amp;nbsp;파괴되지&amp;nbsp;않았습니다. &lt;br /&gt;&lt;br /&gt;건물의&amp;nbsp;내구도를&amp;nbsp;나타내는&amp;nbsp;2차원&amp;nbsp;정수&amp;nbsp;배열&amp;nbsp;board와&amp;nbsp;적의&amp;nbsp;공격&amp;nbsp;혹은&amp;nbsp;아군의&amp;nbsp;회복&amp;nbsp;스킬을&amp;nbsp;나타내는&amp;nbsp;2차원&amp;nbsp;정수&amp;nbsp;배열&amp;nbsp;skill이&amp;nbsp;매개변수로&amp;nbsp;주어집니다.&amp;nbsp;적의&amp;nbsp;공격&amp;nbsp;혹은&amp;nbsp;아군의&amp;nbsp;회복&amp;nbsp;스킬이&amp;nbsp;모두&amp;nbsp;끝난&amp;nbsp;뒤&amp;nbsp;파괴되지&amp;nbsp;않은&amp;nbsp;건물의&amp;nbsp;개수를&amp;nbsp;return하는&amp;nbsp;solution함수를&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;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;제한사항&lt;/blockquote&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;1&amp;nbsp;&amp;le;&amp;nbsp;board의&amp;nbsp;행의&amp;nbsp;길이&amp;nbsp;(=&amp;nbsp;N)&amp;nbsp;&amp;le;&amp;nbsp;1,000 &lt;/li&gt;
&lt;li&gt;1&amp;nbsp;&amp;le;&amp;nbsp;board의&amp;nbsp;열의&amp;nbsp;길이&amp;nbsp;(=&amp;nbsp;M)&amp;nbsp;&amp;le;&amp;nbsp;1,000 &lt;/li&gt;
&lt;li&gt;1&amp;nbsp;&amp;le;&amp;nbsp;board의&amp;nbsp;원소&amp;nbsp;(각&amp;nbsp;건물의&amp;nbsp;내구도)&amp;nbsp;&amp;le;&amp;nbsp;1,000 &lt;/li&gt;
&lt;li&gt;1&amp;nbsp;&amp;le;&amp;nbsp;skill의&amp;nbsp;행의&amp;nbsp;길이&amp;nbsp;&amp;le;&amp;nbsp;250,000 &lt;/li&gt;
&lt;li&gt;skill의&amp;nbsp;열의&amp;nbsp;길이&amp;nbsp;=&amp;nbsp;6 &lt;/li&gt;
&lt;li&gt;skill의&amp;nbsp;각&amp;nbsp;행은&amp;nbsp;[type,&amp;nbsp;r1,&amp;nbsp;c1,&amp;nbsp;r2,&amp;nbsp;c2,&amp;nbsp;degree]형태를&amp;nbsp;가지고&amp;nbsp;있습니다. &lt;br /&gt;
&lt;ul style=&quot;list-style-type: circle;&quot; data-ke-list-type=&quot;circle&quot;&gt;
&lt;li&gt;type은&amp;nbsp;1&amp;nbsp;혹은&amp;nbsp;2입니다. &lt;br /&gt;
&lt;ul style=&quot;list-style-type: circle;&quot; data-ke-list-type=&quot;circle&quot;&gt;
&lt;li&gt;type이&amp;nbsp;1일&amp;nbsp;경우는&amp;nbsp;적의&amp;nbsp;공격을&amp;nbsp;의미합니다.&amp;nbsp;건물의&amp;nbsp;내구도를&amp;nbsp;낮춥니다. &lt;/li&gt;
&lt;li&gt;type이&amp;nbsp;2일&amp;nbsp;경우는&amp;nbsp;아군의&amp;nbsp;회복&amp;nbsp;스킬을&amp;nbsp;의미합니다.&amp;nbsp;건물의&amp;nbsp;내구도를&amp;nbsp;높입니다. &lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;(r1,&amp;nbsp;c1)부터&amp;nbsp;(r2,&amp;nbsp;c2)까지&amp;nbsp;직사각형&amp;nbsp;모양의&amp;nbsp;범위&amp;nbsp;안에&amp;nbsp;있는&amp;nbsp;건물의&amp;nbsp;내구도를&amp;nbsp;degree&amp;nbsp;만큼&amp;nbsp;낮추거나&amp;nbsp;높인다는&amp;nbsp;뜻입니다. &lt;br /&gt;
&lt;ul style=&quot;list-style-type: circle;&quot; data-ke-list-type=&quot;circle&quot;&gt;
&lt;li&gt;0&amp;nbsp;&amp;le;&amp;nbsp;r1&amp;nbsp;&amp;le;&amp;nbsp;r2&amp;nbsp;&amp;lt;&amp;nbsp;board의&amp;nbsp;행의&amp;nbsp;길이 &lt;/li&gt;
&lt;li&gt;0&amp;nbsp;&amp;le;&amp;nbsp;c1&amp;nbsp;&amp;le;&amp;nbsp;c2&amp;nbsp;&amp;lt;&amp;nbsp;board의&amp;nbsp;열의&amp;nbsp;길이 &lt;/li&gt;
&lt;li&gt;1&amp;nbsp;&amp;le;&amp;nbsp;degree&amp;nbsp;&amp;le;&amp;nbsp;500 &lt;/li&gt;
&lt;li&gt;type이&amp;nbsp;1이면&amp;nbsp;degree만큼&amp;nbsp;건물의&amp;nbsp;내구도를&amp;nbsp;낮춥니다. &lt;/li&gt;
&lt;li&gt;type이&amp;nbsp;2이면&amp;nbsp;degree만큼&amp;nbsp;건물의&amp;nbsp;내구도를&amp;nbsp;높입니다. &lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;건물은&amp;nbsp;파괴되었다가&amp;nbsp;회복&amp;nbsp;스킬을&amp;nbsp;받아&amp;nbsp;내구도가&amp;nbsp;1이상이&amp;nbsp;되면&amp;nbsp;파괴되지&amp;nbsp;않은&amp;nbsp;상태가&amp;nbsp;됩니다.&amp;nbsp;즉,&amp;nbsp;최종적으로&amp;nbsp;건물의&amp;nbsp;내구도가&amp;nbsp;1이상이면&amp;nbsp;파괴되지&amp;nbsp;않은&amp;nbsp;건물입니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;입출력 예&lt;/blockquote&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;1108&quot; data-origin-height=&quot;187&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/HSOTA/btsyHqMyIgw/SkYqZTHb1KWPlVViIHM33K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/HSOTA/btsyHqMyIgw/SkYqZTHb1KWPlVViIHM33K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/HSOTA/btsyHqMyIgw/SkYqZTHb1KWPlVViIHM33K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FHSOTA%2FbtsyHqMyIgw%2FSkYqZTHb1KWPlVViIHM33K%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;600&quot; height=&quot;101&quot; data-origin-width=&quot;1108&quot; data-origin-height=&quot;187&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&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;700&quot; data-origin-height=&quot;685&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bF23ho/btsyMfo0Lcb/ePpwK6D9vyK6obTpWT3C8k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bF23ho/btsyMfo0Lcb/ePpwK6D9vyK6obTpWT3C8k/img.png&quot; data-alt=&quot;초기 맵&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bF23ho/btsyMfo0Lcb/ePpwK6D9vyK6obTpWT3C8k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbF23ho%2FbtsyMfo0Lcb%2FePpwK6D9vyK6obTpWT3C8k%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;400&quot; height=&quot;391&quot; data-origin-width=&quot;700&quot; data-origin-height=&quot;685&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;번째로&amp;nbsp;적이&amp;nbsp;맵의&amp;nbsp;(1,1)부터&amp;nbsp;(2,2)까지&amp;nbsp;공격하여&amp;nbsp;4만큼&amp;nbsp;건물의&amp;nbsp;내구도를&amp;nbsp;낮추면&amp;nbsp;아래와&amp;nbsp;같은&amp;nbsp;상태가&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;700&quot; data-origin-height=&quot;685&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/biAeJs/btsyHdfpR0Z/uDsykRNmDDzURJs0ccXKt0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/biAeJs/btsyHdfpR0Z/uDsykRNmDDzURJs0ccXKt0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/biAeJs/btsyHdfpR0Z/uDsykRNmDDzURJs0ccXKt0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbiAeJs%2FbtsyHdfpR0Z%2FuDsykRNmDDzURJs0ccXKt0%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;400&quot; height=&quot;391&quot; data-origin-width=&quot;700&quot; data-origin-height=&quot;685&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;두&amp;nbsp;번째로&amp;nbsp;적이&amp;nbsp;맵의&amp;nbsp;(0,0)부터&amp;nbsp;(1,1)까지&amp;nbsp;공격하여&amp;nbsp;2만큼&amp;nbsp;건물의&amp;nbsp;내구도를&amp;nbsp;낮추면&amp;nbsp;아래와&amp;nbsp;같은&amp;nbsp;상태가&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;700&quot; data-origin-height=&quot;685&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/kU6i9/btsyNsVGMNC/Of1WtqRXGK1v42plC4yDUK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/kU6i9/btsyNsVGMNC/Of1WtqRXGK1v42plC4yDUK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/kU6i9/btsyNsVGMNC/Of1WtqRXGK1v42plC4yDUK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FkU6i9%2FbtsyNsVGMNC%2FOf1WtqRXGK1v42plC4yDUK%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;400&quot; height=&quot;391&quot; data-origin-width=&quot;700&quot; data-origin-height=&quot;685&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;마지막으로&amp;nbsp;아군이&amp;nbsp;맵의&amp;nbsp;(2,0)부터&amp;nbsp;(2,0)까지&amp;nbsp;회복하여&amp;nbsp;100만큼&amp;nbsp;건물의&amp;nbsp;내구도를&amp;nbsp;높이면&amp;nbsp;아래와&amp;nbsp;같은&amp;nbsp;상황이&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;700&quot; data-origin-height=&quot;685&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bCJWpE/btsyLHMRd7A/trpaOlTD8UzvJySkWuVwgK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bCJWpE/btsyLHMRd7A/trpaOlTD8UzvJySkWuVwgK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bCJWpE/btsyLHMRd7A/trpaOlTD8UzvJySkWuVwgK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbCJWpE%2FbtsyLHMRd7A%2FtrpaOlTD8UzvJySkWuVwgK%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;400&quot; height=&quot;391&quot; data-origin-width=&quot;700&quot; data-origin-height=&quot;685&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;총,&amp;nbsp;6개의&amp;nbsp;건물이&amp;nbsp;파괴되지&amp;nbsp;않았습니다.&amp;nbsp;따라서&amp;nbsp;6을&amp;nbsp;return&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;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;풀이&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1697624837838&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import java.util.*;

class Solution {
    public int solution(int[][] board, int[][] skill) {
        int answer = 0; // 파괴되지 않은 건물의 개수를 저장할 변수
        int N = board.length; // 게임 맵의 행 크기
        int M = board[0].length; // 게임 맵의 열 크기
        int preSum[][] = new int[N+1][M+1]; // 누적합 배열은 size가 1 더 큼
        
        for(int i=0; i&amp;lt;skill.length; i++){
            int type = skill[i][0];
            int r1 = skill[i][1], c1 = skill[i][2];
            int r2 = skill[i][3], c2 = skill[i][4];
            int degree = skill[i][5];
            
            if(type == 1){  // destroy : 내구도 감소 (공격)
                preSum[r1][c1] += -degree;
                preSum[r2+1][c1] += degree;
                preSum[r1][c2+1] += degree;
                preSum[r2+1][c2+1] += -degree;
            }else{ // repair : 내구도 증가 (회복)
                preSum[r1][c1] += degree;
                preSum[r2+1][c1] += -degree;
                preSum[r1][c2+1] += -degree;
                preSum[r2+1][c2+1] += degree;
            }
        }
        
        /* 가로 누적합 계산 */
        for(int i=0; i&amp;lt;N+1; i++){
            int sum = 0;
            for(int j=0; j&amp;lt;M+1; j++){
                sum += preSum[i][j];
                preSum[i][j] = sum;
            }
        }
        
        /* 세로 누적합 계산*/        
        for(int i=0; i&amp;lt;M; i++){
            int sum = 0;
            for(int j=0; j&amp;lt;N; j++){
                sum += preSum[j][i];
                preSum[j][i] = sum;
            }
        }
        
        /* count */
        for(int i=0; i&amp;lt;N; i++){
            for(int j=0; j&amp;lt;M; j++){
                if(preSum[i][j] + board[i][j] &amp;gt; 0 ) answer++;
            }
        }                   
        
        return answer;
    }
    
}&lt;/code&gt;&lt;/pre&gt;</description>
      <category>  코딩테스트/programmers</category>
      <category>3단계</category>
      <category>java</category>
      <category>LV3</category>
      <category>programmers</category>
      <category>자바</category>
      <category>코딩테스트</category>
      <category>코테</category>
      <category>파괴되지않은건물</category>
      <category>프로그래머스</category>
      <author>gxxg</author>
      <guid isPermaLink="true">https://zero-talk.tistory.com/128</guid>
      <comments>https://zero-talk.tistory.com/128#entry128comment</comments>
      <pubDate>Wed, 18 Oct 2023 19:27:46 +0900</pubDate>
    </item>
    <item>
      <title>[JSP] JSTL (JSP Standard Tag Library) 정리</title>
      <link>https://zero-talk.tistory.com/127</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;JSTL 개요&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&amp;gt; 일반사항&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;JCP (Java Community Process, 자바표준화 단체)에서 정한 표준&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;JSP 2.0에 포함&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;일반적으로 필요한 기능의 태그 라이브러리를 미리 구현함&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&amp;gt; JSTL 구성요소&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;CORE : 공통 필수 기능&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;XML : XML 문서 처리 관련 기능&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;I18N : 국제화 지원 관련 기능&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;SQL : JDBC를 이용한 DB 처리 기능&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;JSTL 라이브버리별 tablib URL과 Prefix&lt;/span&gt;&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%; height: 108px;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;width: 33.3333%; height: 20px; text-align: center;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&lt;b&gt;라이브러리 (Library)&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 20px; text-align: center;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&lt;b&gt;URI&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 20px; text-align: center;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&lt;b&gt;prefix&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 33.3333%; height: 17px; text-align: center;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;CORE&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 17px; text-align: center;&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #666666; text-align: start; font-family: 'Noto Sans Light';&quot;&gt; &lt;a href=&quot;http://java.sun.com/jsp/jstl/core&quot;&gt;http://java sun.com/jsp/jstl/core&lt;/a&gt; &lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 17px; text-align: center;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;c&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 33.3333%; height: 17px; text-align: center;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;XML&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 17px; text-align: center;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&lt;a href=&quot;http://java.sun.com/jsp/jstl/xml&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;http://java.sun.com/jsp/jstl/xml&lt;/a&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 17px; text-align: center;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;x&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 33.3333%; height: 17px; text-align: center;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;I18N&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 17px; text-align: center;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&lt;a href=&quot;http://java.sun.com/jsp/jstl/fmt&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;http://java.sun.com/jsp/jstl/fmt&lt;/a&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 17px; text-align: center;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;fmt&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 33.3333%; height: 17px; text-align: center;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;SQL&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 17px; text-align: center;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&lt;a href=&quot;http://java.sun.com/jsp/jstl/sql&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;http://java.sun.com/jsp/jstl/sql&lt;/a&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 17px; text-align: center;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;sql&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;width: 33.3333%; height: 20px; text-align: center;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;함수&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 20px; text-align: center;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&lt;a href=&quot;http://java.sun.com/jsp/jstl/funtions&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;http://java.sun.com/jsp/jstl/funtions&lt;/a&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 20px; text-align: center;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;fn&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&amp;gt; 페이지 지시어에서 사용법 (core)&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&amp;lt;%@ taglib prefix=&quot;c&quot; uri=&quot;http://java sun.com/jsp/jstl/core&quot; %&amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&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;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;JSTL 라이브러리&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&amp;gt; 수식, 흐름제어, URL을 통한 자원 접근 등 가장 일반적으로 필요한 기능으로 구성&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&amp;gt; 코어 라이브러리는 표현식, 반복처리, URL 관리 기능 등을 제공하므로 웹 애플리케이션을 개발할 때 유용하게 사용 가&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&amp;gt; core 태그는 반드시 알아두어야 함&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&amp;gt; core 태그 이외의 다른 라이브러리는 JSTL 이외에도 많이 개발되어 있으며 경우에 따라서는 직접 커스텀 태그로 구현하는 것이 좋을 수도 있음&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;# 코어&lt;/span&gt;&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%; height: 88px;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;width: 10.8139%; height: 20px; text-align: center;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&lt;b&gt;라이브러리&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 32.5581%; height: 20px; text-align: center;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&lt;b&gt;기능&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 31.628%; height: 20px; text-align: center;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&lt;b&gt;태그&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 25%; height: 20px; text-align: center;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&lt;b&gt;접두어&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 10.8139%; height: 68px; text-align: center;&quot; rowspan=&quot;4&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;코어&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 32.5581%; height: 17px; text-align: center;&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #666666; text-align: start; font-family: 'Noto Sans Light';&quot;&gt; General Purpose Actions (일반적인 것) &lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 31.628%; height: 17px; text-align: center;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;catch &lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;out &lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;remove &lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;set&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 25%; height: 68px; text-align: center;&quot; rowspan=&quot;4&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;c&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 32.5581%; height: 17px; text-align: center;&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #666666; text-align: start; font-family: 'Noto Sans Light';&quot;&gt; Conditional Actions (조건) &lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 31.628%; height: 17px; text-align: center;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;if &lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;choose &lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;when &lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;otherwise&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 32.5581%; height: 17px; text-align: center;&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #666666; text-align: start; font-family: 'Noto Sans Light';&quot;&gt; Iterator Actions (반복) &lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 31.628%; height: 17px; text-align: center;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;forEach &lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;forTokens&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 32.5581%; height: 17px; text-align: center;&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #666666; text-align: start; font-family: 'Noto Sans Light';&quot;&gt; URL Related Actions (URL 관련) &lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 31.628%; height: 17px; text-align: center;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;import &lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;redirect &lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;url &lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;param&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;# I18N(국제화)&lt;/span&gt;&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 99.6511%; height: 93px;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;width: 25%; height: 20px; text-align: center;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&lt;b&gt;라이브러리&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 25%; height: 20px; text-align: center;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&lt;b&gt;기능&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 25%; height: 20px; text-align: center;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&lt;b&gt;태그&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 25%; height: 20px; text-align: center;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&lt;b&gt;접두어&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 25%; height: 31px; text-align: center;&quot; rowspan=&quot;2&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;I18N(국제화)&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 25%; height: 17px; text-align: center;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;Locale&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 25%; height: 17px; text-align: center;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;setLocale&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 25%; height: 31px; text-align: center;&quot; rowspan=&quot;2&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;fmt&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 14px;&quot;&gt;
&lt;td style=&quot;width: 25%; height: 14px; text-align: center;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;Number&amp;nbsp;and&amp;nbsp;DateFormatting&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 25%; height: 14px; text-align: center;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;formatNumber&amp;nbsp;formatDate&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;JSTL 수식 언어&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&amp;gt; EL (Expression Language) 지원&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&amp;gt; 간단한 연산식 사용 가능&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&amp;gt; 산술 연산자&lt;/span&gt;&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 33.0233%; height: 158px;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr style=&quot;height: 11px;&quot;&gt;
&lt;td style=&quot;width: 50%; height: 11px; text-align: center;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&lt;b&gt;연산자&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 50%; height: 11px; text-align: center;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&lt;b&gt;기능&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 50%; height: 17px; text-align: center;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;+&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 50%; height: 17px; text-align: center;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;더하기&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 50%; height: 17px; text-align: center;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;-&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 50%; height: 17px; text-align: center;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;빼기&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 50%; height: 17px; text-align: center;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;*&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 50%; height: 17px; text-align: center;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;곱하기&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 50%; height: 17px; text-align: center;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;/ or div&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 50%; height: 17px; text-align: center;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;나누기&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 50%; height: 17px; text-align: center;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;% or mod&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 50%; height: 17px; text-align: center;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;몫&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;태그 모음&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&amp;lt;c:set&amp;gt; 태그&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;변수를 설정하거나 객체의 멤버변수 값을 설정할 때 사용하는 태그&lt;/span&gt;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&amp;lt;c:set value=&quot;값&quot; var=&quot;변수명&quot; /&amp;gt;&lt;/span&gt;&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;이렇게 선언하고나면 ${변수명} 형식으로 사용할 수 있다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;scope=&quot;session&quot;을 추가하면 다른 영역에 저장이 가능하다. scopr의 경우 default 값은 &quot;page&quot;이다.&lt;/span&gt;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&amp;lt;c:set value=&quot;값&quot; var=&quot;변수명&quot; scope=&quot;page&quot; 또는 &quot;session&quot; 또는 &quot;request&quot; 또는 &quot;application&quot; /&amp;gt;&lt;/span&gt;&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;해당 변수는 page 영역의 속성으로 선언되기 때문에 내부적으로 자바 변수로 선언되는 것이 아니다. 따라서 &amp;lt;%= 변수이름&amp;gt; 형태로는 출력이 불가하다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&amp;lt;c:out&amp;gt; 태그&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;변수 내용을 출력할 때 사용하는 태그&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;EL 태그로도 출력할 수 있지만 태그가 포함된 변수를 escapeXml 항목을 true 또는 false로 지정하여 태그를 포함해서 출력할지 적용해서 출력할지 결정할 수 있다.&lt;/span&gt;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&amp;lt;c:out value=&quot;값&quot; var=&quot;변수명&quot; /&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;- 태그 바디가 없는 경우&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&amp;lt;c:out value=&quot;${값}&quot; escaprXml=&quot;true&quot; 또는 &quot;false&quot; /&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;- 태그 바디가 있는 경우&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&amp;lt;c:out value=&quot;${값}&quot; escaprXml=&quot;true&quot; 또는 &quot;false&quot; &amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;default value (value가 없을 때 출력될 기본 값)&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&amp;lt;/c:out&amp;gt;&lt;/span&gt;&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&amp;lt;c:remove&amp;gt; 태그&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&lt;span style=&quot;&quot;&gt;변수를 제거할 때 사용하는 태그&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&amp;lt;c:remove var=&quot;변수명&quot; /&amp;gt;&lt;/span&gt;&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&lt;span style=&quot;&quot;&gt;해당 이름을 가진 변수가 제거된다. 여기서 주의할 부분은, 이렇게 선언할 경우 모든 scope에서 해당 이름의 변수가 제거되므로 특정 영역의 변수만 제거하고 싶을 땐 아래와같이 scope를 지정해준다.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&amp;lt;c:remove var=&quot;변수명&quot; scope=&quot;request&quot; /&amp;gt;&lt;/span&gt;&lt;/blockquote&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;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&amp;lt;c:if test=&quot;true&quot; 또는 &quot;false&quot;&amp;gt; 태그&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;출력 태그와 비슷하지만 조건이 있다. test 안의 내용이 true이냐 false이냐에 따라 내용을 출력하거나 출력하지 않는다. 자바의 if문의 비슷하지만 else문을 지원하지 않는다.&lt;/span&gt;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;- 바디 내용이 없는 경우&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&amp;lt;c:if test=&quot;test&quot; var=&quot;변수명&quot; scope=&quot;page&quot; 또는 &quot;session&quot; 또는 &quot;request&quot; 또는 &quot;application&quot; /&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;- 바디 내용이 있는 경우&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&amp;lt;c:if test=&quot;test&quot; var=&quot;변수명&quot; scope=&quot;page&quot; 또는 &quot;session&quot; 또는 &quot;request&quot; 또는 &quot;application&quot; &amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;body content&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&amp;lt;/c:if&amp;gt;&lt;/span&gt;&lt;/blockquote&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;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&amp;lt;c:choose&amp;gt;, &amp;lt;c:when&amp;gt;, &amp;lt;c:otherwise&amp;gt; 태그&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;세 태그는 함께 사용된다. 자바의 if ~ else if문, switch문과 비슷하다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&amp;lt;c:choose&amp;gt; 태그 내에 &amp;lt;c:when&amp;gt; 태그를 여러 개 사용할 수 있다.&lt;/span&gt;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&amp;lt;c:choose&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;c:when test=&quot;${1 &amp;gt; 0}&quot;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 1은 0보다 크다&amp;lt;br&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;/c:when&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;c:when test=&quot;${2 &amp;gt; 1}&quot;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 2은 1보다 크다&amp;lt;br&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;/c:when&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;c:otherwise&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 대부분 숫자는 0보다 크다&amp;lt;br&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;/c:otherwise&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&amp;lt;/c:choose&amp;gt;&lt;/span&gt;&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&amp;lt;c:forEach&amp;gt; 태그&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;반복문과 관련된 태그로 자바의 for문과 유사하다.&lt;/span&gt;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;- 컬렉션 객체의 크기 만큼 반복&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&amp;lt;c:forEach&amp;nbsp;[var=&quot;varName&quot;]&amp;nbsp;items=&quot;collection&quot;&amp;nbsp;[varStatus=&quot;varStatusName&quot;]&amp;nbsp; &lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;[begin=&quot;begin&quot;]&amp;nbsp;[end=&quot;end&quot;]&amp;nbsp;[step=&quot;step&quot;]&amp;gt; &lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;body&amp;nbsp;content &lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&amp;lt;/c:forEach&amp;gt; &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;2. 지정된 횟수 반복&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&amp;lt;c:forEach&amp;nbsp;[var=&quot;varName&quot;]&amp;nbsp;[varStatus=&quot;varStatusName&quot;]&amp;nbsp;begin=&quot;begin&quot;&amp;nbsp;end=&quot;end&quot;&amp;nbsp;[step=&quot;step&quot;]&amp;gt; &lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;body&amp;nbsp;content &lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&amp;lt;/c:forEach&amp;gt;&lt;/span&gt;&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&amp;lt;c:forTokens&amp;gt; 태그&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;문자열에 포함된 토큰을 분리해 각각의 토큰에 대해 반복 처리를 수행하도록 하는 태그이다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&amp;lt;c:forEach&amp;gt;와 비슷하게 자바의 for문과 유사하지만, String/Tokenizer 클래스 기능을 제공한다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;자바에서의 String/Tokenizer 클래스는 문자열로부터 공백이나 '-' 등 특정 구분자를 기준으로 문자열을 분할하는 기능을 제공하는 클래스이다.&lt;/span&gt;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&amp;lt;c:forTokens&amp;nbsp;var=&quot;temp&quot;&amp;nbsp;items=&quot;aaa&amp;nbsp;bbb&amp;nbsp;ccc&quot;&amp;nbsp;delims=&quot;&amp;nbsp;&quot;&amp;gt; &lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;${temp}&amp;lt;br&amp;gt; &lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&amp;lt;/c:forTokens&amp;gt;&lt;/span&gt;&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;날짜 관련 태그&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&lt;span style=&quot;&quot;&gt;type에 date, time 둘 중 하나만 쓰면 하나만 출력됨.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&amp;lt;fmt:formatDate value=&quot;&amp;lt;%=new Date() %&amp;gt;&quot; type=&quot;both&quot; /&amp;gt;&lt;/span&gt;&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;숫자 관련 태그&lt;/span&gt;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;- 세 자리마다 끊어서 쉼표 출력&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&amp;lt;fmt:formatNumber value=&quot;12345678&quot; groupingUsed=&quot;true&quot;/&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;- 소수점 둘째 자리까지만 출력&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&amp;lt;fmt:formatNumber value=&quot;3.141592&quot; pattern=&quot;#.##&quot;/&amp;gt;&lt;/span&gt;&lt;/blockquote&gt;</description>
      <category>JSP</category>
      <category>&amp;lt;c:choose&amp;gt;</category>
      <category>&amp;lt;c:forEach&amp;gt; 태그</category>
      <category>&amp;lt;c:if test=&amp;quot;true|false&amp;quot;&amp;gt; 태그</category>
      <category>&amp;lt;c:otherwise&amp;gt; 태그</category>
      <category>&amp;lt;c:out&amp;gt; 태그</category>
      <category>&amp;lt;c:remove&amp;gt; 태그</category>
      <category>&amp;lt;c:set&amp;gt; 태그</category>
      <category>&amp;lt;c:when&amp;gt;</category>
      <category>JSP</category>
      <category>jstl</category>
      <author>gxxg</author>
      <guid isPermaLink="true">https://zero-talk.tistory.com/127</guid>
      <comments>https://zero-talk.tistory.com/127#entry127comment</comments>
      <pubDate>Tue, 17 Oct 2023 20:31:54 +0900</pubDate>
    </item>
    <item>
      <title>[SpringBoot] Session 및 DB에 UUID 저장</title>
      <link>https://zero-talk.tistory.com/126</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;오늘 할 건 DB에 회의룸ID, 사용자 no, sysdate, 파일 경로를 저장하는 걸 해볼 거다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;일단 지난 포스팅에서 상대 파일 경로를 저장하는 법을 했으니 오늘은 UUID를 생성해서 넣을 거다.&lt;/span&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1696830719873&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;[SpringBoot &amp;amp; Vue.js] Axios post 요청&quot; data-og-description=&quot;나는 DB를 다뤄본 적도 없고 네트워크나 서버 등의 배경 지식이 없을 뿐더러... 이번 프로젝트를 하면서 처음으로 백엔드를 맡았는데, DB 관리와 더불어 백엔드 프론트 간의 요청 및 응답까지 하&quot; data-og-host=&quot;zero-talk.tistory.com&quot; data-og-source-url=&quot;https://zero-talk.tistory.com/125&quot; data-og-url=&quot;https://zero-talk.tistory.com/125&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/UEgCm/hyT9xWeHZS/HdPaxyLqBOrzBKBw6Ydk1k/img.png?width=610&amp;amp;height=187&amp;amp;face=0_0_610_187,https://scrap.kakaocdn.net/dn/dFC9We/hyT9HEwYu7/kE9DNyoyMAqZol4qfE9o91/img.png?width=610&amp;amp;height=187&amp;amp;face=0_0_610_187&quot;&gt;&lt;a href=&quot;https://zero-talk.tistory.com/125&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://zero-talk.tistory.com/125&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/UEgCm/hyT9xWeHZS/HdPaxyLqBOrzBKBw6Ydk1k/img.png?width=610&amp;amp;height=187&amp;amp;face=0_0_610_187,https://scrap.kakaocdn.net/dn/dFC9We/hyT9HEwYu7/kE9DNyoyMAqZol4qfE9o91/img.png?width=610&amp;amp;height=187&amp;amp;face=0_0_610_187');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;[SpringBoot &amp;amp; Vue.js] Axios post 요청&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;나는 DB를 다뤄본 적도 없고 네트워크나 서버 등의 배경 지식이 없을 뿐더러... 이번 프로젝트를 하면서 처음으로 백엔드를 맡았는데, DB 관리와 더불어 백엔드 프론트 간의 요청 및 응답까지 하&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;zero-talk.tistory.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; background-color: #c0d1e7;&quot;&gt;UUID 생성 확인&lt;/span&gt;&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;일단 기본적으로 UUID 생성이 잘 먹히는지부터 확인하려고 한다. UUID는 출시년도에 따라 총 5개의 버전이 있는데, 각자 상황에 맞는 버전을 쓰면 된다. 나는 보안성이 높고 생산속도가 빠른 4버전을 쓸 거다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;기존에 만들어줬던 상대 파일 경로 저장하는 파일에 버튼 하나를 더 추가해 클릭하면 uuid가 생성되도록 했다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1696832460132&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;lt;!DOCTYPE html&amp;gt;
&amp;lt;html&amp;gt;
  &amp;lt;head&amp;gt;
    &amp;lt;title&amp;gt;mp3 file path save&amp;lt;/title&amp;gt;
    &amp;lt;script src=&quot;https://cdn.jsdelivr.net/npm/axios/dist/axios.min.js&quot;&amp;gt;&amp;lt;/script&amp;gt;
  &amp;lt;/head&amp;gt;
  &amp;lt;body&amp;gt;
    &amp;lt;h1&amp;gt;mp3 file path save&amp;lt;/h1&amp;gt;
    &amp;lt;form onsubmit=&quot;event.preventDefault(); uploadAndSavePath();&quot;&amp;gt;
      &amp;lt;input type=&quot;file&quot; id=&quot;file&quot; name=&quot;file&quot; accept=&quot;.mp3&quot; /&amp;gt;
      &amp;lt;button type=&quot;submit&quot;&amp;gt;경로 저장&amp;lt;/button&amp;gt;
    &amp;lt;/form&amp;gt;
    &amp;lt;button onclick=&quot;generateUUID()&quot;&amp;gt;uuid&amp;lt;/button&amp;gt;
    &amp;lt;script type=&quot;text/javascript&quot;&amp;gt;
      function uploadAndSavePath() {
        var formData = new FormData();
        formData.append(&quot;file&quot;, document.getElementById(&quot;file&quot;).files[0]);

        axios
          .post(&quot;/saveAudioFilePath&quot;, formData)
          .then(function (response) {
            alert(&quot;File uploaded and path saved successfully!&quot;);
          })
          .catch(function (error) {
            alert(&quot;Failed to upload file or save path!&quot;);
          });
      }

      function generateUUID() {
        axios
          .get(&quot;/generateUUID&quot;)
          .then(function (response) {
            alert(response.data);
          })
          .catch(function (error) {
            console.log(error);
          });
      }
    &amp;lt;/script&amp;gt;
  &amp;lt;/body&amp;gt;
&amp;lt;/html&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;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;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;GET 요청을 처리하는 MeetingRoomTest 클래스 생성&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1696832507793&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;package com.gmovie.gmovie.controller;

import java.util.UUID;

import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class MeetingRoomTest {

    @GetMapping(&quot;/generateUUID&quot;)
    public String generateUUID() {
        UUID uuid4 = UUID.randomUUID();
        return &quot;Version 4 UUID: &quot; + uuid4;
    }
}&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&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;459&quot; data-origin-height=&quot;147&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bfxv7J/btsxSyP45we/6y7ZHRrBTTiOF2fliRkcF0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bfxv7J/btsxSyP45we/6y7ZHRrBTTiOF2fliRkcF0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bfxv7J/btsxSyP45we/6y7ZHRrBTTiOF2fliRkcF0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbfxv7J%2FbtsxSyP45we%2F6y7ZHRrBTTiOF2fliRkcF0%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;350&quot; height=&quot;112&quot; data-origin-width=&quot;459&quot; data-origin-height=&quot;147&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;이제 uuid라는 버튼을 누르면 랜덤 문자열이 생성되어야 한다.&lt;/span&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-origin-width=&quot;661&quot; data-origin-height=&quot;187&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bSHtK4/btsxp8so2aS/iAYDgBbS7liwTkQaM5ls51/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bSHtK4/btsxp8so2aS/iAYDgBbS7liwTkQaM5ls51/img.png&quot; data-alt=&quot;1 딸깍&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bSHtK4/btsxp8so2aS/iAYDgBbS7liwTkQaM5ls51/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbSHtK4%2Fbtsxp8so2aS%2FiAYDgBbS7liwTkQaM5ls51%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;350&quot; height=&quot;99&quot; data-origin-width=&quot;661&quot; data-origin-height=&quot;187&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;1 딸깍&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;661&quot; data-origin-height=&quot;189&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bTX2fW/btsxsR4q1wv/8ROJ0aYwfKHH7LNlnDLZtK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bTX2fW/btsxsR4q1wv/8ROJ0aYwfKHH7LNlnDLZtK/img.png&quot; data-alt=&quot;2 딸깍&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bTX2fW/btsxsR4q1wv/8ROJ0aYwfKHH7LNlnDLZtK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbTX2fW%2FbtsxsR4q1wv%2F8ROJ0aYwfKHH7LNlnDLZtK%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;350&quot; height=&quot;100&quot; data-origin-width=&quot;661&quot; data-origin-height=&quot;189&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;2 딸깍&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;663&quot; data-origin-height=&quot;187&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ECt5e/btsxsTHYfDm/b5iLtBGfCoKLqT43GcLRV0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ECt5e/btsxsTHYfDm/b5iLtBGfCoKLqT43GcLRV0/img.png&quot; data-alt=&quot;3 딸깍&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ECt5e/btsxsTHYfDm/b5iLtBGfCoKLqT43GcLRV0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FECt5e%2FbtsxsTHYfDm%2Fb5iLtBGfCoKLqT43GcLRV0%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;350&quot; height=&quot;99&quot; data-origin-width=&quot;663&quot; data-origin-height=&quot;187&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;3 딸깍&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;세 번을 눌렀고 각각 다른 문자열이 생성된다. 일단 기본적인 테스트는 완료&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;데이터의 용량을 줄이기 위해 하이픈을 제거했다.&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1696839795156&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;package com.gmovie.gmovie.controller;

import java.util.UUID;

import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class MeetingRoomTest {

    @GetMapping(&quot;/generateUUID&quot;)
    public String generateUUID() {
        UUID uuid4 = UUID.randomUUID();
        String noHyphenUUID = uuid4.toString().replace(&quot;-&quot;, &quot;&quot;);
        return &quot;METTING ROOM ID: &quot; + noHyphenUUID;
    }
}&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; background-color: #c0d1e7;&quot;&gt;세션에 UUID 저장 후 DB에 저장&lt;/span&gt;&lt;/blockquote&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;세션에 UUID를 저장하고 해당 UUID를 DB에 저장하려면 세션과 DB의 연동이 필요하다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;스프링부트에서는 HttpSession을 이용하여 세션을 관리할 수 있기 때문에 HttpSession과 JdbcTemplate을 이용하여 UUID를 생성하고 세션 및 DB에 저장할 것이다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;① HttpSession 객체는 Spring MVC가 요청 처리 메소드의 매개변수로 자동 제공함&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;② setMaxInactiveInterval(30 * 60)으로 세션이 최대 30분동안 유지되도록 설정함&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;③ JdbcTemplate 객체를 사용하여 생성된 UUID를 DB의 SUMMARY 테이블의 MITTING_ID 컬럼에 삽입하는 쿼리 실행&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1696840854936&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;package com.gmovie.gmovie.controller;

import java.util.UUID;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

import jakarta.servlet.http.HttpSession;

@RestController
public class MeetingRoomTest {

    @Autowired
    JdbcTemplate jdbcTemplate;

    @GetMapping(&quot;/generateUUID&quot;)
    public String generateUUID(HttpSession session) {
        UUID uuid4 = UUID.randomUUID();
        String noHyphenUUID = uuid4.toString().replace(&quot;-&quot;, &quot;&quot;);

        // Store the generated UUID in session
        session.setAttribute(&quot;MeetingRoomTest&quot;, noHyphenUUID);

        // Set the maximum inactive interval to 30 minutes.
        session.setMaxInactiveInterval(30 * 60);

        // Save the generated UUID into database's METTING table.
        jdbcTemplate.update(&quot;INSERT INTO SUMMARY (METTING_ID, NO) VALUES (?, ?)&quot;, noHyphenUUID, 1);

        return &quot;METTING ROOM ID: &quot; + noHyphenUUID;
    }
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;472&quot; data-origin-height=&quot;162&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dHm6im/btsxsnWFmc3/o7voS0Z8kkOnxpJg6gc2PK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dHm6im/btsxsnWFmc3/o7voS0Z8kkOnxpJg6gc2PK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dHm6im/btsxsnWFmc3/o7voS0Z8kkOnxpJg6gc2PK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdHm6im%2FbtsxsnWFmc3%2Fo7voS0Z8kkOnxpJg6gc2PK%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;350&quot; height=&quot;120&quot; data-origin-width=&quot;472&quot; data-origin-height=&quot;162&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;이제 다시 버튼을 클릭하면&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;780&quot; data-origin-height=&quot;117&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bXZyAx/btsxqsdlkjL/DtfMMsoQGe98ReUinkiwP0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bXZyAx/btsxqsdlkjL/DtfMMsoQGe98ReUinkiwP0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bXZyAx/btsxqsdlkjL/DtfMMsoQGe98ReUinkiwP0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbXZyAx%2FbtsxqsdlkjL%2FDtfMMsoQGe98ReUinkiwP0%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;75&quot; data-origin-width=&quot;780&quot; data-origin-height=&quot;117&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;DB에 세션에 저장된 UUID 값이 삽입된다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;세션 유지 상태일 때 DB에 여러 데이터 삽입&lt;/span&gt;&lt;/blockquote&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;이제 세션 유지 상태일 때 파일을 업로드 하면 MEETING_ID와 RECORDING에 값이 삽입되게끔 하면 된다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;원래는 시퀀스(SEQUENCE) 값을 기준으로 하여 MEETING_ID와 RECORDING 데이터를 삽입해야하는데, 현재 로그인이 구현되지 않았으므로.. 임의로 MEETING_ID를 기준으로 하여&amp;nbsp; &lt;span style=&quot;color: #333333; text-align: left;&quot;&gt;RECORDING에 데이터를 삽입할 것이다.&lt;/span&gt;&lt;span style=&quot;color: #333333; text-align: left;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;기존의 SaveAudioFilePath.java 파일에서 파일을 업로드 할 때마다 세션 UUID를 가져와서 사용자가 업로드한 파일의 경로를 DB에 저장하는 기능을 수행하도록 했다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1696848370483&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;// SaveAudioFilePath.java

@RestController
public class SaveAudioFilePath {

    @Autowired
    private JdbcTemplate jdbcTemplate;

    @PostMapping(&quot;/saveAudioFilePath&quot;)
    public ResponseEntity&amp;lt;String&amp;gt; postAudioPath(@RequestParam(&quot;file&quot;) MultipartFile file, HttpSession session) {
        // Get the UUID from the current session.
        String mettingId = (String) session.getAttribute(&quot;meetingRoomId&quot;);

        if (!file.isEmpty()) {
            try {
                Path filePath = Paths.get(&quot;files/&quot; + file.getOriginalFilename());

                if (!Files.exists(filePath.getParent())) {
                    Files.createDirectories(filePath.getParent());
                }

                Files.write(filePath, file.getBytes());

                // Update the RECORDING column for the row with the current mettingId.
                jdbcTemplate.update(
                        &quot;UPDATE SUMMARY SET RECORDING = ? WHERE METTING_ID = ?&quot;,
                        filePath.toString(), meetingId);

                return new ResponseEntity&amp;lt;&amp;gt;(&quot;Path saved successfully.&quot;, HttpStatus.OK);
            } catch (Exception e) {
                return new ResponseEntity&amp;lt;&amp;gt;(&quot;Failed to upload file: &quot; + e.getMessage(),
                        HttpStatus.INTERNAL_SERVER_ERROR);
            }
        } else {
            return new ResponseEntity&amp;lt;&amp;gt;(&quot;File is empty.&quot;, HttpStatus.BAD_REQUEST);
        }
    }
}&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;text-align: left;&quot; 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;736&quot; data-origin-height=&quot;120&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ccZo9Y/btsxkjg2x6X/zTTNmOfdie7qkMxlF5Odqk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ccZo9Y/btsxkjg2x6X/zTTNmOfdie7qkMxlF5Odqk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ccZo9Y/btsxkjg2x6X/zTTNmOfdie7qkMxlF5Odqk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FccZo9Y%2Fbtsxkjg2x6X%2FzTTNmOfdie7qkMxlF5Odqk%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;82&quot; data-origin-width=&quot;736&quot; data-origin-height=&quot;120&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;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;여기서 파일 경로를 저장할 때 세션에 UUID가 존재하지 않으면 로그인 후 이용하라는 팝업창이 뜨도록 했다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1696853735640&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;lt;!DOCTYPE html&amp;gt;
&amp;lt;html&amp;gt;
  &amp;lt;head&amp;gt;
    &amp;lt;title&amp;gt;mp3 file path save&amp;lt;/title&amp;gt;
    &amp;lt;script src=&quot;https://cdn.jsdelivr.net/npm/axios/dist/axios.min.js&quot;&amp;gt;&amp;lt;/script&amp;gt;
  &amp;lt;/head&amp;gt;
  &amp;lt;body&amp;gt;
    &amp;lt;h1&amp;gt;mp3 file path save&amp;lt;/h1&amp;gt;
    &amp;lt;form onsubmit=&quot;event.preventDefault(); uploadAndSavePath();&quot;&amp;gt;
      &amp;lt;input type=&quot;file&quot; id=&quot;file&quot; name=&quot;file&quot; accept=&quot;.mp3&quot; /&amp;gt;
      &amp;lt;button type=&quot;submit&quot;&amp;gt;경로 저장&amp;lt;/button&amp;gt;
    &amp;lt;/form&amp;gt;
    &amp;lt;button onclick=&quot;mettingRoom()&quot;&amp;gt;Create MettingRoom ID&amp;lt;/button&amp;gt;

    &amp;lt;script type=&quot;text/javascript&quot;&amp;gt;
      function uploadAndSavePath() {
        var formData = new FormData();
        formData.append(&quot;file&quot;, document.getElementById(&quot;file&quot;).files[0]);

        axios
          .post(&quot;/saveAudioFilePath&quot;, formData)
          .then(function (response) {
            alert(&quot;File uploaded and path saved successfully!&quot;);
          })
          .catch(function (error) {
            if (error.response &amp;amp;&amp;amp; error.response.status === 401) {
              alert(error.response.data);
              setTimeout(function () {
                alert(null);
              }, 3000);
            } else {
              alert(&quot;파일을 선택해주세요.&quot;);
            }
          });
      }

      function mettingRoom() {
        axios
          .get(&quot;/mettingRoom&quot;)
          .then(function (response) {
            alert(response.data);
          })
          .catch(function (error) {
            console.log(error);
          });
      }
    &amp;lt;/script&amp;gt;
  &amp;lt;/body&amp;gt;
&amp;lt;/html&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;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;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;MeetingRoom.java&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1696853761827&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;package com.gmovie.gmovie.controller;

import java.util.UUID;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

import jakarta.servlet.http.HttpSession;

@RestController
public class MettingRoom {

    @Autowired
    JdbcTemplate jdbcTemplate;

    @GetMapping(&quot;/mettingRoom&quot;)
    public String mettingRoom(HttpSession session) {
        UUID uuid4 = UUID.randomUUID();
        String noHyphenUUID = uuid4.toString().replace(&quot;-&quot;, &quot;&quot;);

        session.setAttribute(&quot;mettingRoomId&quot;, noHyphenUUID);
        session.setMaxInactiveInterval(30 * 60);

        jdbcTemplate.update(&quot;INSERT INTO SUMMARY (METTING_ID, NO) VALUES (?, ?)&quot;, noHyphenUUID, 1);

        return &quot;METTING ROOM ID: &quot; + noHyphenUUID;
    }
}&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;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;SaveAudioFilePath.java&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1696853844274&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;package com.gmovie.gmovie.controller;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;

import jakarta.servlet.http.HttpSession;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;

@RestController
public class SaveAudioFilePath {

    @Autowired
    private JdbcTemplate jdbcTemplate;

    @PostMapping(&quot;/saveAudioFilePath&quot;)
    public ResponseEntity&amp;lt;String&amp;gt; postAudioPath(@RequestParam(&quot;file&quot;) MultipartFile file, HttpSession session) {

        // Get the UUID from the current session.
        String mettingId = (String) session.getAttribute(&quot;mettingRoomId&quot;);

        if (mettingId == null) {
            return new ResponseEntity&amp;lt;&amp;gt;(&quot;로그인 후 이용해주세요.&quot;, HttpStatus.UNAUTHORIZED);
        }

        if (!file.isEmpty()) {
            try {
                Path filePath = Paths.get(&quot;files/&quot; + file.getOriginalFilename());

                if (!Files.exists(filePath.getParent())) {
                    Files.createDirectories(filePath.getParent());
                }

                Files.write(filePath, file.getBytes());

                // Update the RECORDING column for the row with the current mettingId.
                jdbcTemplate.update(
                        &quot;UPDATE SUMMARY SET RECORDING = ? WHERE METTING_ID = ?&quot;,
                        filePath.toString(), mettingId);

                return new ResponseEntity&amp;lt;&amp;gt;(&quot;Path saved successfully.&quot;, HttpStatus.OK);
            } catch (Exception e) {
                return new ResponseEntity&amp;lt;&amp;gt;(&quot;Failed to upload file: &quot; + e.getMessage(),
                        HttpStatus.INTERNAL_SERVER_ERROR);
            }
        } else {
            return new ResponseEntity&amp;lt;&amp;gt;(&quot;File is empty.&quot;, HttpStatus.BAD_REQUEST);
        }
    }
}&lt;/code&gt;&lt;/pre&gt;</description>
      <category>2023-02 몰입형 SW 정규 교육/9월 프로젝트</category>
      <category>HttpSession</category>
      <category>jdbctemplate</category>
      <category>springboot</category>
      <category>UUID</category>
      <category>vue.js</category>
      <category>뷰</category>
      <category>스프링부트</category>
      <author>gxxg</author>
      <guid isPermaLink="true">https://zero-talk.tistory.com/126</guid>
      <comments>https://zero-talk.tistory.com/126#entry126comment</comments>
      <pubDate>Mon, 9 Oct 2023 21:18:04 +0900</pubDate>
    </item>
    <item>
      <title>[SpringBoot] Axios post 요청</title>
      <link>https://zero-talk.tistory.com/125</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;나는 DB를 다뤄본 적도 없고 네트워크나 서버 등의 배경 지식이 없을 뿐더러... 이번 프로젝트를 하면서 처음으로 백엔드를 맡았는데, DB 관리와 더불어 백엔드 &amp;lt;-&amp;gt; 프론트 간의 요청 및 응답까지 하게 되어서 막막했다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;내가 구현하고자 하는 건&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;① 프론트단에서 녹음 파일의 경로를 POST 요청으로 보내고&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;② 백단에서 해당 POST 요청을 처리하여 파일 경로를 DB에 저장하는 기능이다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;아주 단순한 기능임에도 불구하고 백 &amp;lt;-&amp;gt; 프론트 데이터 전달 과정도 몰랐던 나는 405 에러에게 지고야 말았고... 결국 생애 첫(?) 트러블슈팅기록을 올리기로 했다. 많이 부끄럽지만....&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;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;style2&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;&amp;nbsp;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;삽질 과정 1&lt;/span&gt;&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;다른 팀원이 Method.java 파일에 녹음된 음성 파일 경로를 임의로 저장해뒀다.&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1696594159880&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;public class Method {

    public String stt() {
        String openApiURL = &quot; &quot;;
        String accessKey = &quot; &quot;; // 발급받은 API Key
        String languageCode = &quot;korean&quot;;
        String audioFilePath = &quot;C:\\Users\\skgud\\Downloads\\output.wav&quot;; // 녹음된 음성 파일 경로
        String audioContents = null;

        Gson gson = new Gson();

        Map&amp;lt;String, Object&amp;gt; request = new HashMap&amp;lt;&amp;gt;();
        Map&amp;lt;String, String&amp;gt; argument = new HashMap&amp;lt;&amp;gt;();

        try {
            Path path = Paths.get(audioFilePath);
            byte[] audioBytes = Files.readAllBytes(path);
            audioContents = Base64.getEncoder().encodeToString(audioBytes);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;① index.html에서 버튼을 클릭하면 해당 음성파일 경로를 POST 요청으로 보내는 savePathToDB() 함수가 실행되도록 onClick 처리를 함&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1696594320546&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;lt;!DOCTYPE html&amp;gt;
&amp;lt;html&amp;gt;
  &amp;lt;head&amp;gt;
    &amp;lt;title&amp;gt;MP3 to Text Converter&amp;lt;/title&amp;gt;
    &amp;lt;script src=&quot;https://cdn.jsdelivr.net/npm/axios/dist/axios.min.js&quot;&amp;gt;&amp;lt;/script&amp;gt;
  &amp;lt;/head&amp;gt;
  &amp;lt;body&amp;gt;
    &amp;lt;h1&amp;gt;MP3 to Text Converter&amp;lt;/h1&amp;gt;
    &amp;lt;form action=&quot;/upload&quot; method=&quot;post&quot; enctype=&quot;multipart/form-data&quot;&amp;gt;
      &amp;lt;input type=&quot;file&quot; name=&quot;file&quot; accept=&quot;.mp3&quot; /&amp;gt;
      &amp;lt;button type=&quot;submit&quot;&amp;gt;업로드 및 변환&amp;lt;/button&amp;gt;
    &amp;lt;/form&amp;gt;
    &amp;lt;button onclick=&quot;savePathToDB()&quot;&amp;gt;경로 db에 저장&amp;lt;/button&amp;gt;
    &amp;lt;!-- Axios 요청 스크립트 --&amp;gt;
    &amp;lt;script type=&quot;text/javascript&quot;&amp;gt;
      function savePathToDB() {
        // &quot;/saveAudioFilePath&quot; 경로로 POST 요청을 보냄.
        // Spring Boot 컨트롤러에서 해당 경로를 처리 (AudioController.java)
        axios
          .post(&quot;/saveAudioFilePath&quot;, {
            audioFilePath: &quot;C:\\Users\\82105\\Desktop\\SAMPLE_1.mp3&quot;,
          })
          .then(function (response) {
            alert(&quot;Audio file path saved successfully!&quot;);
          })
          .catch(function (error) {
            alert(&quot;Failed to save audio file path!&quot;);
          });
      }
    &amp;lt;/script&amp;gt;
  &amp;lt;/body&amp;gt;
&amp;lt;/html&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;② POST 요청을 보냈으니 이를 처리할 스프링부트 컨트롤러인 AudioController.java 파일을 생성함&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt; index.html에서 &quot;/saveAudioFilePath&quot; 경로로 &lt;b&gt;POST &lt;/b&gt;요청을 보냈으니 &lt;span style=&quot;letter-spacing: 0px;&quot;&gt;AudioController.java에서&lt;/span&gt; @PostMapping (&quot;/saveAudioFilePath&quot;)&lt;span style=&quot;letter-spacing: 0px;&quot;&gt;을 해주면 끝나는 줄 알았다. &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;파일 경로를 audioFilePath 변수에 저장하고 userMapper.saveAudioFilePath(audioFilePath)를 호출하여 데이터베이스에 파일 경로를 저장하면 되지 않을까?&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1696594563298&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;package com.gmovie.gmovie.controller;

import java.util.Map;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.CrossOrigin;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RestController;

import com.gmovie.gmovie.mapper.UserMapper;

@RestController
@CrossOrigin(origins = &quot;http://localhost:8801&quot;) // Cross-Origin Resource Sharing(CORS) 허용
public class AudioController {

    @Autowired
    private UserMapper userMapper;

    @PostMapping(&quot;/saveAudioFilePath&quot;) // &quot;/saveAudioFilePath&quot; 경로로 들어오는 POST 요청을 처리하도록 설정
    // 요청 본문에서 데이터를 추출. 요청에서 받은 JSON 데이터는 Map&amp;lt;String, String&amp;gt; 형태로 파싱
    public ResponseEntity&amp;lt;String&amp;gt; saveAudioFilePath(@RequestBody Map&amp;lt;String, String&amp;gt; payload) {
        String audioFilePath = payload.get(&quot;audioFilePath&quot;); // 파일 경로를 audioFilePath 변수에 저장하고
        // userMapper.saveAudioFilePath(audioFilePath)를 호출하여 데이터베이스에 파일 경로를 저장
        userMapper.saveAudioFilePath(audioFilePath);

        return new ResponseEntity&amp;lt;&amp;gt;(&quot;File path saved successfully.&quot;, HttpStatus.OK);
    }
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;③ UserMapper.java를 생성하고 saveAudioFilePath가 호출되면 INSERT문으로 DB에 저장되도록!......&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;이렇게 하면 되지 않을까? 했으나... 전혀 안 되죠?&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1696595122374&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;@Mapper
public interface UserMapper {
  // 오디오 파일 경로(audioFilePath)를 받아 SUMMARY 테이블의 REDORDING 컬럼에 경로 저장
  @Insert(&quot;INSERT INTO SUMMARY (REDORDING) VALUES (#{audioFilePath})&quot;)
  public int saveAudioFilePath(String audioFilePath);
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;610&quot; data-origin-height=&quot;187&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dR4QLu/btsxrWqOz6I/XEkG3RPRi1L05oqr7vWTe0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dR4QLu/btsxrWqOz6I/XEkG3RPRi1L05oqr7vWTe0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dR4QLu/btsxrWqOz6I/XEkG3RPRi1L05oqr7vWTe0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdR4QLu%2FbtsxrWqOz6I%2FXEkG3RPRi1L05oqr7vWTe0%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;300&quot; height=&quot;92&quot; data-origin-width=&quot;610&quot; data-origin-height=&quot;187&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;음성 파일을 선택하고 업로드 및 변환 버튼을 클릭하면 DB에 해당 경로가 저장되는 게 나의 목표였으나...&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;724&quot; data-origin-height=&quot;61&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cVN77Y/btsxkDscP88/LFE2BLcYLNgnXsuJUMNlD0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cVN77Y/btsxkDscP88/LFE2BLcYLNgnXsuJUMNlD0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cVN77Y/btsxkDscP88/LFE2BLcYLNgnXsuJUMNlD0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcVN77Y%2FbtsxkDscP88%2FLFE2BLcYLNgnXsuJUMNlD0%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;42&quot; data-origin-width=&quot;724&quot; data-origin-height=&quot;61&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;Failed to load resource: the server responded with a status of 405 ()&amp;nbsp; &amp;nbsp; &amp;nbsp;chrome-error://chromewebdata/:1&lt;/span&gt;&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;아래 포스팅을 참고했다.&lt;/span&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1696595536309&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;405 Not Allowed 탐방기&quot; data-og-description=&quot;405 에러, 어디가 문제인가?&quot; data-og-host=&quot;velog.io&quot; data-og-source-url=&quot;https://velog.io/@directorhwan59/405-%EB%AC%B8%EC%A0%9C-%ED%83%90%EB%B0%A9%EA%B8%B0&quot; data-og-url=&quot;https://velog.io/@directorhwan59/405-문제-탐방기&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/bOMFGt/hyT50ZyPEU/XMo02ynSEhaxzlQlHmGnAk/img.png?width=950&amp;amp;height=500&amp;amp;face=0_0_950_500,https://scrap.kakaocdn.net/dn/uZFlf/hyT54Op6nD/1g0LuDf5XlAA6Uut1FDwh1/img.jpg?width=960&amp;amp;height=960&amp;amp;face=0_0_960_960&quot;&gt;&lt;a href=&quot;https://velog.io/@directorhwan59/405-%EB%AC%B8%EC%A0%9C-%ED%83%90%EB%B0%A9%EA%B8%B0&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://velog.io/@directorhwan59/405-%EB%AC%B8%EC%A0%9C-%ED%83%90%EB%B0%A9%EA%B8%B0&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/bOMFGt/hyT50ZyPEU/XMo02ynSEhaxzlQlHmGnAk/img.png?width=950&amp;amp;height=500&amp;amp;face=0_0_950_500,https://scrap.kakaocdn.net/dn/uZFlf/hyT54Op6nD/1g0LuDf5XlAA6Uut1FDwh1/img.jpg?width=960&amp;amp;height=960&amp;amp;face=0_0_960_960');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;405 Not Allowed 탐방기&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;405 에러, 어디가 문제인가?&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;velog.io&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;가능성&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;1. 405 Not Allowed :: 프론트에서 POST로 요청을 했는데 백에서 해당 요청을 GET으로 받거나 혹은 그 반대의 경우&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;나는 보다시피 버튼을 클릭하면 POST 요청을 보냈고 컨트롤러에서 @PostMapping이 제대로 설정되어 있어 이부분은 문제될 게 없어보인다. 프론트에서 POST 요청을 제대로 하고 있고 백에서 PostMapping을 통해 제대로 받고 있기 때문이다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;2. 백엔드가 문제인가?&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;그렇다고 하기엔 너무나도 명확하게 @PostMapping이 적혀있는 걸...?&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;3. 프론트가 문제인가?&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;해당 글을 읽어보니 form 태그가 문제가 될 수도 있겠다 싶었다. 왜냐하면 index.html에서 from 태그를 썼기 때문.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;이전에 JavaScript로 유효성 검사를 하는 회원가입 페이지를 만들 때 form 태그의 action 속성을 통해 submit 기능을 수행하도록 만들었었어서 습관적으로 form 태그를 사용했다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;글을 읽다가 문득 드는 생각.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;위의 글을 작성한 사람은 form 태그 안에 action으로 경로 설정을 해주지 않아 현재 url을 post 요청을 하고 있다고 한다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;때문에 nginx에서 정적 데이터를 post 요청해? 하고 405 에러를 던져줬다고 했다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;팀원이 준 index.html에서 action 경로가 /upload로 설정되어 있는데 확인해보니 해당 경로를 가진 파일이 없었다. 당연히 될 리가 없다. 경로를 /upload로 설정했는데 정작 해당 경로의 파일이 존재하지 않으니 말이다.&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;550&quot; data-origin-height=&quot;348&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Tf01D/btsxp2k2TUB/K747cAlBwuASTlXpZPbtt0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Tf01D/btsxp2k2TUB/K747cAlBwuASTlXpZPbtt0/img.png&quot; data-alt=&quot;action=&amp;quot;/upload&amp;quot; method=&amp;quot;post&amp;quot;&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Tf01D/btsxp2k2TUB/K747cAlBwuASTlXpZPbtt0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FTf01D%2Fbtsxp2k2TUB%2FK747cAlBwuASTlXpZPbtt0%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;200&quot; height=&quot;127&quot; data-origin-width=&quot;550&quot; data-origin-height=&quot;348&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;action=&quot;/upload&quot; method=&quot;post&quot;&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;223&quot; data-origin-height=&quot;43&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bQdUYQ/btsxgpasbRS/Kc5mhvjFxvUUVRYXFJUlC0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bQdUYQ/btsxgpasbRS/Kc5mhvjFxvUUVRYXFJUlC0/img.png&quot; data-alt=&quot;action=&amp;quot;/upload&amp;quot; method=&amp;quot;get&amp;quot;&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bQdUYQ/btsxgpasbRS/Kc5mhvjFxvUUVRYXFJUlC0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbQdUYQ%2FbtsxgpasbRS%2FKc5mhvjFxvUUVRYXFJUlC0%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;223&quot; height=&quot;43&quot; data-origin-width=&quot;223&quot; data-origin-height=&quot;43&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;action=&quot;/upload&quot; method=&quot;get&quot;&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;327&quot; data-origin-height=&quot;33&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/kF7Fw/btsxqzbG3C6/ZzCT259dn8ugJb79wIcWdK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/kF7Fw/btsxqzbG3C6/ZzCT259dn8ugJb79wIcWdK/img.png&quot; data-alt=&quot;action=&amp;quot;/upload&amp;quot; method=&amp;quot;get&amp;quot;&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/kF7Fw/btsxqzbG3C6/ZzCT259dn8ugJb79wIcWdK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FkF7Fw%2FbtsxqzbG3C6%2FZzCT259dn8ugJb79wIcWdK%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;327&quot; height=&quot;33&quot; data-origin-width=&quot;327&quot; data-origin-height=&quot;33&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;action=&quot;/upload&quot; method=&quot;get&quot;&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;임의로 upload.html 생성 후 &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;537&quot; data-origin-height=&quot;343&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ZXlao/btsxkfLOT2E/AirOgAARc0hjKfmRbZHUy1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ZXlao/btsxkfLOT2E/AirOgAARc0hjKfmRbZHUy1/img.png&quot; data-alt=&quot;action=&amp;quot;/upload&amp;quot; method=&amp;quot;post&amp;quot;&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ZXlao/btsxkfLOT2E/AirOgAARc0hjKfmRbZHUy1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FZXlao%2FbtsxkfLOT2E%2FAirOgAARc0hjKfmRbZHUy1%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;300&quot; height=&quot;192&quot; data-origin-width=&quot;537&quot; data-origin-height=&quot;343&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;action=&quot;/upload&quot; method=&quot;post&quot;&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1282&quot; data-origin-height=&quot;124&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b5ZIEm/btsxgpasfGz/nz81evhbpUtmG76Uq5kID0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b5ZIEm/btsxgpasfGz/nz81evhbpUtmG76Uq5kID0/img.png&quot; data-alt=&quot;action=&amp;quot;/upload&amp;quot; method=&amp;quot;post&amp;quot;&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b5ZIEm/btsxgpasfGz/nz81evhbpUtmG76Uq5kID0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb5ZIEm%2FbtsxgpasfGz%2Fnz81evhbpUtmG76Uq5kID0%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;1282&quot; height=&quot;124&quot; data-origin-width=&quot;1282&quot; data-origin-height=&quot;124&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;action=&quot;/upload&quot; method=&quot;post&quot;&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;&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;610&quot; data-origin-height=&quot;187&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cUmSrX/btsxtljsy9R/1D5msaWsEXlVEKJaD7xQJk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cUmSrX/btsxtljsy9R/1D5msaWsEXlVEKJaD7xQJk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cUmSrX/btsxtljsy9R/1D5msaWsEXlVEKJaD7xQJk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcUmSrX%2Fbtsxtljsy9R%2F1D5msaWsEXlVEKJaD7xQJk%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;400&quot; height=&quot;123&quot; data-origin-width=&quot;610&quot; data-origin-height=&quot;187&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;799&quot; data-origin-height=&quot;31&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cBwRbo/btsxtXitla8/knMTYnU5KpLEk5EZ8i3T81/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cBwRbo/btsxtXitla8/knMTYnU5KpLEk5EZ8i3T81/img.png&quot; data-alt=&quot;action=&amp;quot;/upload&amp;quot; method=&amp;quot;get&amp;quot;&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cBwRbo/btsxtXitla8/knMTYnU5KpLEk5EZ8i3T81/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcBwRbo%2FbtsxtXitla8%2FknMTYnU5KpLEk5EZ8i3T81%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;799&quot; height=&quot;31&quot; data-origin-width=&quot;799&quot; data-origin-height=&quot;31&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;action=&quot;/upload&quot; method=&quot;get&quot;&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1093&quot; data-origin-height=&quot;241&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/o3emq/btsxtnuOvkG/i8OxXTm8DCkkferWvB6HkK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/o3emq/btsxtnuOvkG/i8OxXTm8DCkkferWvB6HkK/img.png&quot; data-alt=&quot;action=&amp;quot;/upload&amp;quot; method=&amp;quot;get&amp;quot;&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/o3emq/btsxtnuOvkG/i8OxXTm8DCkkferWvB6HkK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fo3emq%2FbtsxtnuOvkG%2Fi8OxXTm8DCkkferWvB6HkK%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;600&quot; height=&quot;132&quot; data-origin-width=&quot;1093&quot; data-origin-height=&quot;241&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;action=&quot;/upload&quot; method=&quot;get&quot;&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt; method를 get으로 변경하니 200 코드와 함께 정상적으로 작동했다. 근데 이건 내가 원하는 게 아닌데..? 헛수고를 했다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;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;style2&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;&amp;nbsp;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;삽질과정 2&lt;/span&gt;&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;기존에 팀원에게 받은 코드에서 필요하지 않은 것들을 모두 빼고 다시 수정했다. 이제 될까?&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;① form 태그의 action 속성을 제거하고 필요 없는 버튼 삭제&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;② event.preventDefault()를 사용하여 form의 기본 동작인 페이지 새로 고침(submit)을 막음&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;③사용자가 선택한 파일과 그 경로를 서버에 업로드 하는 uploadAndSavePath()라는 함수를 만듦&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;④ FormData 객체를 생성하여 'file'과 'audioFilePath' 데이터를 추가하고&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;⑤ axios.post 메소드를 호출하여 '/saveAudioFilePath' URL에 POST 요청을 보내도록 함&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;=&amp;gt; 사용자가 MP3 파일과 그 파일 경로 정보(audioFilePath)를 선택하면 해당 정보들이 서버('/saveAudioFilePath') 쪽으로 전송됨&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #9d9d9d; font-family: 'Noto Sans Light';&quot;&gt;* FormData 객체는 웹 양식의 데이터를 생성하고 서버로 보내기 위한 키-값 쌍을 쉽게 만들 수 있는 방법을 제공하는 JavaScript의 내장 객체이다. 이 객체는 주로 XMLHttpRequest 또는 fetch API를 사용하여 데이터를 비동기적으로 서버에 전송할 때 사용된다. FormData 객체는 주로 파일 업로드와 같은 작업에서 유용하며, 이 경우 폼 데이터를 multipart/form-data MIME 형식으로 인코딩한다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;filePathSave.html&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1696752849004&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;lt;!DOCTYPE html&amp;gt;
&amp;lt;html&amp;gt;
  &amp;lt;head&amp;gt;
    &amp;lt;title&amp;gt;mp3 file path save&amp;lt;/title&amp;gt;
    &amp;lt;script src=&quot;https://cdn.jsdelivr.net/npm/axios/dist/axios.min.js&quot;&amp;gt;&amp;lt;/script&amp;gt;
  &amp;lt;/head&amp;gt;
  &amp;lt;body&amp;gt;
    &amp;lt;h1&amp;gt;mp3 file path save&amp;lt;/h1&amp;gt;
    &amp;lt;form onsubmit=&quot;event.preventDefault(); uploadAndSavePath();&quot;&amp;gt;
      &amp;lt;input type=&quot;file&quot; id=&quot;file&quot; name=&quot;file&quot; accept=&quot;.mp3&quot; /&amp;gt;
      &amp;lt;button type=&quot;submit&quot;&amp;gt;경로 저장&amp;lt;/button&amp;gt;
    &amp;lt;/form&amp;gt;
    &amp;lt;script type=&quot;text/javascript&quot;&amp;gt;
      function uploadAndSavePath() {
        var formData = new FormData();
        var audioFilePath = document.getElementById(&quot;file&quot;).value; // 사용자가 선택한 파일 경로

        formData.append(&quot;file&quot;, document.getElementById(&quot;file&quot;).files[0]);
        formData.append(&quot;audioFilePath&quot;, audioFilePath);

        axios
          .post(&quot;/saveAudioFilePath&quot;, formData)
          .then(function (response) {
            alert(&quot;File uploaded and path saved successfully!&quot;);
          })
          .catch(function (error) {
            alert(&quot;Failed to upload file or save path!&quot;);
          });
      }
    &amp;lt;/script&amp;gt;
  &amp;lt;/body&amp;gt;
&amp;lt;/html&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;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;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;filePathSaveController.java 생성&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;동적페이지의 경우 스프링부트에서는 src/main/resources/templates 디렉토리에 있는 HTML 파일들이 템플릿 엔진(예: Thymeleaf, FreeMarker 등)을 통해 렌더링되기 때문에 파일에 직접적으로 접근할 수 없다. 내가 만든 &lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;filePathSave는 템플릿 엔진을 사용하는 동적페이지이기 때문에 해당 페이지를 반환하는 컨트롤러 메서드가 필요하다.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1696781615235&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;package com.gmovie.gmovie.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;

@Controller
public class filePathSaveController {
    @GetMapping(&quot;/filePathSave&quot;)
    public String filePathSave() {
        return &quot;filePathSave&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;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;AudioController.java&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&lt;span&gt;① 클라이언트에서 보낸 MultipartFile 객체와 audioFilePath 문자열을 파라미터로 받는 메서드 생성&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&lt;span&gt;* 내부로직&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&lt;span&gt;① 파일(file)이 비어있지 않다면, jdbcTemplate를 이용하여 audioFilePath 값을 DB에 저장하고 성공 메시지와 함께 HTTP 상태 코드 200(OK)를 반환&lt;br /&gt;② 만약 파일 업로드 중 오류가 발생하면, 오류 메시지와 함께 HTTP 상태 코드 500(Internal Server Error)를 반환&lt;br /&gt;③ 만약 파일(file)이 비어있다면, &quot;File is empty.&quot;라는 메시지와 함께 HTTP 상태 코드 400(Bad Request)를 반환&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1696755235291&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;package com.gmovie.gmovie.controller;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.web.bind.annotation.CrossOrigin;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;

@RestController
@CrossOrigin(origins = &quot;http://localhost:8801&quot;) // Cross-Origin Resource Sharing(CORS) 허용
public class AudioController {

    @Autowired
    private JdbcTemplate jdbcTemplate;

    @PostMapping(&quot;/saveAudioFilePath&quot;)
    public ResponseEntity&amp;lt;String&amp;gt; postAudioPath(@RequestParam(&quot;file&quot;) MultipartFile file) {
        // 업로드된 파일을 처리하는 로직
        if (!file.isEmpty()) {
            try {
                // DB에 파일 경로 저장하는 로직
                jdbcTemplate.update(&quot;INSERT INTO SUMMARY (RECORDING) VALUES (?)&quot;,
                        &quot;C:\\Users\\skgud\\Downloads\\output.wav&quot;);

                return new ResponseEntity&amp;lt;&amp;gt;(&quot;Path saved successfully.&quot;, HttpStatus.OK);
            } catch (Exception e) {
                return new ResponseEntity&amp;lt;&amp;gt;(&quot;Failed to upload file: &quot; + e.getMessage(),
                        HttpStatus.INTERNAL_SERVER_ERROR);
            }
        } else {
            return new ResponseEntity&amp;lt;&amp;gt;(&quot;File is empty.&quot;, HttpStatus.BAD_REQUEST);
        }
    }
}&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;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #333333; text-align: start;&quot;&gt; 그리고 원래는 회의룸ID와 사용자 고유 번호인 no을 외래키로 참조하여 NOT NULL 제약조건을 걸어뒀었으나.. 아직 다른 팀원으로부터 코드를 받지 못해서 해당 제약 조건을 NULL로 변경하고 DB에 경로가 저장되는지만 테스트해봤다. &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;1195&quot; data-origin-height=&quot;148&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/EgQxk/btsxibb4L2q/KFIzUqIjJmhoVJgSrFZGVK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/EgQxk/btsxibb4L2q/KFIzUqIjJmhoVJgSrFZGVK/img.png&quot; data-alt=&quot;파일 경로를 저장할 테이블&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/EgQxk/btsxibb4L2q/KFIzUqIjJmhoVJgSrFZGVK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FEgQxk%2Fbtsxibb4L2q%2FKFIzUqIjJmhoVJgSrFZGVK%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;600&quot; height=&quot;74&quot; data-origin-width=&quot;1195&quot; data-origin-height=&quot;148&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&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;462&quot; data-origin-height=&quot;124&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ceRwIq/btsxHZHcMOR/kbpetrauRu26FGSzWTCMIk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ceRwIq/btsxHZHcMOR/kbpetrauRu26FGSzWTCMIk/img.png&quot; data-alt=&quot;파일을 선택하고&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ceRwIq/btsxHZHcMOR/kbpetrauRu26FGSzWTCMIk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FceRwIq%2FbtsxHZHcMOR%2FkbpetrauRu26FGSzWTCMIk%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;350&quot; height=&quot;94&quot; data-origin-width=&quot;462&quot; data-origin-height=&quot;124&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-origin-width=&quot;667&quot; data-origin-height=&quot;192&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cfvSZf/btsxh712Ep9/1mSCUkKdzpmkfDuexePMiK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cfvSZf/btsxh712Ep9/1mSCUkKdzpmkfDuexePMiK/img.png&quot; data-alt=&quot;경로 저장 버튼을 누르면&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cfvSZf/btsxh712Ep9/1mSCUkKdzpmkfDuexePMiK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcfvSZf%2Fbtsxh712Ep9%2F1mSCUkKdzpmkfDuexePMiK%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;350&quot; height=&quot;101&quot; data-origin-width=&quot;667&quot; data-origin-height=&quot;192&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-origin-width=&quot;897&quot; data-origin-height=&quot;85&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/9nnU6/btsxri2g4Fk/NM1DdD3akht30SHzfhXDj1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/9nnU6/btsxri2g4Fk/NM1DdD3akht30SHzfhXDj1/img.png&quot; data-alt=&quot;DB에 해당 경로가 저장되는 것 확인&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/9nnU6/btsxri2g4Fk/NM1DdD3akht30SHzfhXDj1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F9nnU6%2Fbtsxri2g4Fk%2FNM1DdD3akht30SHzfhXDj1%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;600&quot; height=&quot;57&quot; data-origin-width=&quot;897&quot; data-origin-height=&quot;85&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;DB에 해당 경로가 저장되는 것 확인&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;&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;style2&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;삽질과정 3&lt;/span&gt;&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;뭔가 이상함을 느꼈다. 파일 경로가 실제 파일 경로가 아니라 중간에 fakepath가 껴있는 것이다...&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;찾아보니까 웹 보안상의 이유로, 파일 입력 필드에서 선택된 파일의 실제 파일 시스템 경로를 JS나 다른 클라이언트 사이드 코드에 노출시키지 않는다고 한다. 그래서 C:\fakepath\가 나타나는 것이라고... 웹 표준에서 정한 동작 방식이다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;따라서 서버 사이드에서 실제 파일의 경로를 알 필요가 있다면 보통은 서버 내부에 별도의 저장소나 AWS S3 등 외부 스토리지 서비스에 저장하는 방식을 권장한다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;그러나.. 맨 처음에도 얘기했듯이 나는 백엔드가 처음이고 DB를 처음 만져(?)보고 서버쪽 지식이 전혀 없다. 마감까지 앞으로 단 5일. 다른 기능도 구현해야하기 때문에 여기서 뭘 더 새롭게 공부해서 할 시간은 없을 것이라는 판단을 내렸고.. 일단 급한대로 사용자가 업로드한 파일이 서버의 files/ 디렉토리에 저장되고 그 상대 경로가 DB에 저장되는 방법을 쓰기로 했다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;filePathSave.html&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1696784682758&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;lt;!DOCTYPE html&amp;gt;
&amp;lt;html&amp;gt;
  &amp;lt;head&amp;gt;
    &amp;lt;title&amp;gt;mp3 file path save&amp;lt;/title&amp;gt;
    &amp;lt;script src=&quot;https://cdn.jsdelivr.net/npm/axios/dist/axios.min.js&quot;&amp;gt;&amp;lt;/script&amp;gt;
  &amp;lt;/head&amp;gt;
  &amp;lt;body&amp;gt;
    &amp;lt;h1&amp;gt;mp3 file path save&amp;lt;/h1&amp;gt;
    &amp;lt;form onsubmit=&quot;event.preventDefault(); uploadAndSavePath();&quot;&amp;gt;
      &amp;lt;input type=&quot;file&quot; id=&quot;file&quot; name=&quot;file&quot; accept=&quot;.mp3&quot; /&amp;gt;
      &amp;lt;button type=&quot;submit&quot;&amp;gt;경로 저장&amp;lt;/button&amp;gt;
    &amp;lt;/form&amp;gt;
    &amp;lt;script type=&quot;text/javascript&quot;&amp;gt;
      function uploadAndSavePath() {
        var formData = new FormData();
        formData.append(&quot;file&quot;, document.getElementById(&quot;file&quot;).files[0]);

        axios
          .post(&quot;/saveAudioFilePath&quot;, formData)
          .then(function (response) {
            alert(&quot;File uploaded and path saved successfully!&quot;);
          })
          .catch(function (error) {
            alert(&quot;Failed to upload file or save path!&quot;);
          });
      }
    &amp;lt;/script&amp;gt;
  &amp;lt;/body&amp;gt;
&amp;lt;/html&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;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;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;saveAudioFilePath.java&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1696784718688&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;package com.gmovie.gmovie.controller;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.web.bind.annotation.CrossOrigin;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.nio.file.Files;

@RestController
@CrossOrigin(origins = &quot;http://localhost:8801&quot;)
public class saveAudioFilePath {

    @Autowired
    private JdbcTemplate jdbcTemplate;

    @PostMapping(&quot;/saveAudioFilePath&quot;)
    public ResponseEntity&amp;lt;String&amp;gt; postAudioPath(@RequestParam(&quot;file&quot;) MultipartFile file) {
        // 업로드된 파일을 처리하는 로직
        if (!file.isEmpty()) {
            try {
                // files 폴더는 프로젝트 루트 디렉토리 아래에 위치
                Path filePath = Paths.get(&quot;files/&quot; + file.getOriginalFilename());

                if (!Files.exists(filePath.getParent())) {
                    Files.createDirectories(filePath.getParent());
                }

                Files.write(filePath, file.getBytes());

                // DB에 파일 경로 저장하는 로직 (상대 경로 저장)
                jdbcTemplate.update(
                        &quot;INSERT INTO SUMMARY (RECORDING) VALUES (?)&quot;,
                        filePath.toString());

                return new ResponseEntity&amp;lt;&amp;gt;(&quot;Path saved successfully.&quot;, HttpStatus.OK);
            } catch (Exception e) {
                return new ResponseEntity&amp;lt;&amp;gt;(&quot;Failed to upload file: &quot; + e.getMessage(),
                        HttpStatus.INTERNAL_SERVER_ERROR);
            }
        } else {
            return new ResponseEntity&amp;lt;&amp;gt;(&quot;File is empty.&quot;, HttpStatus.BAD_REQUEST);
        }
    }
}&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;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;이제 사용자가 업로드한 파일을 서버의 files 디렉토리에 저장하고 해당 파일의 상대경로를 DB에 저장하게 된다.&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;882&quot; data-origin-height=&quot;115&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/lxLUk/btsxtWj1LrQ/uoFdmWHVbBirk3aRzXwJ51/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/lxLUk/btsxtWj1LrQ/uoFdmWHVbBirk3aRzXwJ51/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/lxLUk/btsxtWj1LrQ/uoFdmWHVbBirk3aRzXwJ51/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FlxLUk%2FbtsxtWj1LrQ%2FuoFdmWHVbBirk3aRzXwJ51%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;600&quot; height=&quot;78&quot; data-origin-width=&quot;882&quot; data-origin-height=&quot;115&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;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;이걸로 5일을 날리다니... POST 요청을 보내고 PostMapping으로 처리했는데 왜...? 대체 뭐가 문제야....? 이 굴레에서 3일을 못 빠져나왔다. 결국 마음을 비우고 처음부터 다시 만들었지만 ㅎㅎ... 일단 오늘은 여기까지 하고 자고 일어나서는 사용자가 회의 시작하기 버튼을 눌렀을 때 UUID로 회의룸ID를 생성하고 회의룸ID + 사용자 고유 no + 회의 요약본 + 파일경로를 DB에 저장하는 걸 해야겠다.&lt;/span&gt;&lt;/p&gt;</description>
      <category>벽돌깨기</category>
      <category>axios</category>
      <category>fakepath</category>
      <category>POST</category>
      <category>PostMapping</category>
      <category>springboot</category>
      <category>status of 405 ()</category>
      <category>vue</category>
      <category>vuejs</category>
      <category>상대경로저장</category>
      <category>파일경로저장</category>
      <author>gxxg</author>
      <guid isPermaLink="true">https://zero-talk.tistory.com/125</guid>
      <comments>https://zero-talk.tistory.com/125#entry125comment</comments>
      <pubDate>Mon, 9 Oct 2023 02:16:42 +0900</pubDate>
    </item>
    <item>
      <title>프로그래머스 3단계 : 표현 가능한 이진트리 (Java 자바)</title>
      <link>https://zero-talk.tistory.com/124</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;figure id=&quot;og_1696505660826&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;프로그래머스&quot; data-og-description=&quot;코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.&quot; data-og-host=&quot;programmers.co.kr&quot; data-og-source-url=&quot;https://school.programmers.co.kr/learn/courses/30/lessons/150367&quot; data-og-url=&quot;https://programmers.co.kr/&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/cIbLoL/hyT50ZlpvP/mDkDXByxsYblbXMGVwdlXK/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630,https://scrap.kakaocdn.net/dn/dwPVFb/hyT53Pjswf/IrFVyc3lB8ddKa3y8qPZyk/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630&quot;&gt;&lt;a href=&quot;https://school.programmers.co.kr/learn/courses/30/lessons/150367&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://school.programmers.co.kr/learn/courses/30/lessons/150367&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/cIbLoL/hyT50ZlpvP/mDkDXByxsYblbXMGVwdlXK/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630,https://scrap.kakaocdn.net/dn/dwPVFb/hyT53Pjswf/IrFVyc3lB8ddKa3y8qPZyk/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;프로그래머스&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;programmers.co.kr&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;문제&amp;nbsp;설명&lt;/span&gt;&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;당신은&amp;nbsp;이진트리를&amp;nbsp;수로&amp;nbsp;표현하는&amp;nbsp;것을&amp;nbsp;좋아합니다. &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;이진트리를&amp;nbsp;수로&amp;nbsp;표현하는&amp;nbsp;방법은&amp;nbsp;다음과&amp;nbsp;같습니다. &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;이진수를&amp;nbsp;저장할&amp;nbsp;빈&amp;nbsp;문자열을&amp;nbsp;생성합니다. &lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;주어진&amp;nbsp;이진트리에&amp;nbsp;더미&amp;nbsp;노드를&amp;nbsp;추가하여&amp;nbsp;포화&amp;nbsp;이진트리로&amp;nbsp;만듭니다.&amp;nbsp;루트&amp;nbsp;노드는&amp;nbsp;그대로&amp;nbsp;유지합니다. &lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;만들어진&amp;nbsp;포화&amp;nbsp;이진트리의&amp;nbsp;노드들을&amp;nbsp;가장&amp;nbsp;왼쪽&amp;nbsp;노드부터&amp;nbsp;가장&amp;nbsp;오른쪽&amp;nbsp;노드까지,&amp;nbsp;왼쪽에&amp;nbsp;있는&amp;nbsp;순서대로&amp;nbsp;살펴봅니다.&amp;nbsp;노드의&amp;nbsp;높이는&amp;nbsp;살펴보는&amp;nbsp;순서에&amp;nbsp;영향을&amp;nbsp;끼치지&amp;nbsp;않습니다. &lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;살펴본&amp;nbsp;노드가&amp;nbsp;더미&amp;nbsp;노드라면,&amp;nbsp;문자열&amp;nbsp;뒤에&amp;nbsp;0을&amp;nbsp;추가합니다.&amp;nbsp;살펴본&amp;nbsp;노드가&amp;nbsp;더미&amp;nbsp;노드가&amp;nbsp;아니라면,&amp;nbsp;문자열&amp;nbsp;뒤에&amp;nbsp;1을&amp;nbsp;추가합니다. &lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;문자열에&amp;nbsp;저장된&amp;nbsp;이진수를&amp;nbsp;십진수로&amp;nbsp;변환합니다. &lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;이진트리에서&amp;nbsp;리프&amp;nbsp;노드가&amp;nbsp;아닌&amp;nbsp;노드는&amp;nbsp;자신의&amp;nbsp;왼쪽&amp;nbsp;자식이&amp;nbsp;루트인&amp;nbsp;서브트리의&amp;nbsp;노드들보다&amp;nbsp;오른쪽에&amp;nbsp;있으며,&amp;nbsp;자신의&amp;nbsp;오른쪽&amp;nbsp;자식이&amp;nbsp;루트인&amp;nbsp;서브트리의&amp;nbsp;노드들보다&amp;nbsp;왼쪽에&amp;nbsp;있다고&amp;nbsp;가정합니다. &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;다음은&amp;nbsp;이진트리를&amp;nbsp;수로&amp;nbsp;표현하는&amp;nbsp;예시입니다. &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;주어진&amp;nbsp;이진트리는&amp;nbsp;다음과&amp;nbsp;같습니다.&lt;/span&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-origin-width=&quot;423&quot; data-origin-height=&quot;343&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cs31Ng/btswPWs0EVu/z23OnzvTddhEtF9RU1n9s1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cs31Ng/btswPWs0EVu/z23OnzvTddhEtF9RU1n9s1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cs31Ng/btswPWs0EVu/z23OnzvTddhEtF9RU1n9s1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fcs31Ng%2FbtswPWs0EVu%2Fz23OnzvTddhEtF9RU1n9s1%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;300&quot; height=&quot;243&quot; data-origin-width=&quot;423&quot; data-origin-height=&quot;343&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;주어진&amp;nbsp;이진트리에&amp;nbsp;더미노드를&amp;nbsp;추가하여&amp;nbsp;포화&amp;nbsp;이진트리로&amp;nbsp;만들면&amp;nbsp;다음과&amp;nbsp;같습니다.&amp;nbsp;더미&amp;nbsp;노드는&amp;nbsp;점선으로&amp;nbsp;표시하였고,&amp;nbsp;노드&amp;nbsp;안의&amp;nbsp;수는&amp;nbsp;살펴보는&amp;nbsp;순서를&amp;nbsp;의미합니다.&lt;/span&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-origin-width=&quot;583&quot; data-origin-height=&quot;343&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b93so7/btswP1A7Ost/V6SSgoUi0rocH0Tgdwg9e1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b93so7/btswP1A7Ost/V6SSgoUi0rocH0Tgdwg9e1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b93so7/btswP1A7Ost/V6SSgoUi0rocH0Tgdwg9e1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb93so7%2FbtswP1A7Ost%2FV6SSgoUi0rocH0Tgdwg9e1%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;300&quot; height=&quot;177&quot; data-origin-width=&quot;583&quot; data-origin-height=&quot;343&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;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;노드들을&amp;nbsp;왼쪽에&amp;nbsp;있는&amp;nbsp;순서대로&amp;nbsp;살펴보며&amp;nbsp;0과&amp;nbsp;1을&amp;nbsp;생성한&amp;nbsp;문자열에&amp;nbsp;추가하면&amp;nbsp;&quot;0111010&quot;이&amp;nbsp;됩니다.&amp;nbsp;이&amp;nbsp;이진수를&amp;nbsp;십진수로&amp;nbsp;변환하면&amp;nbsp;58입니다. &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;당신은&amp;nbsp;수가&amp;nbsp;주어졌을때,&amp;nbsp;하나의&amp;nbsp;이진트리로&amp;nbsp;해당&amp;nbsp;수를&amp;nbsp;표현할&amp;nbsp;수&amp;nbsp;있는지&amp;nbsp;알고&amp;nbsp;싶습니다. &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;이진트리로&amp;nbsp;만들고&amp;nbsp;싶은&amp;nbsp;수를&amp;nbsp;담은&amp;nbsp;1차원&amp;nbsp;정수&amp;nbsp;배열&amp;nbsp;numbers가&amp;nbsp;주어집니다.&amp;nbsp;numbers에&amp;nbsp;주어진&amp;nbsp;순서대로&amp;nbsp;하나의&amp;nbsp;이진트리로&amp;nbsp;해당&amp;nbsp;수를&amp;nbsp;표현할&amp;nbsp;수&amp;nbsp;있다면&amp;nbsp;1을,&amp;nbsp;표현할&amp;nbsp;수&amp;nbsp;없다면&amp;nbsp;0을&amp;nbsp;1차원&amp;nbsp;정수&amp;nbsp;배열에&amp;nbsp;담아&amp;nbsp;return&amp;nbsp;하도록&amp;nbsp;solution&amp;nbsp;함수를&amp;nbsp;완성해주세요. &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;제한사항 &lt;/span&gt;&lt;/blockquote&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;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;1&amp;nbsp;&amp;le;&amp;nbsp;numbers의&amp;nbsp;길이&amp;nbsp;&amp;le;&amp;nbsp;10,000 &lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;1&amp;nbsp;&amp;le;&amp;nbsp;numbers의&amp;nbsp;원소&amp;nbsp;&amp;le;&amp;nbsp;1015&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;입출력 예&lt;/span&gt;&lt;/blockquote&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;277&quot; data-origin-height=&quot;144&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/lf3wa/btsw2K6KamJ/dv6E1JUKMjDnqwgKqWjKxk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/lf3wa/btsw2K6KamJ/dv6E1JUKMjDnqwgKqWjKxk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/lf3wa/btsw2K6KamJ/dv6E1JUKMjDnqwgKqWjKxk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Flf3wa%2Fbtsw2K6KamJ%2Fdv6E1JUKMjDnqwgKqWjKxk%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;200&quot; height=&quot;104&quot; data-origin-width=&quot;277&quot; data-origin-height=&quot;144&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;&amp;nbsp;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;풀이&lt;/span&gt;&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1696505611348&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;class Solution {
    static int result; // 결과 값을 저장하는 정적 변수
    static boolean[] binary; // 이진수 표현을 저장하는 배열
    static int treeLen; // 완전 이진 트리의 노드 수

    public int[] solution(long[] numbers) {
        int n = numbers.length;
        int[] answer = new int[n];
        
        for (int i = 0; i &amp;lt; n; i++) {
            String b = Long.toBinaryString(numbers[i]); // 입력된 숫자를 이진수 문자열로 변환

            int length = b.length(); // 이진수 문자열의 길이 계산
            int exp = 1;
            do {
                treeLen = (int) Math.pow(2, exp++) - 1; // 완전 이진 트리의 노드 수 계산
            } while (treeLen &amp;lt; length);

            binary = new boolean[treeLen]; // 이진수를 저장할 배열 초기화
            int idx = treeLen - length; // 배열 인덱스 계산
            for(int j = 0; j &amp;lt; length; j++) {
                binary[idx++] = b.charAt(j) == '1'; // 이진수 문자열을 배열에 저장
            }

            result = 1; // 초기 결과 값 설정
            possible(0, treeLen - 1, false); // 이진 트리 검사 시작
            answer[i] = result; // 결과 값을 배열에 저장
        }
        return answer;
    }

    public static void possible(int s, int e, boolean check) {
        int mid = (s + e) / 2; // 중간 노드 인덱스 계산
        if(check &amp;amp;&amp;amp; binary[mid]) { // 현재 노드가 더미 노드인 경우 0이어야 하지만 1이면
            result = 0; // 결과 값을 0으로 설정
            return; // 검사 종료
        }

        // 현재 노드가 마지막 노드가 아닌 경우에는 계속해서 검사 진행
        if(s != e) {
            // 왼쪽 자식 노드 검사, 현재 노드가 더미 노드인 경우 check = true로 전달
            possible(s, mid - 1, !binary[mid]);
            
            // 오른쪽 자식 노드 검사
            possible(mid + 1, e, !binary[mid]);
        }
    }
}&lt;/code&gt;&lt;/pre&gt;</description>
      <category>  코딩테스트/programmers</category>
      <author>gxxg</author>
      <guid isPermaLink="true">https://zero-talk.tistory.com/124</guid>
      <comments>https://zero-talk.tistory.com/124#entry124comment</comments>
      <pubDate>Thu, 5 Oct 2023 23:25:17 +0900</pubDate>
    </item>
    <item>
      <title>프로그래머스 2단계 : n^2 배열 자르기 (Java 자바)</title>
      <link>https://zero-talk.tistory.com/123</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;figure id=&quot;og_1696505245879&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;프로그래머스&quot; data-og-description=&quot;코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.&quot; data-og-host=&quot;programmers.co.kr&quot; data-og-source-url=&quot;https://school.programmers.co.kr/learn/courses/30/lessons/87390&quot; data-og-url=&quot;https://programmers.co.kr/&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/QgbtM/hyT52CzEDi/fRKAYtSAxGdftF2LDT9iK1/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630,https://scrap.kakaocdn.net/dn/Lxwjn/hyT5YAcjvR/0UoY7pn9Kxol9HQxGYvog0/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630&quot;&gt;&lt;a href=&quot;https://school.programmers.co.kr/learn/courses/30/lessons/87390&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://school.programmers.co.kr/learn/courses/30/lessons/87390&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/QgbtM/hyT52CzEDi/fRKAYtSAxGdftF2LDT9iK1/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630,https://scrap.kakaocdn.net/dn/Lxwjn/hyT5YAcjvR/0UoY7pn9Kxol9HQxGYvog0/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;프로그래머스&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;programmers.co.kr&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;문제&amp;nbsp;설명 &lt;/span&gt;&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;정수&amp;nbsp;n,&amp;nbsp;left,&amp;nbsp;right가&amp;nbsp;주어집니다.&amp;nbsp;다음&amp;nbsp;과정을&amp;nbsp;거쳐서&amp;nbsp;1차원&amp;nbsp;배열을&amp;nbsp;만들고자&amp;nbsp;합니다. &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;n행 n열 크기의 비어있는 2차원 배열을 만듭니다. &lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;i&amp;nbsp;=&amp;nbsp;1,&amp;nbsp;2,&amp;nbsp;3,&amp;nbsp;...,&amp;nbsp;n에&amp;nbsp;대해서,&amp;nbsp;다음&amp;nbsp;과정을&amp;nbsp;반복합니다. &lt;/span&gt;&lt;br /&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;1행&amp;nbsp;1열부터&amp;nbsp;i행&amp;nbsp;i열까지의&amp;nbsp;영역&amp;nbsp;내의&amp;nbsp;모든&amp;nbsp;빈&amp;nbsp;칸을&amp;nbsp;숫자&amp;nbsp;i로&amp;nbsp;채웁니다. &lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;1행,&amp;nbsp;2행,&amp;nbsp;...,&amp;nbsp;n행을&amp;nbsp;잘라내어&amp;nbsp;모두&amp;nbsp;이어붙인&amp;nbsp;새로운&amp;nbsp;1차원&amp;nbsp;배열을&amp;nbsp;만듭니다. &lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;새로운&amp;nbsp;1차원&amp;nbsp;배열을&amp;nbsp;arr이라&amp;nbsp;할&amp;nbsp;때,&amp;nbsp;arr[left],&amp;nbsp;arr[left+1],&amp;nbsp;...,&amp;nbsp;arr[right]만&amp;nbsp;남기고&amp;nbsp;나머지는&amp;nbsp;지웁니다. &lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;정수&amp;nbsp;n,&amp;nbsp;left,&amp;nbsp;right가&amp;nbsp;매개변수로&amp;nbsp;주어집니다.&amp;nbsp;주어진&amp;nbsp;과정대로&amp;nbsp;만들어진&amp;nbsp;1차원&amp;nbsp;배열을&amp;nbsp;return&amp;nbsp;하도록&amp;nbsp;solution&amp;nbsp;함수를&amp;nbsp;완성해주세요. &lt;/span&gt;&lt;br /&gt;&lt;br /&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;blockquote data-ke-style=&quot;style2&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;제한사항 &lt;/span&gt;&lt;/blockquote&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;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;1&amp;nbsp;&amp;le;&amp;nbsp;n&amp;nbsp;&amp;le;&amp;nbsp;107 &lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;0&amp;nbsp;&amp;le;&amp;nbsp;left&amp;nbsp;&amp;le;&amp;nbsp;right&amp;nbsp;&amp;lt;&amp;nbsp;n2 &lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;right&amp;nbsp;-&amp;nbsp;left&amp;nbsp;&amp;lt;&amp;nbsp;105&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;입출력 예&lt;/blockquote&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;537&quot; data-origin-height=&quot;144&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dDcIBf/btsw7wz30Sd/nd4Hnqazoafn2Qmi8bArEK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dDcIBf/btsw7wz30Sd/nd4Hnqazoafn2Qmi8bArEK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dDcIBf/btsw7wz30Sd/nd4Hnqazoafn2Qmi8bArEK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdDcIBf%2Fbtsw7wz30Sd%2Fnd4Hnqazoafn2Qmi8bArEK%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;400&quot; height=&quot;107&quot; data-origin-width=&quot;537&quot; data-origin-height=&quot;144&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;&amp;nbsp;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;풀이&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1696505240667&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;public class Solution {

    // 정수 배열을 반환하는 메서드
    public int[] solution(int n, long left, long right) {
        // 배열의 길이 계산: right - left + 1
        int len = (int) (right - left) + 1;
        // 결과를 저장할 배열 생성
        int[] answer = new int[len];

        // 배열 인덱스
        int idx = 0;
        // left부터 right까지 반복
        for (long i = left; i &amp;lt;= right; i++) {
            // 현재 숫자 i를 n으로 나누어 행과 열을 계산
            long row = i / n;
            long col = i % n;
            // 각 셀의 최댓값을 계산하고 1을 더하여 배열에 저장
            answer[idx++] = Math.max((int) row, (int) col) + 1;
        }
        
        // 결과 배열 반환
        return answer;
    }
}&lt;/code&gt;&lt;/pre&gt;</description>
      <category>  코딩테스트/programmers</category>
      <author>gxxg</author>
      <guid isPermaLink="true">https://zero-talk.tistory.com/123</guid>
      <comments>https://zero-talk.tistory.com/123#entry123comment</comments>
      <pubDate>Thu, 5 Oct 2023 23:10:19 +0900</pubDate>
    </item>
    <item>
      <title>프로그래머스 2단계 : 할인행사 (Java 자바)</title>
      <link>https://zero-talk.tistory.com/122</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;figure id=&quot;og_1696505046847&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;프로그래머스&quot; data-og-description=&quot;코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.&quot; data-og-host=&quot;programmers.co.kr&quot; data-og-source-url=&quot;https://school.programmers.co.kr/learn/courses/30/lessons/131127&quot; data-og-url=&quot;https://programmers.co.kr/&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/ccUtdH/hyT5V4MEhx/xKMlOuBhcy3tgB3NLpO3iK/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630,https://scrap.kakaocdn.net/dn/G29Fn/hyT52bJ2xl/TtwtPLwzcZ7aXxrATukbi1/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630&quot;&gt;&lt;a href=&quot;https://school.programmers.co.kr/learn/courses/30/lessons/131127&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://school.programmers.co.kr/learn/courses/30/lessons/131127&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/ccUtdH/hyT5V4MEhx/xKMlOuBhcy3tgB3NLpO3iK/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630,https://scrap.kakaocdn.net/dn/G29Fn/hyT52bJ2xl/TtwtPLwzcZ7aXxrATukbi1/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;프로그래머스&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;programmers.co.kr&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;문제&amp;nbsp;설명&lt;/span&gt;&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;XYZ&amp;nbsp;마트는&amp;nbsp;일정한&amp;nbsp;금액을&amp;nbsp;지불하면&amp;nbsp;10일&amp;nbsp;동안&amp;nbsp;회원&amp;nbsp;자격을&amp;nbsp;부여합니다.&amp;nbsp;XYZ&amp;nbsp;마트에서는&amp;nbsp;회원을&amp;nbsp;대상으로&amp;nbsp;매일&amp;nbsp;한&amp;nbsp;가지&amp;nbsp;제품을&amp;nbsp;할인하는&amp;nbsp;행사를&amp;nbsp;합니다.&amp;nbsp;할인하는&amp;nbsp;제품은&amp;nbsp;하루에&amp;nbsp;하나씩만&amp;nbsp;구매할&amp;nbsp;수&amp;nbsp;있습니다.&amp;nbsp;알뜰한&amp;nbsp;정현이는&amp;nbsp;자신이&amp;nbsp;원하는&amp;nbsp;제품과&amp;nbsp;수량이&amp;nbsp;할인하는&amp;nbsp;날짜와&amp;nbsp;10일&amp;nbsp;연속으로&amp;nbsp;일치할&amp;nbsp;경우에&amp;nbsp;맞춰서&amp;nbsp;회원가입을&amp;nbsp;하려&amp;nbsp;합니다. &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;예를&amp;nbsp;들어,&amp;nbsp;정현이가&amp;nbsp;원하는&amp;nbsp;제품이&amp;nbsp;바나나&amp;nbsp;3개,&amp;nbsp;사과&amp;nbsp;2개,&amp;nbsp;쌀&amp;nbsp;2개,&amp;nbsp;돼지고기&amp;nbsp;2개,&amp;nbsp;냄비&amp;nbsp;1개이며,&amp;nbsp;XYZ&amp;nbsp;마트에서&amp;nbsp;15일간&amp;nbsp;회원을&amp;nbsp;대상으로&amp;nbsp;할인하는&amp;nbsp;제품이&amp;nbsp;날짜&amp;nbsp;순서대로&amp;nbsp;치킨,&amp;nbsp;사과,&amp;nbsp;사과,&amp;nbsp;바나나,&amp;nbsp;쌀,&amp;nbsp;사과,&amp;nbsp;돼지고기,&amp;nbsp;바나나,&amp;nbsp;돼지고기,&amp;nbsp;쌀,&amp;nbsp;냄비,&amp;nbsp;바나나,&amp;nbsp;사과,&amp;nbsp;바나나인&amp;nbsp;경우에&amp;nbsp;대해&amp;nbsp;알아봅시다.&amp;nbsp;첫째&amp;nbsp;날부터&amp;nbsp;열흘&amp;nbsp;간에는&amp;nbsp;냄비가&amp;nbsp;할인하지&amp;nbsp;않기&amp;nbsp;때문에&amp;nbsp;첫째&amp;nbsp;날에는&amp;nbsp;회원가입을&amp;nbsp;하지&amp;nbsp;않습니다.&amp;nbsp;둘째&amp;nbsp;날부터&amp;nbsp;열흘&amp;nbsp;간에는&amp;nbsp;바나나를&amp;nbsp;원하는&amp;nbsp;만큼&amp;nbsp;할인구매할&amp;nbsp;수&amp;nbsp;없기&amp;nbsp;때문에&amp;nbsp;둘째&amp;nbsp;날에도&amp;nbsp;회원가입을&amp;nbsp;하지&amp;nbsp;않습니다.&amp;nbsp;셋째&amp;nbsp;날,&amp;nbsp;넷째&amp;nbsp;날,&amp;nbsp;다섯째&amp;nbsp;날부터&amp;nbsp;각각&amp;nbsp;열흘은&amp;nbsp;원하는&amp;nbsp;제품과&amp;nbsp;수량이&amp;nbsp;일치하기&amp;nbsp;때문에&amp;nbsp;셋&amp;nbsp;중&amp;nbsp;하루에&amp;nbsp;회원가입을&amp;nbsp;하려&amp;nbsp;합니다. &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;정현이가&amp;nbsp;원하는&amp;nbsp;제품을&amp;nbsp;나타내는&amp;nbsp;문자열&amp;nbsp;배열&amp;nbsp;want와&amp;nbsp;정현이가&amp;nbsp;원하는&amp;nbsp;제품의&amp;nbsp;수량을&amp;nbsp;나타내는&amp;nbsp;정수&amp;nbsp;배열&amp;nbsp;number,&amp;nbsp;XYZ&amp;nbsp;마트에서&amp;nbsp;할인하는&amp;nbsp;제품을&amp;nbsp;나타내는&amp;nbsp;문자열&amp;nbsp;배열&amp;nbsp;discount가&amp;nbsp;주어졌을&amp;nbsp;때,&amp;nbsp;회원등록시&amp;nbsp;정현이가&amp;nbsp;원하는&amp;nbsp;제품을&amp;nbsp;모두&amp;nbsp;할인&amp;nbsp;받을&amp;nbsp;수&amp;nbsp;있는&amp;nbsp;회원등록&amp;nbsp;날짜의&amp;nbsp;총&amp;nbsp;일수를&amp;nbsp;return&amp;nbsp;하는&amp;nbsp;solution&amp;nbsp;함수를&amp;nbsp;완성하시오.&amp;nbsp;가능한&amp;nbsp;날이&amp;nbsp;없으면&amp;nbsp;0을&amp;nbsp;return&amp;nbsp;합니다. &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;제한사항 &lt;/span&gt;&lt;/blockquote&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;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;1&amp;nbsp;&amp;le;&amp;nbsp;want의&amp;nbsp;길이&amp;nbsp;=&amp;nbsp;number의&amp;nbsp;길이&amp;nbsp;&amp;le;&amp;nbsp;10 &lt;/span&gt;&lt;br /&gt;
&lt;ul style=&quot;list-style-type: circle;&quot; data-ke-list-type=&quot;circle&quot;&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;1&amp;nbsp;&amp;le;&amp;nbsp;number의&amp;nbsp;원소&amp;nbsp;&amp;le;&amp;nbsp;10 &lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;number[i]는&amp;nbsp;want[i]의&amp;nbsp;수량을&amp;nbsp;의미하며,&amp;nbsp;number의&amp;nbsp;원소의&amp;nbsp;합은&amp;nbsp;10입니다. &lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;10&amp;nbsp;&amp;le;&amp;nbsp;discount의&amp;nbsp;길이&amp;nbsp;&amp;le;&amp;nbsp;100,000 &lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;want와&amp;nbsp;discount의&amp;nbsp;원소들은&amp;nbsp;알파벳&amp;nbsp;소문자로&amp;nbsp;이루어진&amp;nbsp;문자열입니다. &lt;/span&gt;&lt;br /&gt;
&lt;ul style=&quot;list-style-type: circle;&quot; data-ke-list-type=&quot;circle&quot;&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;1&amp;nbsp;&amp;le;&amp;nbsp;want의&amp;nbsp;원소의&amp;nbsp;길이,&amp;nbsp;discount의&amp;nbsp;원소의&amp;nbsp;길이&amp;nbsp;&amp;le;&amp;nbsp;12&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;입출력 예&lt;/span&gt;&lt;/blockquote&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;2065&quot; data-origin-height=&quot;147&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/yQ78B/btsw7v8YBvP/Eb0DHq8fasYcv56iwWXNJ1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/yQ78B/btsw7v8YBvP/Eb0DHq8fasYcv56iwWXNJ1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/yQ78B/btsw7v8YBvP/Eb0DHq8fasYcv56iwWXNJ1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FyQ78B%2Fbtsw7v8YBvP%2FEb0DHq8fasYcv56iwWXNJ1%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;2065&quot; height=&quot;147&quot; data-origin-width=&quot;2065&quot; data-origin-height=&quot;147&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;&amp;nbsp;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;풀이&lt;/span&gt;&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1696505030994&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import java.util.HashMap;
import java.util.Map;

class Solution {
    // 유저 자격 유효 기간 상수 설정
    final int USER_QUALIFICATION_DURATION = 10;

    // 주어진 상품 목록(want), 개수(number), 할인 목록(discount)을 바탕으로 최대 할인 횟수 계산하는 메서드
    public int solution(String[] want, int[] number, String[] discount) {
        int answer = 0;

        // wantMap 초기화 및 필요한 상품 추가
        Map&amp;lt;String, Integer&amp;gt; wantMap = new HashMap&amp;lt;String, Integer&amp;gt;();
        for (int i = 0; i &amp;lt; want.length; i++) {
            String s = want[i]; // 상품 이름
            int count = number[i]; // 해당 상품의 필요 개수

            wantMap.put(s, count);
        }

        // discountMap 초기화 및 처음 10일치의 상품 추가
        Map&amp;lt;String, Integer&amp;gt; discountMap = new HashMap&amp;lt;String, Integer&amp;gt;();
        for (int i = 0; i &amp;lt; USER_QUALIFICATION_DURATION; i++) {
            String addItem = discount[i]; // 할인 목록에서 추가된 상품
            discountMap.put(addItem, discountMap.getOrDefault(addItem, 0) + 1);
        }

        // 처음 10일치의 상품이 추가된 상태에서 isEqual 메서드를 실행하여 answer의 값을 변경한다.
        if (isEqual(wantMap, discountMap)) {
            answer++;
        }

        // 두번째 날부터는 삭제할 상품과 추가할 상품을 지정하여 discountMap을 업데이트하고
        // 업데이트 된 내용을 바탕으로 isEqual 메서드를 실행하여 answer의 값을 변경한다.
        for (int i = 1; i &amp;lt;= discount.length - USER_QUALIFICATION_DURATION; i++) {
            String deleteItem = discount[i - 1]; // 이전 날짜의 할인 목록에서 삭제된 상품
            discountMap.put(deleteItem, discountMap.get(deleteItem) - 1);

            String addItem = discount[i - 1 + USER_QUALIFICATION_DURATION]; // 새로운 상품 추가
            discountMap.put(addItem, discountMap.getOrDefault(addItem, 0) + 1);

            if (isEqual(wantMap, discountMap)) {
                answer++;
            }
        }

        return answer;
    }

    // 두 개의 맵을 비교하여 상품 목록과 개수가 동일한지 확인하는 메서드
    public boolean isEqual(Map&amp;lt;String, Integer&amp;gt; wantMap, Map&amp;lt;String, Integer&amp;gt; compareMap) {
        for (String key : wantMap.keySet()) {
            if (!compareMap.containsKey(key) || wantMap.get(key) != compareMap.get(key)) {
                return false;
            }
        }

        return true;
    }
}&lt;/code&gt;&lt;/pre&gt;</description>
      <category>  코딩테스트/programmers</category>
      <author>gxxg</author>
      <guid isPermaLink="true">https://zero-talk.tistory.com/122</guid>
      <comments>https://zero-talk.tistory.com/122#entry122comment</comments>
      <pubDate>Thu, 5 Oct 2023 22:58:45 +0900</pubDate>
    </item>
    <item>
      <title>프로그래머스 2단계 : H-Index (Java 자바)</title>
      <link>https://zero-talk.tistory.com/121</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;figure id=&quot;og_1696504723010&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;프로그래머스&quot; data-og-description=&quot;코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.&quot; data-og-host=&quot;programmers.co.kr&quot; data-og-source-url=&quot;https://school.programmers.co.kr/learn/courses/30/lessons/42747&quot; data-og-url=&quot;https://programmers.co.kr/&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/OTunT/hyT5Y1uWt7/ALUydmBwPfdlwIsnrgBUpK/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630,https://scrap.kakaocdn.net/dn/dSYiZu/hyT557n5ro/vhtVr5Q71RhJ4lZNwKNqs0/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630&quot;&gt;&lt;a href=&quot;https://school.programmers.co.kr/learn/courses/30/lessons/42747&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://school.programmers.co.kr/learn/courses/30/lessons/42747&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/OTunT/hyT5Y1uWt7/ALUydmBwPfdlwIsnrgBUpK/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630,https://scrap.kakaocdn.net/dn/dSYiZu/hyT557n5ro/vhtVr5Q71RhJ4lZNwKNqs0/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;프로그래머스&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;programmers.co.kr&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;문제&amp;nbsp;설명 &lt;/span&gt;&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;H-Index는&amp;nbsp;과학자의&amp;nbsp;생산성과&amp;nbsp;영향력을&amp;nbsp;나타내는&amp;nbsp;지표입니다.&amp;nbsp;어느&amp;nbsp;과학자의&amp;nbsp;H-Index를&amp;nbsp;나타내는&amp;nbsp;값인&amp;nbsp;h를&amp;nbsp;구하려고&amp;nbsp;합니다.&amp;nbsp;위키백과1에&amp;nbsp;따르면,&amp;nbsp;H-Index는&amp;nbsp;다음과&amp;nbsp;같이&amp;nbsp;구합니다. &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;어떤&amp;nbsp;과학자가&amp;nbsp;발표한&amp;nbsp;논문&amp;nbsp;n편&amp;nbsp;중,&amp;nbsp;h번&amp;nbsp;이상&amp;nbsp;인용된&amp;nbsp;논문이&amp;nbsp;h편&amp;nbsp;이상이고&amp;nbsp;나머지&amp;nbsp;논문이&amp;nbsp;h번&amp;nbsp;이하&amp;nbsp;인용되었다면&amp;nbsp;h의&amp;nbsp;최댓값이&amp;nbsp;이&amp;nbsp;과학자의&amp;nbsp;H-Index입니다. &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;어떤&amp;nbsp;과학자가&amp;nbsp;발표한&amp;nbsp;논문의&amp;nbsp;인용&amp;nbsp;횟수를&amp;nbsp;담은&amp;nbsp;배열&amp;nbsp;citations가&amp;nbsp;매개변수로&amp;nbsp;주어질&amp;nbsp;때,&amp;nbsp;이&amp;nbsp;과학자의&amp;nbsp;H-Index를&amp;nbsp;return&amp;nbsp;하도록&amp;nbsp;solution&amp;nbsp;함수를&amp;nbsp;작성해주세요. &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;제한사항 &lt;/span&gt;&lt;/blockquote&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;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;과학자가&amp;nbsp;발표한&amp;nbsp;논문의&amp;nbsp;수는&amp;nbsp;1편&amp;nbsp;이상&amp;nbsp;1,000편&amp;nbsp;이하입니다. &lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;논문별&amp;nbsp;인용&amp;nbsp;횟수는&amp;nbsp;0회&amp;nbsp;이상&amp;nbsp;10,000회&amp;nbsp;이하입니다.&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;입출력 예&lt;/span&gt;&lt;/blockquote&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;264&quot; data-origin-height=&quot;88&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/62XHT/btsxifjpLbL/Djf146iX2CRTK2vdjHe0kK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/62XHT/btsxifjpLbL/Djf146iX2CRTK2vdjHe0kK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/62XHT/btsxifjpLbL/Djf146iX2CRTK2vdjHe0kK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F62XHT%2FbtsxifjpLbL%2FDjf146iX2CRTK2vdjHe0kK%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;200&quot; height=&quot;67&quot; data-origin-width=&quot;264&quot; data-origin-height=&quot;88&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;&amp;nbsp;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;풀이&lt;/span&gt;&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1696504708959&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import java.util.Arrays;

class Solution {
    // H-Index를 계산하는 메서드
    public int solution(int[] citations) {
        int answer = 0; // 결과를 저장할 변수 초기화

        Arrays.sort(citations); // 논문 인용 횟수를 오름차순으로 정렬

        int size = citations.length; // 배열의 길이 저장

        // 논문 인용 횟수를 오름차순으로 정렬했으므로,
        // 인용 횟수가 큰 논문부터 순서대로 검사
        for (int i = 0; i &amp;lt; size; i++) {
            // 현재 검사하는 논문의 인용 횟수가 남은 논문 수(size - i)보다 크거나 같다면,
            // 해당 논문을 기준으로 H-Index를 계산할 수 있음
            if (citations[i] &amp;gt;= size - i) {
                answer = size - i; // H-Index를 현재 논문의 인용 횟수로 설정
                break; // 조건을 만족하는 경우 반복문 종료
            }
        }
        return answer; // 최종 H-Index 반환
    }
}&lt;/code&gt;&lt;/pre&gt;</description>
      <category>  코딩테스트/programmers</category>
      <author>gxxg</author>
      <guid isPermaLink="true">https://zero-talk.tistory.com/121</guid>
      <comments>https://zero-talk.tistory.com/121#entry121comment</comments>
      <pubDate>Thu, 5 Oct 2023 22:33:21 +0900</pubDate>
    </item>
    <item>
      <title>프로그래머스 2단계 : 행렬의 곱셈 (Java 자바)</title>
      <link>https://zero-talk.tistory.com/120</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;figure id=&quot;og_1696504481718&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;프로그래머스&quot; data-og-description=&quot;코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.&quot; data-og-host=&quot;programmers.co.kr&quot; data-og-source-url=&quot;https://school.programmers.co.kr/learn/courses/30/lessons/12949&quot; data-og-url=&quot;https://programmers.co.kr/&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/KLIkH/hyT5VDGgdN/jkpylKSmUw9fth5AGgrH30/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630,https://scrap.kakaocdn.net/dn/b3hz0V/hyT5UdHXjd/K8AZPb9kV02XJmiYZKIdnk/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630&quot;&gt;&lt;a href=&quot;https://school.programmers.co.kr/learn/courses/30/lessons/12949&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://school.programmers.co.kr/learn/courses/30/lessons/12949&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/KLIkH/hyT5VDGgdN/jkpylKSmUw9fth5AGgrH30/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630,https://scrap.kakaocdn.net/dn/b3hz0V/hyT5UdHXjd/K8AZPb9kV02XJmiYZKIdnk/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;프로그래머스&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;programmers.co.kr&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;문제&amp;nbsp;설명 &lt;/span&gt;&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;2차원&amp;nbsp;행렬&amp;nbsp;arr1과&amp;nbsp;arr2를&amp;nbsp;입력받아,&amp;nbsp;arr1에&amp;nbsp;arr2를&amp;nbsp;곱한&amp;nbsp;결과를&amp;nbsp;반환하는&amp;nbsp;함수,&amp;nbsp;solution을&amp;nbsp;완성해주세요. &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;제한&amp;nbsp;조건 &lt;/span&gt;&lt;/blockquote&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;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;행렬&amp;nbsp;arr1,&amp;nbsp;arr2의&amp;nbsp;행과&amp;nbsp;열의&amp;nbsp;길이는&amp;nbsp;2&amp;nbsp;이상&amp;nbsp;100&amp;nbsp;이하입니다. &lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;행렬&amp;nbsp;arr1,&amp;nbsp;arr2의&amp;nbsp;원소는&amp;nbsp;-10&amp;nbsp;이상&amp;nbsp;20&amp;nbsp;이하인&amp;nbsp;자연수입니다. &lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;곱할&amp;nbsp;수&amp;nbsp;있는&amp;nbsp;배열만&amp;nbsp;주어집니다.&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;입출력 예&lt;/span&gt;&lt;/blockquote&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;1099&quot; data-origin-height=&quot;147&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cEvlbo/btsxh8LmWEE/WuSGwKr9ac2sQ0KJrbYck0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cEvlbo/btsxh8LmWEE/WuSGwKr9ac2sQ0KJrbYck0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cEvlbo/btsxh8LmWEE/WuSGwKr9ac2sQ0KJrbYck0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcEvlbo%2Fbtsxh8LmWEE%2FWuSGwKr9ac2sQ0KJrbYck0%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;600&quot; height=&quot;80&quot; data-origin-width=&quot;1099&quot; data-origin-height=&quot;147&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;&amp;nbsp;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;풀이&lt;/span&gt;&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1696504566288&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;class Solution {
    public int[][] solution(int[][] arr1, int[][] arr2) {
        int r1 = arr1.length; //arr1 행렬 행의 길이
      int c1 = arr1[0].length; //arr1 행렬 열의 길이
      int c2 = arr2[0].length; //arr2 행렬 열의 길이
      
      int[][] answer = new int[r1][c2];
      
      for(int i = 0; i &amp;lt; r1; i++) {
         for(int j = 0; j &amp;lt; c2; j++) {
            int sum = 0;
            for(int k = 0; k &amp;lt; c1; k++) {
               sum += arr1[i][k] * arr2[k][j];
            }
            answer[i][j] = sum;
         }
      }
        
        return answer;
    }
}&lt;/code&gt;&lt;/pre&gt;</description>
      <category>  코딩테스트/programmers</category>
      <author>gxxg</author>
      <guid isPermaLink="true">https://zero-talk.tistory.com/120</guid>
      <comments>https://zero-talk.tistory.com/120#entry120comment</comments>
      <pubDate>Thu, 5 Oct 2023 21:57:19 +0900</pubDate>
    </item>
    <item>
      <title>프로그래머스 3단계 : 등산코스 정하기 (Java 자바)</title>
      <link>https://zero-talk.tistory.com/119</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;figure id=&quot;og_1696504093592&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;프로그래머스&quot; data-og-description=&quot;코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.&quot; data-og-host=&quot;programmers.co.kr&quot; data-og-source-url=&quot;https://school.programmers.co.kr/learn/courses/30/lessons/118669&quot; data-og-url=&quot;https://programmers.co.kr/&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/dNByNf/hyT5TFTb1p/OO0co64cTuY6L6aJR446k1/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630,https://scrap.kakaocdn.net/dn/vI6oA/hyT5StrIaW/f5DNw6rc1XArjR5rHgpQjK/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630&quot;&gt;&lt;a href=&quot;https://school.programmers.co.kr/learn/courses/30/lessons/118669&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://school.programmers.co.kr/learn/courses/30/lessons/118669&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/dNByNf/hyT5TFTb1p/OO0co64cTuY6L6aJR446k1/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630,https://scrap.kakaocdn.net/dn/vI6oA/hyT5StrIaW/f5DNw6rc1XArjR5rHgpQjK/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;프로그래머스&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;programmers.co.kr&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;문제&amp;nbsp;설명 &lt;/span&gt;&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;XX산은&amp;nbsp;n개의&amp;nbsp;지점으로&amp;nbsp;이루어져&amp;nbsp;있습니다.&amp;nbsp;각&amp;nbsp;지점은&amp;nbsp;1부터&amp;nbsp;n까지&amp;nbsp;번호가&amp;nbsp;붙어있으며,&amp;nbsp;출입구,&amp;nbsp;쉼터,&amp;nbsp;혹은&amp;nbsp;산봉우리입니다.&amp;nbsp;각&amp;nbsp;지점은&amp;nbsp;양방향&amp;nbsp;통행이&amp;nbsp;가능한&amp;nbsp;등산로로&amp;nbsp;연결되어&amp;nbsp;있으며,&amp;nbsp;서로&amp;nbsp;다른&amp;nbsp;지점을&amp;nbsp;이동할&amp;nbsp;때&amp;nbsp;이&amp;nbsp;등산로를&amp;nbsp;이용해야&amp;nbsp;합니다.&amp;nbsp;이때,&amp;nbsp;등산로별로&amp;nbsp;이동하는데&amp;nbsp;일정&amp;nbsp;시간이&amp;nbsp;소요됩니다. &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;등산코스는&amp;nbsp;방문할&amp;nbsp;지점&amp;nbsp;번호들을&amp;nbsp;순서대로&amp;nbsp;나열하여&amp;nbsp;표현할&amp;nbsp;수&amp;nbsp;있습니다. &lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;예를&amp;nbsp;들어&amp;nbsp;1-2-3-2-1&amp;nbsp;으로&amp;nbsp;표현하는&amp;nbsp;등산코스는&amp;nbsp;1번지점에서&amp;nbsp;출발하여&amp;nbsp;2번,&amp;nbsp;3번,&amp;nbsp;2번,&amp;nbsp;1번&amp;nbsp;지점을&amp;nbsp;순서대로&amp;nbsp;방문한다는&amp;nbsp;뜻입니다. &lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;등산코스를&amp;nbsp;따라&amp;nbsp;이동하는&amp;nbsp;중&amp;nbsp;쉼터&amp;nbsp;혹은&amp;nbsp;산봉우리를&amp;nbsp;방문할&amp;nbsp;때마다&amp;nbsp;휴식을&amp;nbsp;취할&amp;nbsp;수&amp;nbsp;있으며,&amp;nbsp;휴식&amp;nbsp;없이&amp;nbsp;이동해야&amp;nbsp;하는&amp;nbsp;시간&amp;nbsp;중&amp;nbsp;가장&amp;nbsp;긴&amp;nbsp;시간을&amp;nbsp;해당&amp;nbsp;등산코스의&amp;nbsp;intensity라고&amp;nbsp;부르기로&amp;nbsp;합니다. &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;당신은&amp;nbsp;XX산의&amp;nbsp;출입구&amp;nbsp;중&amp;nbsp;한&amp;nbsp;곳에서&amp;nbsp;출발하여&amp;nbsp;산봉우리&amp;nbsp;중&amp;nbsp;한&amp;nbsp;곳만&amp;nbsp;방문한&amp;nbsp;뒤&amp;nbsp;다시&amp;nbsp;원래의&amp;nbsp;출입구로&amp;nbsp;돌아오는&amp;nbsp;등산코스를&amp;nbsp;정하려고&amp;nbsp;합니다.&amp;nbsp;다시&amp;nbsp;말해,&amp;nbsp;등산코스에서&amp;nbsp;출입구는&amp;nbsp;처음과&amp;nbsp;끝에&amp;nbsp;한&amp;nbsp;번씩,&amp;nbsp;산봉우리는&amp;nbsp;한&amp;nbsp;번만&amp;nbsp;포함되어야&amp;nbsp;합니다. &lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;당신은&amp;nbsp;이러한&amp;nbsp;규칙을&amp;nbsp;지키면서&amp;nbsp;intensity가&amp;nbsp;최소가&amp;nbsp;되도록&amp;nbsp;등산코스를&amp;nbsp;정하려고&amp;nbsp;합니다. &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;다음은&amp;nbsp;XX산의&amp;nbsp;지점과&amp;nbsp;등산로를&amp;nbsp;그림으로&amp;nbsp;표현한&amp;nbsp;예시입니다.&lt;/span&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-origin-width=&quot;451&quot; data-origin-height=&quot;547&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Y5MuF/btsxaNuyBRS/UzOuBMKrm6aHszVaf34jFk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Y5MuF/btsxaNuyBRS/UzOuBMKrm6aHszVaf34jFk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Y5MuF/btsxaNuyBRS/UzOuBMKrm6aHszVaf34jFk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FY5MuF%2FbtsxaNuyBRS%2FUzOuBMKrm6aHszVaf34jFk%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;300&quot; height=&quot;364&quot; data-origin-width=&quot;451&quot; data-origin-height=&quot;547&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;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;위&amp;nbsp;그림에서&amp;nbsp;원에&amp;nbsp;적힌&amp;nbsp;숫자는&amp;nbsp;지점의&amp;nbsp;번호를&amp;nbsp;나타내며,&amp;nbsp;1,&amp;nbsp;3번&amp;nbsp;지점에&amp;nbsp;출입구,&amp;nbsp;5번&amp;nbsp;지점에&amp;nbsp;산봉우리가&amp;nbsp;있습니다.&amp;nbsp;각&amp;nbsp;선분은&amp;nbsp;등산로를&amp;nbsp;나타내며,&amp;nbsp;각&amp;nbsp;선분에&amp;nbsp;적힌&amp;nbsp;수는&amp;nbsp;이동&amp;nbsp;시간을&amp;nbsp;나타냅니다.&amp;nbsp;예를&amp;nbsp;들어&amp;nbsp;1번&amp;nbsp;지점에서&amp;nbsp;2번&amp;nbsp;지점으로&amp;nbsp;이동할&amp;nbsp;때는&amp;nbsp;3시간이&amp;nbsp;소요됩니다. &lt;/span&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;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;위의&amp;nbsp;예시에서&amp;nbsp;1-2-5-4-3&amp;nbsp;과&amp;nbsp;같은&amp;nbsp;등산코스는&amp;nbsp;처음&amp;nbsp;출발한&amp;nbsp;원래의&amp;nbsp;출입구로&amp;nbsp;돌아오지&amp;nbsp;않기&amp;nbsp;때문에&amp;nbsp;잘못된&amp;nbsp;등산코스입니다.&amp;nbsp;또한&amp;nbsp;1-2-5-6-4-3-2-1&amp;nbsp;과&amp;nbsp;같은&amp;nbsp;등산코스는&amp;nbsp;코스의&amp;nbsp;처음과&amp;nbsp;끝&amp;nbsp;외에&amp;nbsp;3번&amp;nbsp;출입구를&amp;nbsp;방문하기&amp;nbsp;때문에&amp;nbsp;잘못된&amp;nbsp;등산코스입니다. &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;등산코스를&amp;nbsp;3-2-5-4-3&amp;nbsp;과&amp;nbsp;같이&amp;nbsp;정했을&amp;nbsp;때의&amp;nbsp;이동경로를&amp;nbsp;그림으로&amp;nbsp;나타내면&amp;nbsp;아래와&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;1082&quot; data-origin-height=&quot;109&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dDLEZO/btsw8YiLzqE/AWnqSMKokFlg8hZu0i542K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dDLEZO/btsw8YiLzqE/AWnqSMKokFlg8hZu0i542K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dDLEZO/btsw8YiLzqE/AWnqSMKokFlg8hZu0i542K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdDLEZO%2Fbtsw8YiLzqE%2FAWnqSMKokFlg8hZu0i542K%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;700&quot; height=&quot;71&quot; data-origin-width=&quot;1082&quot; data-origin-height=&quot;109&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;이때,&amp;nbsp;휴식&amp;nbsp;없이&amp;nbsp;이동해야&amp;nbsp;하는&amp;nbsp;시간&amp;nbsp;중&amp;nbsp;가장&amp;nbsp;긴&amp;nbsp;시간은&amp;nbsp;5시간입니다.&amp;nbsp;따라서&amp;nbsp;이&amp;nbsp;등산코스의&amp;nbsp;intensity는&amp;nbsp;5입니다. &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;등산코스를&amp;nbsp;1-2-4-5-6-4-2-1&amp;nbsp;과&amp;nbsp;같이&amp;nbsp;정했을&amp;nbsp;때의&amp;nbsp;이동경로를&amp;nbsp;그림으로&amp;nbsp;나타내면&amp;nbsp;아래와&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;1235&quot; data-origin-height=&quot;113&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bmFTDH/btsxh4WuRtZ/52I7hiKyGDqvNwGtKpuWE1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bmFTDH/btsxh4WuRtZ/52I7hiKyGDqvNwGtKpuWE1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bmFTDH/btsxh4WuRtZ/52I7hiKyGDqvNwGtKpuWE1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbmFTDH%2Fbtsxh4WuRtZ%2F52I7hiKyGDqvNwGtKpuWE1%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;700&quot; height=&quot;64&quot; data-origin-width=&quot;1235&quot; data-origin-height=&quot;113&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;이때,&amp;nbsp;휴식&amp;nbsp;없이&amp;nbsp;이동해야&amp;nbsp;하는&amp;nbsp;시간&amp;nbsp;중&amp;nbsp;가장&amp;nbsp;긴&amp;nbsp;시간은&amp;nbsp;3시간입니다.&amp;nbsp;따라서&amp;nbsp;이&amp;nbsp;등산코스의&amp;nbsp;intensity는&amp;nbsp;3이며,&amp;nbsp;이&amp;nbsp;보다&amp;nbsp;intensity가&amp;nbsp;낮은&amp;nbsp;등산코스는&amp;nbsp;없습니다. &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;XX산의&amp;nbsp;지점&amp;nbsp;수&amp;nbsp;n,&amp;nbsp;각&amp;nbsp;등산로의&amp;nbsp;정보를&amp;nbsp;담은&amp;nbsp;2차원&amp;nbsp;정수&amp;nbsp;배열&amp;nbsp;paths,&amp;nbsp;출입구들의&amp;nbsp;번호가&amp;nbsp;담긴&amp;nbsp;정수&amp;nbsp;배열&amp;nbsp;gates,&amp;nbsp;산봉우리들의&amp;nbsp;번호가&amp;nbsp;담긴&amp;nbsp;정수&amp;nbsp;배열&amp;nbsp;summits가&amp;nbsp;매개변수로&amp;nbsp;주어집니다.&amp;nbsp;이때,&amp;nbsp;intensity가&amp;nbsp;최소가&amp;nbsp;되는&amp;nbsp;등산코스에&amp;nbsp;포함된&amp;nbsp;산봉우리&amp;nbsp;번호와&amp;nbsp;intensity의&amp;nbsp;최솟값을&amp;nbsp;차례대로&amp;nbsp;정수&amp;nbsp;배열에&amp;nbsp;담아&amp;nbsp;return&amp;nbsp;하도록&amp;nbsp;solution&amp;nbsp;함수를&amp;nbsp;완성해주세요.&amp;nbsp;intensity가&amp;nbsp;최소가&amp;nbsp;되는&amp;nbsp;등산코스가&amp;nbsp;여러&amp;nbsp;개라면&amp;nbsp;그중&amp;nbsp;산봉우리의&amp;nbsp;번호가&amp;nbsp;가장&amp;nbsp;낮은&amp;nbsp;등산코스를&amp;nbsp;선택합니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;제한사항&lt;/span&gt;&lt;/blockquote&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;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;2 &amp;le; n &amp;le; 50,000 &lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;n&amp;nbsp;-&amp;nbsp;1&amp;nbsp;&amp;le;&amp;nbsp;paths의&amp;nbsp;길이&amp;nbsp;&amp;le;&amp;nbsp;200,000 &lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;paths의&amp;nbsp;원소는&amp;nbsp;[i,&amp;nbsp;j,&amp;nbsp;w]&amp;nbsp;형태입니다. &lt;/span&gt;&lt;br /&gt;
&lt;ul style=&quot;list-style-type: circle;&quot; data-ke-list-type=&quot;circle&quot;&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;i번&amp;nbsp;지점과&amp;nbsp;j번&amp;nbsp;지점을&amp;nbsp;연결하는&amp;nbsp;등산로가&amp;nbsp;있다는&amp;nbsp;뜻입니다. &lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;w는&amp;nbsp;두&amp;nbsp;지점&amp;nbsp;사이를&amp;nbsp;이동하는&amp;nbsp;데&amp;nbsp;걸리는&amp;nbsp;시간입니다. &lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;1&amp;nbsp;&amp;le;&amp;nbsp;i&amp;nbsp;&amp;lt;&amp;nbsp;j&amp;nbsp;&amp;le;&amp;nbsp;n &lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;1&amp;nbsp;&amp;le;&amp;nbsp;w&amp;nbsp;&amp;le;&amp;nbsp;10,000,000 &lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;서로&amp;nbsp;다른&amp;nbsp;두&amp;nbsp;지점을&amp;nbsp;직접&amp;nbsp;연결하는&amp;nbsp;등산로는&amp;nbsp;최대&amp;nbsp;1개입니다. &lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;1&amp;nbsp;&amp;le;&amp;nbsp;gates의&amp;nbsp;길이&amp;nbsp;&amp;le;&amp;nbsp;n &lt;/span&gt;&lt;br /&gt;
&lt;ul style=&quot;list-style-type: circle;&quot; data-ke-list-type=&quot;circle&quot;&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;1&amp;nbsp;&amp;le;&amp;nbsp;gates의&amp;nbsp;원소&amp;nbsp;&amp;le;&amp;nbsp;n &lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;gates의&amp;nbsp;원소는&amp;nbsp;해당&amp;nbsp;지점이&amp;nbsp;출입구임을&amp;nbsp;나타냅니다. &lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;1&amp;nbsp;&amp;le;&amp;nbsp;summits의&amp;nbsp;길이&amp;nbsp;&amp;le;&amp;nbsp;n &lt;/span&gt;&lt;br /&gt;
&lt;ul style=&quot;list-style-type: circle;&quot; data-ke-list-type=&quot;circle&quot;&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;1&amp;nbsp;&amp;le;&amp;nbsp;summits의&amp;nbsp;원소&amp;nbsp;&amp;le;&amp;nbsp;n &lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;summits의&amp;nbsp;원소는&amp;nbsp;해당&amp;nbsp;지점이&amp;nbsp;산봉우리임을&amp;nbsp;나타냅니다. &lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;출입구이면서&amp;nbsp;동시에&amp;nbsp;산봉우리인&amp;nbsp;지점은&amp;nbsp;없습니다. &lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;gates와&amp;nbsp;summits에&amp;nbsp;등장하지&amp;nbsp;않은&amp;nbsp;지점은&amp;nbsp;모두&amp;nbsp;쉼터입니다. &lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;임의의&amp;nbsp;두&amp;nbsp;지점&amp;nbsp;사이에&amp;nbsp;이동&amp;nbsp;가능한&amp;nbsp;경로가&amp;nbsp;항상&amp;nbsp;존재합니다. &lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;return&amp;nbsp;하는&amp;nbsp;배열은&amp;nbsp;[산봉우리의&amp;nbsp;번호,&amp;nbsp;intensity의&amp;nbsp;최솟값]&amp;nbsp;순서여야&amp;nbsp;합니다.&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;입출력 예&lt;/span&gt;&lt;/blockquote&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;1236&quot; data-origin-height=&quot;252&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bb6p9l/btswPYxAeKz/dZBeV9Z6ZsLrIkWnoowk3k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bb6p9l/btswPYxAeKz/dZBeV9Z6ZsLrIkWnoowk3k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bb6p9l/btswPYxAeKz/dZBeV9Z6ZsLrIkWnoowk3k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbb6p9l%2FbtswPYxAeKz%2FdZBeV9Z6ZsLrIkWnoowk3k%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;650&quot; height=&quot;133&quot; data-origin-width=&quot;1236&quot; data-origin-height=&quot;252&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;&amp;nbsp;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;풀이&lt;/span&gt;&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1696504068855&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import java.util.*;

class Solution {
    public static List&amp;lt;List&amp;lt;Node&amp;gt;&amp;gt; graph;

    public int[] solution(int n, int[][] paths, int[] gates, int[] summits) {
        int[] answer = {};

        // 그래프 만들기
        graph = new ArrayList&amp;lt;&amp;gt;();
        for (int i = 0; i &amp;lt;= n; i++) {
            graph.add(new ArrayList&amp;lt;&amp;gt;());
        }

        // 출입구 -&amp;gt; 산봉우리 단방향 등산로

        // 입구일 경우 다른 곳으로만 갈 수 있는 단방향
        // 산봉우리일 경우 특정 한 곳에서 산봉우리로 가는 단방향
        for (int[] path : paths) {
            int s = path[0];
            int e = path[1];
            int cost = path[2];

            if (isGate(s, gates) || isSummit(e, summits)) {
                graph.get(s).add(new Node(e, cost));
            } else if (isGate(e, gates) || isSummit(s, summits)) {
                graph.get(e).add(new Node(s, cost));
            } else {
                graph.get(s).add(new Node(e, cost)); // 일반 등산로 양방향
                graph.get(e).add(new Node(s, cost));
            }
        }

        answer = dijkstra(n, gates, summits);

        return answer;
    }

    public int[] dijkstra(int n, int[] gates, int[] summits) {
        int[] intensity = new int[n + 1];
        Queue&amp;lt;Node&amp;gt; q = new LinkedList&amp;lt;&amp;gt;();

        Arrays.fill(intensity, Integer.MAX_VALUE);

        for (int gate : gates) {
            q.add(new Node(gate, 0));
            intensity[gate] = 0; // 출입구
        }

        while (!q.isEmpty()) {
            Node nn = q.poll();

            if (intensity[nn.v] &amp;lt; nn.cost) {
                continue;
            }

            // intensity 갱신
            for (int i = 0; i &amp;lt; graph.get(nn.v).size(); i++) {
                Node u = graph.get(nn.v).get(i);

                // 최솟값 갱신
                int c = Math.max(intensity[nn.v], u.cost);
                if (intensity[u.v] &amp;gt; c) {
                    intensity[u.v] = c;
                    q.add(new Node(u.v, c));
                }
            }
        }

        // intensity가 최소가 되는 등산코스에 포함된 산봉우리 번호와 intensity의 최솟값
        int sv = 0; // 산봉우리 번호
        int smin = Integer.MAX_VALUE; // intensity 최솟값

        Arrays.sort(summits);

        for (int summit : summits) {
            if (intensity[summit] &amp;lt; smin) {
                smin = intensity[summit];
                sv = summit;
            }
        }

        int[] ans = {sv, smin};
        return ans;
    }

    public boolean isGate(int v, int[] gates) {
        for (int gate : gates) {
            if (v == gate) return true;
        }

        return false;
    }

    public boolean isSummit(int v, int[] summits) {
        for (int summit : summits) {
            if (v == summit) return true;
        }

        return false;
    }

    static private class Node {
        int v, cost;

        Node(int v, int cost) {
            this.v = v;
            this.cost = cost;
        }
    }
}&lt;/code&gt;&lt;/pre&gt;</description>
      <category>  코딩테스트/programmers</category>
      <author>gxxg</author>
      <guid isPermaLink="true">https://zero-talk.tistory.com/119</guid>
      <comments>https://zero-talk.tistory.com/119#entry119comment</comments>
      <pubDate>Thu, 5 Oct 2023 20:13:16 +0900</pubDate>
    </item>
    <item>
      <title>프로그래머스 2단계 : 124 나라의 숫자 (Java 자바)</title>
      <link>https://zero-talk.tistory.com/118</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;figure id=&quot;og_1696503526065&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;프로그래머스&quot; data-og-description=&quot;코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.&quot; data-og-host=&quot;programmers.co.kr&quot; data-og-source-url=&quot;https://school.programmers.co.kr/learn/courses/30/lessons/12899&quot; data-og-url=&quot;https://programmers.co.kr/&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/iGOoH/hyT56d9s6y/bl47v4yVlDbNiXQZzKXYy1/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630,https://scrap.kakaocdn.net/dn/heK9g/hyT52Qmz8W/l3sV04SyiRH8657M7QVcC1/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630&quot;&gt;&lt;a href=&quot;https://school.programmers.co.kr/learn/courses/30/lessons/12899&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://school.programmers.co.kr/learn/courses/30/lessons/12899&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/iGOoH/hyT56d9s6y/bl47v4yVlDbNiXQZzKXYy1/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630,https://scrap.kakaocdn.net/dn/heK9g/hyT52Qmz8W/l3sV04SyiRH8657M7QVcC1/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;프로그래머스&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;programmers.co.kr&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;문제&amp;nbsp;설명&lt;/span&gt;&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;124&amp;nbsp;나라가&amp;nbsp;있습니다.&amp;nbsp;124&amp;nbsp;나라에서는&amp;nbsp;10진법이&amp;nbsp;아닌&amp;nbsp;다음과&amp;nbsp;같은&amp;nbsp;자신들만의&amp;nbsp;규칙으로&amp;nbsp;수를&amp;nbsp;표현합니다. &lt;/span&gt;&lt;br /&gt;&lt;br /&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;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;124&amp;nbsp;나라에는&amp;nbsp;자연수만&amp;nbsp;존재합니다. &lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;124&amp;nbsp;나라에는&amp;nbsp;모든&amp;nbsp;수를&amp;nbsp;표현할&amp;nbsp;때&amp;nbsp;1,&amp;nbsp;2,&amp;nbsp;4만&amp;nbsp;사용합니다.&lt;/span&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;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;예를&amp;nbsp;들어서&amp;nbsp;124&amp;nbsp;나라에서&amp;nbsp;사용하는&amp;nbsp;숫자는&amp;nbsp;다음과&amp;nbsp;같이&amp;nbsp;변환됩니다.&lt;/span&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-origin-width=&quot;456&quot; data-origin-height=&quot;300&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/s1vwl/btsw2HITHU7/dxLOHoFzYqHD80LECoKWJK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/s1vwl/btsw2HITHU7/dxLOHoFzYqHD80LECoKWJK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/s1vwl/btsw2HITHU7/dxLOHoFzYqHD80LECoKWJK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fs1vwl%2Fbtsw2HITHU7%2FdxLOHoFzYqHD80LECoKWJK%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;300&quot; height=&quot;197&quot; data-origin-width=&quot;456&quot; data-origin-height=&quot;300&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;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;자연수&amp;nbsp;n이&amp;nbsp;매개변수로&amp;nbsp;주어질&amp;nbsp;때,&amp;nbsp;n을&amp;nbsp;124&amp;nbsp;나라에서&amp;nbsp;사용하는&amp;nbsp;숫자로&amp;nbsp;바꾼&amp;nbsp;값을&amp;nbsp;return&amp;nbsp;하도록&amp;nbsp;solution&amp;nbsp;함수를&amp;nbsp;완성해&amp;nbsp;주세요. &lt;/span&gt;&lt;br /&gt;&lt;br /&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;blockquote data-ke-style=&quot;style2&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;제한사항 &lt;/span&gt;&lt;/blockquote&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;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;n은&amp;nbsp;50,000,000이하의&amp;nbsp;자연수&amp;nbsp;입니다.&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;입출력 예&lt;/span&gt;&lt;/blockquote&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;180&quot; data-origin-height=&quot;249&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/tiC8z/btsw7wmvjHP/kIfS2E47VRTA5tMCMKcKn0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/tiC8z/btsw7wmvjHP/kIfS2E47VRTA5tMCMKcKn0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/tiC8z/btsw7wmvjHP/kIfS2E47VRTA5tMCMKcKn0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FtiC8z%2Fbtsw7wmvjHP%2FkIfS2E47VRTA5tMCMKcKn0%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;100&quot; height=&quot;138&quot; data-origin-width=&quot;180&quot; data-origin-height=&quot;249&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;&amp;nbsp;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;풀이&lt;/span&gt;&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;자연수 n을 124 나라의 숫자로 변환하는 문제입니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;1. 10진법 숫자 n을 124 나라의 숫자로 변환&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;2. 124 나라에서는 1, 2, 4만 사용되므로, 10진법의 숫자를 3진법처럼 생각하여 변환&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;3. 주어진 자연수 n을 3으로 나누어 나머지가 0일 때와 아닐 때를 처리하여 124 나라의 숫자로 변환하고,&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;4. 결과 문자열 answer에 앞쪽에 숫자를 계속 추가&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1696503650404&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;class Solution {
    public String solution(int n) {
        String answer = &quot;&quot;; // 결과를 저장할 문자열 초기화
        int[] country = { 0, 1, 2, 4 }; // 124 나라에서 사용되는 숫자 패턴

        while (n &amp;gt; 0) { // n이 양수인 동안 반복
            if (n % 3 == 0) { // n이 3으로 나누어 떨어질 때 (나머지가 0)
                answer = Integer.toString(country[3]).concat(answer); // &quot;4&quot;를 결과 문자열 앞에 추가
                n = n / 3 - 1; // n을 3으로 나누고 1을 뺌
            } else {
                answer = Integer.toString(country[n % 3]).concat(answer); // 1, 2, 4 중 하나를 결과 문자열 앞에 추가
                n /= 3; // n을 3으로 나눔
            }
        }
        return answer; // 최종 결과 문자열 반환
    }
}&lt;/code&gt;&lt;/pre&gt;</description>
      <category>  코딩테스트/programmers</category>
      <author>gxxg</author>
      <guid isPermaLink="true">https://zero-talk.tistory.com/118</guid>
      <comments>https://zero-talk.tistory.com/118#entry118comment</comments>
      <pubDate>Thu, 5 Oct 2023 20:02:39 +0900</pubDate>
    </item>
    <item>
      <title>프로그래머스 2단계 : 연속된 부분 수열의 합 (Java 자바)</title>
      <link>https://zero-talk.tistory.com/117</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;figure id=&quot;og_1696502909518&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;프로그래머스&quot; data-og-description=&quot;코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.&quot; data-og-host=&quot;programmers.co.kr&quot; data-og-source-url=&quot;https://school.programmers.co.kr/learn/courses/30/lessons/178870&quot; data-og-url=&quot;https://programmers.co.kr/&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/2umwA/hyT5XhbUbQ/keifI8TtnqgnWQ7NLtTul1/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630,https://scrap.kakaocdn.net/dn/gwoOL/hyT54HoKwN/KDWANfa4jq1IiQkDE4WAQ0/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630&quot;&gt;&lt;a href=&quot;https://school.programmers.co.kr/learn/courses/30/lessons/178870&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://school.programmers.co.kr/learn/courses/30/lessons/178870&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/2umwA/hyT5XhbUbQ/keifI8TtnqgnWQ7NLtTul1/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630,https://scrap.kakaocdn.net/dn/gwoOL/hyT54HoKwN/KDWANfa4jq1IiQkDE4WAQ0/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;프로그래머스&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;programmers.co.kr&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;문제&amp;nbsp;설명&lt;/span&gt;&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;비내림차순으로&amp;nbsp;정렬된&amp;nbsp;수열이&amp;nbsp;주어질&amp;nbsp;때,&amp;nbsp;다음&amp;nbsp;조건을&amp;nbsp;만족하는&amp;nbsp;부분&amp;nbsp;수열을&amp;nbsp;찾으려고&amp;nbsp;합니다. &lt;/span&gt;&lt;br /&gt;&lt;br /&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;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;기존&amp;nbsp;수열에서&amp;nbsp;임의의&amp;nbsp;두&amp;nbsp;인덱스의&amp;nbsp;원소와&amp;nbsp;그&amp;nbsp;사이의&amp;nbsp;원소를&amp;nbsp;모두&amp;nbsp;포함하는&amp;nbsp;부분&amp;nbsp;수열이어야&amp;nbsp;합니다. &lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;부분&amp;nbsp;수열의&amp;nbsp;합은&amp;nbsp;k입니다. &lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;합이&amp;nbsp;k인&amp;nbsp;부분&amp;nbsp;수열이&amp;nbsp;여러&amp;nbsp;개인&amp;nbsp;경우&amp;nbsp;길이가&amp;nbsp;짧은&amp;nbsp;수열을&amp;nbsp;찾습니다. &lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;길이가&amp;nbsp;짧은&amp;nbsp;수열이&amp;nbsp;여러&amp;nbsp;개인&amp;nbsp;경우&amp;nbsp;앞쪽(시작&amp;nbsp;인덱스가&amp;nbsp;작은)에&amp;nbsp;나오는&amp;nbsp;수열을&amp;nbsp;찾습니다. &lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;수열을&amp;nbsp;나타내는&amp;nbsp;정수&amp;nbsp;배열&amp;nbsp;sequence와&amp;nbsp;부분&amp;nbsp;수열의&amp;nbsp;합을&amp;nbsp;나타내는&amp;nbsp;정수&amp;nbsp;k가&amp;nbsp;매개변수로&amp;nbsp;주어질&amp;nbsp;때,&amp;nbsp;위&amp;nbsp;조건을&amp;nbsp;만족하는&amp;nbsp;부분&amp;nbsp;수열의&amp;nbsp;시작&amp;nbsp;인덱스와&amp;nbsp;마지막&amp;nbsp;인덱스를&amp;nbsp;배열에&amp;nbsp;담아&amp;nbsp;return&amp;nbsp;하는&amp;nbsp;solution&amp;nbsp;함수를&amp;nbsp;완성해주세요.&amp;nbsp;이때&amp;nbsp;수열의&amp;nbsp;인덱스는&amp;nbsp;0부터&amp;nbsp;시작합니다. &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;제한사항 &lt;/span&gt;&lt;/blockquote&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;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;5&amp;nbsp;&amp;le;&amp;nbsp;sequence의&amp;nbsp;길이&amp;nbsp;&amp;le;&amp;nbsp;1,000,000 &lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;1&amp;nbsp;&amp;le;&amp;nbsp;sequence의&amp;nbsp;원소&amp;nbsp;&amp;le;&amp;nbsp;1,000 &lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;sequence는&amp;nbsp;비내림차순으로&amp;nbsp;정렬되어&amp;nbsp;있습니다. &lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;5&amp;nbsp;&amp;le;&amp;nbsp;k&amp;nbsp;&amp;le;&amp;nbsp;1,000,000,000 &lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;k는&amp;nbsp;항상&amp;nbsp;sequence의&amp;nbsp;부분&amp;nbsp;수열로&amp;nbsp;만들&amp;nbsp;수&amp;nbsp;있는&amp;nbsp;값입니다.&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;입출력 예&lt;/span&gt;&lt;/blockquote&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;400&quot; data-origin-height=&quot;198&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/sjLiq/btswUTXeJ0a/5OSnh4ayK1wydQK1AVyKqK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/sjLiq/btswUTXeJ0a/5OSnh4ayK1wydQK1AVyKqK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/sjLiq/btswUTXeJ0a/5OSnh4ayK1wydQK1AVyKqK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FsjLiq%2FbtswUTXeJ0a%2F5OSnh4ayK1wydQK1AVyKqK%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;300&quot; height=&quot;149&quot; data-origin-width=&quot;400&quot; data-origin-height=&quot;198&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;&amp;nbsp;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;풀이&lt;/span&gt;&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;주어진 수열에서 합이 k가 되는 부분 수열을 찾는데, 길이가 짧고 시작 인덱스가 낮은 부분 수열을 반환합니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;주어진 조건을 만족하는 부분 수열을 효율적으로 찾아내고, 해당 부분 수열의 시작과 끝 인덱스를 반환합니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1696503023448&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;class Solution {
    public int[] solution(int[] sequence, int k) {
        int N = sequence.length; // 수열의 길이
        int left = 0, right = N; // 부분 수열의 시작과 끝 인덱스를 초기화
        int sum = 0; // 부분 수열의 합을 나타내는 변수

        for (int L = 0, R = 0; L &amp;lt; N; L++) { // L은 부분 수열의 시작 인덱스, R은 부분 수열의 끝 인덱스를 나타냄
            while (R &amp;lt; N &amp;amp;&amp;amp; sum &amp;lt; k) { // 부분 수열의 합이 k 미만이면 R을 증가시키며 합을 구함
                sum += sequence[R++];
            }

            if (sum == k) { // 합이 k와 같으면
                int range = R - L - 1; // 부분 수열의 길이를 구함
                if ((right - left) &amp;gt; range) { // 이전에 찾은 부분 수열보다 길이가 짧다면
                    left = L; // 시작 인덱스를 갱신
                    right = R - 1; // 끝 인덱스를 갱신
                }
            }

            sum -= sequence[L]; // 부분 수열의 합에서 L 위치의 값을 빼고 다음 부분 수열을 확인하기 위해 L을 증가
        }

        int[] answer = { left, right }; // 결과로 반환할 시작과 끝 인덱스를 배열로 생성

        return answer; // 결과 배열을 반환
    }
}&lt;/code&gt;&lt;/pre&gt;</description>
      <category>  코딩테스트/programmers</category>
      <author>gxxg</author>
      <guid isPermaLink="true">https://zero-talk.tistory.com/117</guid>
      <comments>https://zero-talk.tistory.com/117#entry117comment</comments>
      <pubDate>Thu, 5 Oct 2023 19:51:23 +0900</pubDate>
    </item>
    <item>
      <title>프로그래머스 2단계 : 큰 수 만들기 (Java 자바)</title>
      <link>https://zero-talk.tistory.com/116</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;figure id=&quot;og_1696502150198&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;프로그래머스&quot; data-og-description=&quot;코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.&quot; data-og-host=&quot;programmers.co.kr&quot; data-og-source-url=&quot;https://school.programmers.co.kr/learn/courses/30/lessons/42883&quot; data-og-url=&quot;https://programmers.co.kr/&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/PZpyC/hyT54Howlp/IbQVaakSHz5QqZy9ooU7Zk/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630,https://scrap.kakaocdn.net/dn/dDW3X3/hyT548umuV/pe8VMYZclOifVRoF8fAw41/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630&quot;&gt;&lt;a href=&quot;https://school.programmers.co.kr/learn/courses/30/lessons/42883&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://school.programmers.co.kr/learn/courses/30/lessons/42883&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/PZpyC/hyT54Howlp/IbQVaakSHz5QqZy9ooU7Zk/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630,https://scrap.kakaocdn.net/dn/dDW3X3/hyT548umuV/pe8VMYZclOifVRoF8fAw41/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;프로그래머스&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;programmers.co.kr&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;문제&amp;nbsp;설명&lt;/span&gt;&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;어떤&amp;nbsp;숫자에서&amp;nbsp;k개의&amp;nbsp;수를&amp;nbsp;제거했을&amp;nbsp;때&amp;nbsp;얻을&amp;nbsp;수&amp;nbsp;있는&amp;nbsp;가장&amp;nbsp;큰&amp;nbsp;숫자를&amp;nbsp;구하려&amp;nbsp;합니다. &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;예를&amp;nbsp;들어,&amp;nbsp;숫자&amp;nbsp;1924에서&amp;nbsp;수&amp;nbsp;두&amp;nbsp;개를&amp;nbsp;제거하면&amp;nbsp;[19,&amp;nbsp;12,&amp;nbsp;14,&amp;nbsp;92,&amp;nbsp;94,&amp;nbsp;24]&amp;nbsp;를&amp;nbsp;만들&amp;nbsp;수&amp;nbsp;있습니다.&amp;nbsp;이&amp;nbsp;중&amp;nbsp;가장&amp;nbsp;큰&amp;nbsp;숫자는&amp;nbsp;94&amp;nbsp;입니다. &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;문자열&amp;nbsp;형식으로&amp;nbsp;숫자&amp;nbsp;number와&amp;nbsp;제거할&amp;nbsp;수의&amp;nbsp;개수&amp;nbsp;k가&amp;nbsp;solution&amp;nbsp;함수의&amp;nbsp;매개변수로&amp;nbsp;주어집니다.&amp;nbsp;number에서&amp;nbsp;k&amp;nbsp;개의&amp;nbsp;수를&amp;nbsp;제거했을&amp;nbsp;때&amp;nbsp;만들&amp;nbsp;수&amp;nbsp;있는&amp;nbsp;수&amp;nbsp;중&amp;nbsp;가장&amp;nbsp;큰&amp;nbsp;숫자를&amp;nbsp;문자열&amp;nbsp;형태로&amp;nbsp;return&amp;nbsp;하도록&amp;nbsp;solution&amp;nbsp;함수를&amp;nbsp;완성하세요. &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;제한사항&lt;/span&gt;&lt;/blockquote&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;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;number는&amp;nbsp;2자리&amp;nbsp;이상,&amp;nbsp;1,000,000자리&amp;nbsp;이하인&amp;nbsp;숫자입니다. &lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;k는&amp;nbsp;1&amp;nbsp;이상&amp;nbsp;number의&amp;nbsp;자릿수&amp;nbsp;미만인&amp;nbsp;자연수입니다.&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;입출력 예&lt;/span&gt;&lt;/blockquote&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;406&quot; data-origin-height=&quot;196&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dbZ4sK/btswP0B81OO/81GkKdVG3wqkh7XQC53Ynk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dbZ4sK/btswP0B81OO/81GkKdVG3wqkh7XQC53Ynk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dbZ4sK/btswP0B81OO/81GkKdVG3wqkh7XQC53Ynk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdbZ4sK%2FbtswP0B81OO%2F81GkKdVG3wqkh7XQC53Ynk%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;350&quot; height=&quot;169&quot; data-origin-width=&quot;406&quot; data-origin-height=&quot;196&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;&amp;nbsp;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;풀이&lt;/span&gt;&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;주어진 숫자 number에서 k개의 수를 제거하여 얻을 수 있는 가장 큰 숫자를 구하는 문제입니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;1. 입력된 숫자를 자릿수별로 분해하여 배열에 저장한 후,&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;2. 남겨야 하는 숫자 개수(count)만큼 반복하면서 가장 큰 숫자를 찾아 결과에 추가&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;3. 이를 위해 func 함수를 사용하여 가능한 범위 내에서 가장 큰 숫자를 찾고,&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;4. 그 숫자를 결과에 추가&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;최종 결과는 문자열로 반환&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1696502257408&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import java.util.*;

class Solution {
    StringBuilder answer; // 결과를 저장할 StringBuilder

    public String solution(String number, int k) {
        answer = new StringBuilder();
        int[] num = new int[number.length()]; // 주어진 숫자를 각 자릿수별로 분해한 배열

        // 주어진 숫자를 각 자릿수별로 분해하여 배열에 저장
        for (int i = 0; i &amp;lt; num.length; i++) {
            num[i] = Integer.parseInt(number.substring(i, i + 1));
        }

        int count = num.length - k; // 남겨야 하는 숫자 개수
        int start = 0;

        // 남겨야 하는 숫자 개수만큼 반복하여 가장 큰 숫자를 찾고 결과에 추가
        while (count &amp;gt; 0) {
            start = func(num, count, start); // 가장 큰 숫자를 찾는 함수 호출
            count--;
        }

        return answer.toString(); // 결과를 문자열로 반환
    }

    public int func(int[] n, int count, int start) {
        int max = n[start]; // 현재 위치부터 시작하는 가장 큰 숫자
        int index = start;

        // 가능한 범위 내에서 가장 큰 숫자를 찾음
        for (int i = start; i &amp;lt;= n.length - count; i++) {
            if (n[i] &amp;gt; max) {
                max = n[i];
                index = i;
            }
        }

        answer.append(max); // 가장 큰 숫자를 결과에 추가
        return index + 1; // 다음 탐색 시작 위치 반환
    }
}&lt;/code&gt;&lt;/pre&gt;</description>
      <category>  코딩테스트/programmers</category>
      <author>gxxg</author>
      <guid isPermaLink="true">https://zero-talk.tistory.com/116</guid>
      <comments>https://zero-talk.tistory.com/116#entry116comment</comments>
      <pubDate>Thu, 5 Oct 2023 19:40:12 +0900</pubDate>
    </item>
    <item>
      <title>프로그래머스 3단계 : 110 옮기기 (Java 자바)</title>
      <link>https://zero-talk.tistory.com/115</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;figure id=&quot;og_1696501404449&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;프로그래머스&quot; data-og-description=&quot;코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.&quot; data-og-host=&quot;programmers.co.kr&quot; data-og-source-url=&quot;https://school.programmers.co.kr/learn/courses/30/lessons/77886?language=java&quot; data-og-url=&quot;https://programmers.co.kr/&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/DvJMn/hyT5TlxV5h/Mao02x6tKiKaI8LuaWlT5K/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630,https://scrap.kakaocdn.net/dn/yHEwP/hyT5ZTDyUp/bg7wFnCEwyC4uqDIwtYJUK/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630&quot;&gt;&lt;a href=&quot;https://school.programmers.co.kr/learn/courses/30/lessons/77886?language=java&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://school.programmers.co.kr/learn/courses/30/lessons/77886?language=java&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/DvJMn/hyT5TlxV5h/Mao02x6tKiKaI8LuaWlT5K/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630,https://scrap.kakaocdn.net/dn/yHEwP/hyT5ZTDyUp/bg7wFnCEwyC4uqDIwtYJUK/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;프로그래머스&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;programmers.co.kr&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;문제 설명&lt;/span&gt;&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;0과&amp;nbsp;1로&amp;nbsp;이루어진&amp;nbsp;어떤&amp;nbsp;문자열&amp;nbsp;x에&amp;nbsp;대해서,&amp;nbsp;당신은&amp;nbsp;다음과&amp;nbsp;같은&amp;nbsp;행동을&amp;nbsp;통해&amp;nbsp;x를&amp;nbsp;최대한&amp;nbsp;사전&amp;nbsp;순으로&amp;nbsp;앞에&amp;nbsp;오도록&amp;nbsp;만들고자&amp;nbsp;합니다. &lt;/span&gt;&lt;br /&gt;&lt;br /&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;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;x에&amp;nbsp;있는&amp;nbsp;&quot;110&quot;을&amp;nbsp;뽑아서,&amp;nbsp;임의의&amp;nbsp;위치에&amp;nbsp;다시&amp;nbsp;삽입합니다.&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;예를&amp;nbsp;들어,&amp;nbsp;x&amp;nbsp;=&amp;nbsp;&quot;11100&quot;&amp;nbsp;일&amp;nbsp;때,&amp;nbsp;여기서&amp;nbsp;중앙에&amp;nbsp;있는&amp;nbsp;&quot;110&quot;을&amp;nbsp;뽑으면&amp;nbsp;x&amp;nbsp;=&amp;nbsp;&quot;10&quot;&amp;nbsp;이&amp;nbsp;됩니다.&amp;nbsp;뽑았던&amp;nbsp;&quot;110&quot;을&amp;nbsp;x의&amp;nbsp;맨&amp;nbsp;앞에&amp;nbsp;다시&amp;nbsp;삽입하면&amp;nbsp;x&amp;nbsp;=&amp;nbsp;&quot;11010&quot;&amp;nbsp;이&amp;nbsp;됩니다. &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;변형시킬&amp;nbsp;문자열&amp;nbsp;x가&amp;nbsp;여러&amp;nbsp;개&amp;nbsp;들어있는&amp;nbsp;문자열&amp;nbsp;배열&amp;nbsp;s가&amp;nbsp;주어졌을&amp;nbsp;때,&amp;nbsp;각&amp;nbsp;문자열에&amp;nbsp;대해서&amp;nbsp;위의&amp;nbsp;행동으로&amp;nbsp;변형해서&amp;nbsp;만들&amp;nbsp;수&amp;nbsp;있는&amp;nbsp;문자열&amp;nbsp;중&amp;nbsp;사전&amp;nbsp;순으로&amp;nbsp;가장&amp;nbsp;앞에&amp;nbsp;오는&amp;nbsp;문자열을&amp;nbsp;배열에&amp;nbsp;담아&amp;nbsp;return&amp;nbsp;하도록&amp;nbsp;solution&amp;nbsp;함수를&amp;nbsp;완성해주세요.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;제한사항&lt;/span&gt;&lt;/blockquote&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;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;1&amp;nbsp;&amp;le;&amp;nbsp;s의&amp;nbsp;길이&amp;nbsp;&amp;le;&amp;nbsp;1,000,000&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;1&amp;nbsp;&amp;le;&amp;nbsp;s의&amp;nbsp;각&amp;nbsp;원소&amp;nbsp;길이&amp;nbsp;&amp;le;&amp;nbsp;1,000,000&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;1&amp;nbsp;&amp;le;&amp;nbsp;s의&amp;nbsp;모든&amp;nbsp;원소의&amp;nbsp;길이의&amp;nbsp;합&amp;nbsp;&amp;le;&amp;nbsp;1,000,000&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;입출력 예&lt;/span&gt;&lt;/blockquote&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;910&quot; data-origin-height=&quot;94&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bYHzLP/btswPXL9gRV/Vkku7rx2TLv4aNfb7HYWk0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bYHzLP/btswPXL9gRV/Vkku7rx2TLv4aNfb7HYWk0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bYHzLP/btswPXL9gRV/Vkku7rx2TLv4aNfb7HYWk0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbYHzLP%2FbtswPXL9gRV%2FVkku7rx2TLv4aNfb7HYWk0%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;52&quot; data-origin-width=&quot;910&quot; data-origin-height=&quot;94&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;&amp;nbsp;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;풀이&lt;/span&gt;&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1696501579928&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;class Solution {
    public String[] solution(String[] s) {
        String[] ret = new String[s.length]; // 결과를 저장할 배열
        for (int i = 0; i &amp;lt; s.length; i++) {
            ret[i] = helper(s[i]); // 각 문자열을 변형하여 결과 배열에 저장
        }
        return ret; // 결과 배열 반환
    }

    public String helper(String s) {
        StringBuilder sb = new StringBuilder(); // 변형된 문자열을 저장할 StringBuilder
        StringBuilder plus = new StringBuilder(); // &quot;110&quot;을 뽑아서 삽입할 StringBuilder

        for (int i = 0; i &amp;lt; s.length(); i++) {
            char c = s.charAt(i);
            sb.append(c); // 현재 문자를 변형된 문자열에 추가

            // &quot;110&quot; 패턴이 발견되면 plus StringBuilder에 추가하고 변형된 문자열에서 제거
            if (sb.length() &amp;gt;= 3 &amp;amp;&amp;amp; sb.charAt(sb.length() - 3) == '1' &amp;amp;&amp;amp; sb.charAt(sb.length() - 2) == '1' &amp;amp;&amp;amp; sb.charAt(sb.length() - 1) == '0') {
                plus.append(&quot;110&quot;);
                sb.delete(sb.length() - 3, sb.length());
            }
        }

        // plus에 &quot;110&quot;이 있을 경우, 변형된 문자열에 추가
        if (plus.length() &amp;gt; 0) {
            if (sb.indexOf(&quot;0&quot;) == -1) {
                sb.insert(0, plus); // 문자열에 &quot;0&quot;이 없으면 plus를 맨 앞에 추가
            } else {
                sb.insert(sb.lastIndexOf(&quot;0&quot;) + 1, plus); // &quot;0&quot;이 있는 위치 뒤에 plus를 추가
            }
        }

        return sb.toString(); // 변형된 문자열 반환
    }
}&lt;/code&gt;&lt;/pre&gt;</description>
      <category>  코딩테스트/programmers</category>
      <author>gxxg</author>
      <guid isPermaLink="true">https://zero-talk.tistory.com/115</guid>
      <comments>https://zero-talk.tistory.com/115#entry115comment</comments>
      <pubDate>Thu, 5 Oct 2023 19:27:38 +0900</pubDate>
    </item>
    <item>
      <title>[Oracle] DML로 데이터 관리하기</title>
      <link>https://zero-talk.tistory.com/114</link>
      <description>&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #333333;&quot;&gt;1. INSERT : 데이터 입력&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #333333;&quot;&gt;2. UPDATE : 데이터 변경&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #333333;&quot;&gt;3. DELETE : 데이터 삭제&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #333333;&quot;&gt;4. MERGE : 데이터 병합&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #333333;&quot;&gt;5. TRANSACTION&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&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;style2&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;&amp;nbsp;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style1&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #333333;&quot;&gt;데이터를 관리하는 명령어&lt;/span&gt;&lt;/blockquote&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #dddddd;&quot;&gt;* 참고 자료&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #dddddd;&quot;&gt;&lt;a style=&quot;color: #dddddd;&quot; href=&quot;https://parkjye.tistory.com/m/66?category=962077&quot;&gt;https://parkjye.tistory.com/m/66?category=962077&lt;/a&gt; 연습용 계정 scott과 emp 생성&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #dddddd;&quot;&gt;&lt;a style=&quot;color: #dddddd;&quot; href=&quot;https://m.blog.naver.com/ksseo63/222025467187&quot;&gt;https://m.blog.naver.com/ksseo63/222025467187&lt;/a&gt; 테스트 데이터 설치&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #dddddd;&quot;&gt;&lt;a style=&quot;color: #dddddd;&quot; href=&quot;https://java7.tistory.com/164&quot;&gt;https://java7.tistory.com/164&lt;/a&gt; emp, dept 테이블 생성&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #333333;&quot;&gt;INSERT : 데이터 입력&lt;/span&gt;&lt;/blockquote&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #333333;&quot;&gt;&lt;span style=&quot;background-color: #f6e199;&quot;&gt;INSERT&lt;/span&gt; 명령어는 &lt;span style=&quot;background-color: #f6e199;&quot;&gt;테이블에 새로운 데이터를 입력&lt;/span&gt;할 때 사용하는 명령어이다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #333333;&quot;&gt;숫자 값 이외의 데이터는 작은따옴표(' ')로 감싸야 한다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #333333;&quot;&gt;문법: INSERT를 사용하여 1행씩 입력하기&lt;/span&gt;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #333333;&quot;&gt;INSERT INTO table [(column 1), ( column 2), ...] VALUES (value1, value2, ...);&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #333333;&quot;&gt;* value : 해당 컬럼에 들어갈 값 명시&lt;/span&gt;&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #333333;&quot;&gt;# 사용 예1&lt;/span&gt;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #333333;&quot;&gt;Ex1. Dept2 테이블에 아래와 같은 내용으로 새로운 부서 정보를 입력하세요.&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #333333;&quot;&gt;부서번호(dcode): 9000&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #333333;&quot;&gt;부서명(dname): temp_1&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #333333;&quot;&gt;상위부서(pdept): 1006&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #333333;&quot;&gt;지역(area): temp area&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #333333;&quot;&gt;&amp;gt; INSERT INTO dept2 (dcode, dname, pdept, area) VALUES (9000,' temp_1', 1006, 'temp area');&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;background-color: #ffffff; font-family: 'Noto Sans Light'; color: #333333;&quot;&gt;&lt;span style=&quot;background-color: #c0d1e7;&quot;&gt;Ex2.&lt;/span&gt; Dept2 테이블에 아래와 같은 내용으로 부서 정보를 입력하세요.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #333333;&quot;&gt;부서번호(dcode): 9000&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #333333;&quot;&gt;부서명(dname): 특판1팀&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #333333;&quot;&gt;상위부서(pdept): 영업부&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #333333;&quot;&gt;지역(area): 임시지역&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #333333;&quot;&gt;&amp;gt; INSERT INTO dept2 (dcode, dname, pdept, area) VALUES (9000, '특판1팀', '영업부', '임시지역');&lt;/span&gt;&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #333333;&quot;&gt;문법2: 모든 컬럼에 데이터를 삽입할 경우 컬럼명 생략 가능&lt;/span&gt;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #333333;&quot;&gt;INSERT INTO table VALUES (value1, value2, ...);&lt;/span&gt;&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #333333;&quot;&gt;위 예제 2번의 쿼리문을 2번 문법을 쓰면 아래와 같이 작성할 수 있다.&lt;/span&gt;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #333333;&quot;&gt;&amp;gt; INSERT INTO dept2 VALUES (9000,' 특판1팀', '영업부', '임시지역');&lt;/span&gt;&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #333333;&quot;&gt;# 사용 예2: 특정 컬럼에 값 입력하기&lt;/span&gt;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #333333;&quot;&gt;부서번호(dcode)와 부서명(dname), 상위부서(pdept) 값만 아래의 값으로 입력하세요.&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #333333;&quot;&gt;부서번호: 9002&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #333333;&quot;&gt;부서명: temp_3&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #333333;&quot;&gt;상위부서: Business Departmant(1006번 부서)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #333333;&quot;&gt;&amp;gt; INSERT INTO dept2 (dcode, dname, pdept) VALUES (9002, 'temp_3', 1006);&lt;/span&gt;&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #c0d1e7; font-family: 'Noto Sans Light'; color: #333333;&quot;&gt;# 퀴즈&lt;/span&gt;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #333333;&quot;&gt;Ex3. 아래 정보를 professor 테이블에 입력하세요. (날짜 데이터 입력)&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #333333;&quot;&gt;교수번호(profno): 5001&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #333333;&quot;&gt;교수이름(name): 이광희&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #333333;&quot;&gt;ID: Gwang&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #333333;&quot;&gt;POSITION: 정교수&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #333333;&quot;&gt;PAY: 1000&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #333333;&quot;&gt;입사일: 2023년 12월 21일&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #333333;&quot;&gt;&amp;gt; INSERT INTO professor (profno, name, id, position, pay, hiredate)&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #333333;&quot;&gt;&amp;nbsp; &amp;nbsp;VALUES (5001, '이광희', 'Gwang', '정교수', 1000, '2023-12-21')&lt;/span&gt;&lt;/blockquote&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 style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #333333;&quot;&gt;* 날짜 형식&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #333333;&quot;&gt;유닉스(리눅스)용 오라클: DD-MON-YY&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #333333;&quot;&gt;윈도우용 오라클: YYYY-MM-DD&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #333333;&quot;&gt;* 유닉스용(리눅스) 오라클(DD-MON-YY) &lt;span style=&quot;text-align: start;&quot;&gt;과 &lt;/span&gt;윈도우용 오라클(YYYY-MM-DD)이 다르기 때문에 유닉스용 오라클에서는 &lt;span style=&quot;background-color: #f6e199;&quot;&gt;① 날짜 형식을 미리 변경한 후 '2023-10-02' 형식으로 입력&lt;/span&gt;하든지 &lt;span style=&quot;background-color: #f6e199;&quot;&gt;② 날짜 부분에 TO_DATE 함수를 사용하여 TO_DATE('2023-10-23', 'YYYY-MM-DD') 형식으로 입력&lt;/span&gt;해야 한다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #333333;&quot;&gt;날짜 형식을 변경하는 명령어&lt;/span&gt;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #333333;&quot;&gt;ALTER SESSION SET NLS_DATE_FORMAT='YYYY-MM-DD:HH24:MI:SS';&lt;/span&gt;&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #333333;&quot;&gt;# 사용 예1: 날짜 데이터 입력하기&lt;/span&gt;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #333333;&quot;&gt;앞에서 몇 차례 언급이 된 부분인데, 윈도우와 유닉스 계열은 날짜 형태가 다르므로 날짜 데이터를 입력할 때 형태를 잘 맞춰야 합니다. 아래의 예는 유닉스 계열의 오라클에서 윈도우용 오라클에서 사용하는 날짜 형태로 입력하는 예제입니다. 아래 정보를 professor 테이블에 입력하세요.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #333333;&quot;&gt;교수번호(profno): 5001&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #333333;&quot;&gt;교수이름(name): James Bond&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #333333;&quot;&gt;ID(id): Love_me&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #333333;&quot;&gt;POSITION(position): a full professor&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #333333;&quot;&gt;PAY(pay): 500&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #333333;&quot;&gt;입사일(hiredate): 2014년 10월 23일&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #333333;&quot;&gt;&amp;gt; ALTER SESSION SET NLS_DATE_FORMAT='YYYY-MM-DD:HH24:MI:SS';&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #333333;&quot;&gt;&amp;gt; INSERT INTO professor (profno, name, id, position, pay, hiredate)&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #333333;&quot;&gt;&amp;nbsp; &amp;nbsp;VALUES (5001, 'James Bond', 'Love_me', 'a full professor', 500, '2014-10-23');&lt;/span&gt;&lt;/blockquote&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;span style=&quot;font-family: 'Noto Sans Light'; color: #333333;&quot;&gt;Null 값 입력하기&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #333333;&quot;&gt;자동 Null 값 입력하기: 데이터를 입력할 때 컬럼에 값을 안 주면 자동으로 Null이 삽입된다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #333333;&quot;&gt;수동 Null 값 입력하기: 입력할 데이터 부분에 Null을 작성하면 입력된다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #333333;&quot;&gt;사용 예5: 음수 값 입력하기&lt;/span&gt;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #333333;&quot;&gt;아래와 같이 t_minus 테이블을 생성한 후 음수 값을 입력하는 테스트를 해보겠습니다.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #333333;&quot;&gt;&amp;gt; CREATE TABLE t_minus (&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #333333;&quot;&gt;&amp;nbsp; &amp;nbsp;no1 NUMBER,&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #333333;&quot;&gt;&amp;nbsp; &amp;nbsp;no2 NUMBER(3),&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #333333;&quot;&gt;&amp;nbsp; &amp;nbsp;no3 NUMBER(3, 2));&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #333333;&quot;&gt;&amp;gt; INSERT INTO t_minus VALUES (1, 1, 1);&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #333333;&quot;&gt;&amp;gt; INSERT INTO t_minus VALUES (1.1, 1.1, 1.1);&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #333333;&quot;&gt;&amp;gt; INSERT INTO t_minus VALUES (-1.1, -1.1, -1.1);&lt;/span&gt;&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #333333;&quot;&gt;위 쿼리문을 잘 살펴보면,&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #333333;&quot;&gt;no1은 NUMBER형을 사용할 때 자릿수를 지정하지 않았고&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #333333;&quot;&gt;no2는 정수부 자릿수로 3자리를 지정했고&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #333333;&quot;&gt;no3는 소수점 이하 자릿수까지 지정했다는 의미이다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #333333;&quot;&gt;데이터를 조회하면 no1과 no3는 동일하게 정수와 소수 및 음수까지 이상없이 출력되지만 no2의 경우 소수점 이하가 표시되지 않는다는 것을 알 수 있다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;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;span style=&quot;font-family: 'Noto Sans Light'; color: #333333;&quot;&gt;INSERT와 서브 쿼리를 사용하여 여러 행 입력하기&lt;/span&gt;&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;span style=&quot;font-family: 'Noto Sans Light'; color: #333333;&quot;&gt;professor 테이블을 복사하여 professor2 테이블 생성하기&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #333333;&quot;&gt;&amp;gt; CREATE TABLE professor2&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #333333;&quot;&gt;&amp;nbsp; &amp;nbsp;SELECT * FROM professor&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #333333;&quot;&gt;&amp;nbsp; &amp;nbsp;WHERE 1 = 2; // 테이블은 복사하되, 데이터는 입력되지 않도록 하기 위함&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #333333;&quot;&gt;&amp;gt; SELECT * FROM professor2&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #333333;&quot;&gt;no row selected&lt;/span&gt;&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #333333;&quot;&gt;서브쿼리를 사용하여 여러 건의 데이터를 한 번에 입력할 수 있습니다.&lt;/span&gt;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #333333;&quot;&gt;&amp;gt; CREATE TABLE pofessor2&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #333333;&quot;&gt;&amp;nbsp; &amp;nbsp;SELECT * FROM professor;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #333333;&quot;&gt;&amp;gt; SELECT * FROM professor2;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #333333;&quot;&gt;17 row selected&lt;/span&gt;&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #333333;&quot;&gt;이처럼 서브 쿼리를 사용하여 여러 데이터를 가져와서 입력하는 방법을 ITAS라고 한다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #333333;&quot;&gt;서브쿼리를 사용하여 테이블을 생성할 때, 복사한 테이블(&lt;span style=&quot;background-color: #fcfcfc; text-align: left;&quot;&gt;professor&lt;/span&gt;)과 복사할 테이블(&lt;span style=&quot;background-color: #fcfcfc; text-align: left;&quot;&gt;professor2&lt;/span&gt;)은 컬럼의 개수와 데이터 형이 동일해야 한다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&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;span style=&quot;font-family: 'Noto Sans Light'; color: #333333;&quot;&gt;INSERT ALL을 이용한 여러 테이블에 여러 행 입력하기&lt;/span&gt;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #333333;&quot;&gt;1. prof_1, prof_2 테이블 생성&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #333333;&quot;&gt;&amp;gt; CREATE TABLE prof_1 (&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #333333;&quot;&gt;&amp;nbsp; &amp;nbsp;profno NUMBER,&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #333333;&quot;&gt;&amp;nbsp; &amp;nbsp;name VARCHAR(25));&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&amp;gt; &lt;/span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;CREATE TABLE prof_2 (&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #333333;&quot;&gt;&amp;nbsp; &amp;nbsp;profno NUMBER,&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #333333;&quot;&gt;&amp;nbsp; &amp;nbsp;name VARCHAR(25));&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;background-color: #c0d1e7;&quot;&gt;2. 다중 테이블에 다중 행 입력하기&lt;/span&gt; &lt;br /&gt;INSERT ALL 명령문은 서브 쿼리의 결과 집합을 조건 없이 여러 테이블에 동시에 입력하기 위한 명령문 &lt;br /&gt;&lt;br /&gt;&amp;gt; INSERT ALL &lt;br /&gt;&amp;nbsp; &amp;nbsp;INSERT EMP_HIR VALUES(EMPNO, ENAME, HIREDATE) &lt;br /&gt;&amp;nbsp; &amp;nbsp;INSERT EMP_MGR VALUES(EMPNO, ENAME, MGR) &lt;br /&gt;&amp;nbsp; &amp;nbsp;SELECT EMPNO, ENAME, HIREDATE, MGR &lt;br /&gt;&amp;nbsp; &amp;nbsp;FROM EMP &lt;br /&gt;&amp;nbsp; &amp;nbsp;WHERE DEPTNO=20;&lt;br /&gt;&lt;/span&gt;&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #333333;&quot;&gt;사용 예1: 다른 테이블에 한 번에 데이터 입력하기&lt;/span&gt;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #333333;&quot;&gt;&amp;gt; INSERT ALL&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #333333;&quot;&gt;&amp;nbsp; &amp;nbsp;INTO p_01 (no, name)&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #333333;&quot;&gt;&amp;nbsp; &amp;nbsp;VALUES (1, 'AAA')&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #333333;&quot;&gt;&amp;nbsp; &amp;nbsp;INTO p_02 (no, name)&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #333333;&quot;&gt;&amp;nbsp; &amp;nbsp;VALUES (2, 'BBB')&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #333333;&quot;&gt;&amp;gt; SELECT * FROM dual;&lt;/span&gt;&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #333333;&quot;&gt;사용 예2: 다른 테이블의 데이터를 가져와서 입력하기&lt;/span&gt;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #333333;&quot;&gt;professor 테이블에서 교수 번호가 1000번에서 1999번까지인 교수의 번호와 교수 이름은 prof_1 테이블에 입력하고 교수 번호가 2000번에서 2999번까지인 교수의 번호와 이름은 prof_2 테이블에 입력하세요.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #333333;&quot;&gt;&amp;gt; INSERT ALL&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #333333;&quot;&gt;&amp;nbsp; &amp;nbsp;WHEN profno BETWEEN 1000 AND 1999 THEN INTO prof_1 VALUES (profno, name)&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #333333;&quot;&gt;&amp;nbsp;&amp;nbsp; WHEN profno BETWEEN 2000 AND 2999 THEN INTO prof_2 VALUES (profno, name)&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #333333;&quot;&gt;&amp;nbsp; &amp;nbsp;SELECT profno, name&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #333333;&quot;&gt;&amp;nbsp; &amp;nbsp;FROM professor;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #333333;&quot;&gt;6 row selected&lt;/span&gt;&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #333333;&quot;&gt;사용 예3: 다른 테이블에 동시에 같은 데이터 입력하기&lt;/span&gt;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #333333;&quot;&gt;prof_3과 prof_4 테이블의 데이터를 TRUNCATE로 삭제한 후 professor 테이블에서 교수 번호가 3000번에서 3999번인 교수들의 교수 번호와 이름을 prof_3 테이블과 prof_4 테이블에 동시에 입력하세요.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #333333;&quot;&gt;&amp;gt; TRUNCATE TABLE prof_3;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #333333;&quot;&gt;&amp;gt; TRUNCATE TABLE prof_4;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #333333;&quot;&gt;&amp;gt; INSERT ALL&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #333333;&quot;&gt;&amp;nbsp; &amp;nbsp;INTO prof_3 VALUES (profno, name)&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #333333;&quot;&gt;&amp;nbsp; &amp;nbsp;INTO prof_4 VALUES (profno, name)&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #333333;&quot;&gt;&amp;nbsp; &amp;nbsp;SELECT profno, name&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #333333;&quot;&gt;&amp;nbsp; &amp;nbsp;FROM professor&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #333333;&quot;&gt;&amp;nbsp; &amp;nbsp;WHERE profno BETWEEN 2000 AND 3999;&lt;/span&gt;&lt;/blockquote&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;style2&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #333333;&quot;&gt;UPDATE : 데이터 변경&lt;/span&gt;&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #333333;&quot;&gt;&lt;span style=&quot;background-color: #f6e199;&quot;&gt;UPDATE&lt;/span&gt;는 &lt;span style=&quot;background-color: #f6e199;&quot;&gt;기존의 데이터를 다른 데이터로 변경&lt;/span&gt;할 때 사용하는 방법이다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #333333;&quot;&gt;UPDATE 문장에서 WHERE절을 누락시키지 않도록 주의해야 한다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #333333;&quot;&gt;문법&lt;/span&gt;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #333333;&quot;&gt;UPDATE table&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #333333;&quot;&gt;SET column = value&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #333333;&quot;&gt;WHERE 조건;&lt;/span&gt;&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #c0d1e7; font-family: 'Noto Sans Light'; color: #333333;&quot;&gt;# 사용 예1&lt;/span&gt;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #333333;&quot;&gt;Professor 테이블에서 직급이 조교수(assistant professor)인 교수들의 BONUS를 100만원으로 인상하세요.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #333333;&quot;&gt;&amp;gt; UPDATE professor&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #333333;&quot;&gt;&amp;nbsp; &amp;nbsp;SET BONUS = 100&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #333333;&quot;&gt;&amp;nbsp; &amp;nbsp;WHERE position = 'assistant professor';&lt;/span&gt;&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #c0d1e7; font-family: 'Noto Sans Light'; color: #333333;&quot;&gt;# 사용 예2&lt;/span&gt;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #333333;&quot;&gt;professor 테이블에서 'Sharon Stone' 교수의 직급과 동일한 직급을 가진 교수들 중 현재 급여가 250만원이 안 되는 교수들의 급여를 15% 인상하세요.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #333333;&quot;&gt;&amp;gt; UPDATE professor&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #333333;&quot;&gt;&amp;nbsp; &amp;nbsp;SET pay = pay * 1.15&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #333333;&quot;&gt;&amp;nbsp; &amp;nbsp;WHERE position =&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #333333;&quot;&gt;&amp;nbsp; &amp;nbsp;( SELECT position&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #333333;&quot;&gt;&amp;nbsp; &amp;nbsp;FROM professor&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #333333;&quot;&gt;&amp;nbsp; &amp;nbsp;WHERE name = 'Sharon Stone')&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #333333;&quot;&gt;&amp;nbsp; &amp;nbsp;AND pay &amp;lt; 250;&lt;/span&gt;&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #c0d1e7; font-family: 'Noto Sans Light';&quot;&gt;# 사용 예3&lt;/span&gt;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;-- 테이블의 특정 행만 변경 실습&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;-- Q. 1983년에 입사한 사원의 입사일을 오늘로 수정&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;--*HINT : SUBSTR&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&amp;gt; UPDATE EMP01&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&amp;nbsp; &amp;nbsp;SET HIREDATE = SYSDATE&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&amp;nbsp; &amp;nbsp;WHERE SUBSTR(HIREDATE, 1, 2) = &amp;lsquo;83&amp;rsquo;;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;해석:&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;SUBSTR은 SQL에서 문자열의 일부분을 추출하는 함수입니다.&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;SUBSTR(문자열, 시작 위치, 길이)와 같은 형태로 사용하며, 여기서 &quot;시작 위치&quot;는 1부터 시작합니다.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;SUBSTR(HIREDATE, 1, 2) = '83'는 HIREDATE 필드의 값에서 첫 번째 위치부터 두 글자를 추출하여 그 값이 '83'인지 비교하는 조건입니다.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;HIREDATE 필드가 날짜 형식(DATE type)인 경우 SUBSTR 함수를 직접 사용할 수 없습니다.&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;문자열 함수를 날짜에 바로 적용하려고 하면 오류 발생&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;HIREDATE 값을 문자열로 변환한 후에 SUBSTR 함수를 적용&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&amp;gt; UPDATE EMP01&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&amp;nbsp; &amp;nbsp;SET HIREDATE = SYSDATE&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&amp;nbsp; &amp;nbsp;WHERE SUBSTR(TO_CHAR(HIREDATE, 'YYYY'), 3, 2) = '83';&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;해석:&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;TO_CHAR 함수를 사용하여 HIREDATE 값을 'YYYY' 형식의 문자열로 변환한 후, 그 결과에서 세 번째 위치부터 두 글자('83')를 추출하여 비교하는 방식으로 작동&lt;/span&gt;&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #333333;&quot;&gt;DELETE : 데이터 삭제&lt;/span&gt;&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #333333;&quot;&gt;&lt;span style=&quot;background-color: #f6e199;&quot;&gt;DELETE&lt;/span&gt;는 &lt;span style=&quot;background-color: #f6e199;&quot;&gt;데이터를 삭제&lt;/span&gt;하는 구문이다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #333333;&quot;&gt;문법&lt;/span&gt;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #333333;&quot;&gt;DELETE FROM table&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #333333;&quot;&gt;WHERE 조건;&lt;/span&gt;&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #333333;&quot;&gt;# 사용 예&lt;/span&gt;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #333333;&quot;&gt;Dept2 테이블에서 부서번호(dcode)가 9000에서 9100번 사이인 매장들을 삭제하세요.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #333333;&quot;&gt;&amp;gt; DELETE FROM dept2&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #333333;&quot;&gt;&amp;nbsp; &amp;nbsp;WHERE dcode &amp;gt;= 9000 AND dcode =&amp;lt; 9100;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #333333;&quot;&gt;또는&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #333333;&quot;&gt;&amp;gt; DELETE FROM dept2&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #333333;&quot;&gt;&amp;nbsp; &amp;nbsp;WHERE dcode BETWEEN 9000 AND 9100;&lt;/span&gt;&lt;/blockquote&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #333333;&quot;&gt;* DELETE문은 데이터를 삭제한다고 알고 있지만, 사실 데이터는 삭제되지 않고 해당 블록에 그대로 남아 있다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #333333;&quot;&gt;1) DELETE문은 해당 데이터가 사용하고 있던 파일의 저장 공간은 반납하지 않고 데이터만 삭제하는 구문&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #333333;&quot;&gt;2) 데이터는 삭제되지 않고 해당 블록에 그대로 남아있으며 BBED 등의 툴을 이용하면 DELETE된 데이터도 복구 가능&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #333333;&quot;&gt;3) DELETE를 한 후에 테이블의 크기를 확인해보면 크기가 줄어들지 않고 그대로인 것을 확인 가능 (저장공간을 반납하지 않기 때문에 용량이 줄어들지 않는다는 의미)&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #333333;&quot;&gt;4) 만약 모든 데이터가 지워졌는데 용량까지 줄이고 싶다면 REORG 작업을 별도로 해줘야 한다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #333333;&quot;&gt;실습1: 테이블 생성&lt;/span&gt;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #333333;&quot;&gt;&amp;gt; CONN / AS sysdba;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #333333;&quot;&gt;&amp;gt; CREATE TABLE scott.test01 (no NUMBER, name VARCHAR(20), addr VARCHAR(20));&lt;/span&gt;&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #333333;&quot;&gt;실습2: 위에서 생성했던 scott.test01 테이블에 데이터 추가&lt;/span&gt;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #333333;&quot;&gt;&amp;gt; BEGIN FOR i IN 1..1000 LOOP&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #333333;&quot;&gt;&amp;nbsp; &amp;nbsp;INSERT INTO scott.test01&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #333333;&quot;&gt;&amp;nbsp; &amp;nbsp;VALUES (i, DBMS_RANDOM.STRING('A', 19), DBMS_RANDOM.STRING('B', 19));&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #333333;&quot;&gt;&amp;nbsp; &amp;nbsp;END LOOP;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #333333;&quot;&gt;&amp;nbsp; &amp;nbsp;COMMIT;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #333333;&quot;&gt;&amp;nbsp; &amp;nbsp;END;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #333333;&quot;&gt;&amp;nbsp; &amp;nbsp;/&lt;/span&gt;&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #333333;&quot;&gt;실습3: 데이터 건수와 테이블 용량 측정&lt;/span&gt;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #333333;&quot;&gt;&amp;gt; SELECT COUNT(*) FROM scott.test01;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #333333;&quot;&gt;1000 건 입력&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #333333;&quot;&gt;용량은 여전히 28MB&lt;/span&gt;&lt;/blockquote&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;style2&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #333333;&quot;&gt;MERGE : 데이터 병합&lt;/span&gt;&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #333333;&quot;&gt;&lt;span style=&quot;background-color: #f6e199;&quot;&gt;MERGE&lt;/span&gt;는 &lt;span style=&quot;background-color: #f6e199;&quot;&gt;여러 테이블의 데이터를 병합&lt;/span&gt;하는 명령어이다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #333333;&quot;&gt;MERGE의 경우 문법이 다른 명령어와 비교하면 복잡한 편이므로 잘 공부하도록 하자.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #333333;&quot;&gt;문법 : table1과 table2의 내용을 합쳐 table1에 모음&lt;/span&gt;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #333333;&quot;&gt;MERGE INTO table1&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #333333;&quot;&gt;USING table2&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #333333;&quot;&gt;ON (병합 조건절)&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #333333;&quot;&gt;WHEN MATCHED THEN // 병합 조건절이 만족한다면 UPDATE 또는 DELETE 실행&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #333333;&quot;&gt;UPDATE SET 업데이트 내용&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #333333;&quot;&gt;DELETE WHERE 조건&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #333333;&quot;&gt;WHEN NOT MATCHED THEN // 병합 조건절이 만족하지 않다면 INSERT 실행&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #333333;&quot;&gt;INSERT VALUES(컬럼 이름);&lt;/span&gt;&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #333333;&quot;&gt;* MERGE 구문이 수행될 때 집계 테이블(table1)의 데이터와 신규 테이블(table2)의 데이터의 내용을 비교해서 확인하기 때문에 집계 테이블에 데이터가 많아질수록 MERGE 작업의 수행속도가 늦어진다는 특징이 있다.&lt;/span&gt;&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;span style=&quot;font-family: 'Noto Sans Light'; color: #333333;&quot;&gt;Ex1. 일별 판매 테이블인 pt_01과 pt_02 테이블이 있고 판매 집계 테이블인 p_total 테이블이 있다.&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #333333;&quot;&gt;매일 새벽에 일별 판매 테이블과 판매 집계 테이블을 MERGE 한다고 가정하고 MERGE하는 SQL을 작성하세요.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #333333;&quot;&gt;1. MERGE 작업 전 테이블 조회&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #333333;&quot;&gt;&amp;gt;SELECT * FROM pt_01;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #333333;&quot;&gt;&amp;gt;SELECT * FROM pt_02;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #333333;&quot;&gt;&amp;gt;SELECT * FROM p_total;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #333333;&quot;&gt;no row selected&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #333333;&quot;&gt;2. pt_01 테이블과 p_total 테이블 병합&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #333333;&quot;&gt;&amp;gt; MERGE INTO p_total &quot;total&quot;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #333333;&quot;&gt;&amp;nbsp; &amp;nbsp;USING pt_01 p01&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #333333;&quot;&gt;&amp;nbsp; &amp;nbsp;ON (total.판매번호 = p01.판매번호)&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #333333;&quot;&gt;&amp;nbsp; &amp;nbsp;WHEN MATCHED THEN&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #333333;&quot;&gt;&amp;nbsp; &amp;nbsp;UPDATE SET total.제품번호 = p01.제품번호&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #333333;&quot;&gt;&amp;nbsp; &amp;nbsp;WHEN NOT MATCHED THEN&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #333333;&quot;&gt;&amp;nbsp; &amp;nbsp;INSERT VALUES (p01.판매번호, p01.제품번호, p01.수량, p01.금액);&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #333333;&quot;&gt;3, pt_02 테이블과 p_total 테이블 병합&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #333333;&quot;&gt;&amp;gt; MERGE pt_02 &quot;p02&quot;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #333333;&quot;&gt;&amp;nbsp; &amp;nbsp;ON (total.판매번호 = p02.판매번호)&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #333333;&quot;&gt;&amp;nbsp; &amp;nbsp;WHEN MATCHED THEN&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #333333;&quot;&gt;&amp;nbsp; &amp;nbsp;UPDATE SET total.제품번호 = p02.제품번호&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #333333;&quot;&gt;&amp;nbsp; &amp;nbsp;WHEN NOT MATCHED THEN&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #333333;&quot;&gt;&amp;nbsp; &amp;nbsp;INSERT VALUES (p02.판매번호, p02.제품번호, p02.수량, p02.금액);&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #333333;&quot;&gt;4. MERGE 후 작업 테이블 조회&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #333333;&quot;&gt;&amp;gt; SELECT * FROM p_total;&lt;/span&gt;&lt;/blockquote&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;style2&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #333333;&quot;&gt;TRANSACTION&lt;/span&gt;&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #333333;&quot;&gt;논리의 작업단위이며, 여러가지 DML 작업들을 하나의 단위로 묶어둔 것을 말한다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #333333;&quot;&gt;-&amp;gt; 데이터베이스에서는 데이터의 일관성과 무결성을 보장하기 위해서는 반드시 트랜잭션 관리가 필요&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #333333;&quot;&gt;-&amp;gt; COMMIT, ROLLBACK, SAVEPOINT가 있음&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #333333;&quot;&gt;COMMIT&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #333333;&quot;&gt;: 하나의 트랜잭션인 여러 DML 명령어를 정상적으로 데이터베이스에 반영하겠다는 의미&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #333333;&quot;&gt;=&amp;gt; 즉, 하나의 트랜잭션 과정이 정상적으로 종료하게 된다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #333333;&quot;&gt;=&amp;gt; 이때 COMMIT 명령을 사용하지 않아도 자동으로 COMMIT이 되는 경우가 있다. (DDL(CREATE, DROP 등) 및 DCL 명령문을 수행하면 자동 COMMIT이 되고 데이터베이스를 정상적으로 종료하였을 경우 자동 COMMIT이 된다.)&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #333333;&quot;&gt;ROLLBACK&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #333333;&quot;&gt;: 잘못된 명령이나 잘못된 데이터를 입력하는 등 문제가 발생했을 때 하나의 트랜잭션을 취소하는 명령어&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #333333;&quot;&gt;=&amp;gt; 이때 데이터베이스가 비정상적으로 종료된다면 자동으로 ROLLBACK이 된다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #333333;&quot;&gt;SAVEPOINT&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #333333;&quot;&gt;: 하나의 트랜잭션을 작게 분할하여 저장하는 기능을 한다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #333333;&quot;&gt;=&amp;gt; SAVEPOINT는 [SAVEPOINT SAVEPOINT이름]을 지정하고 저장된 SAVEPOINT에 [ROLLBACK TO SAVEPOINT이름]문을 이용하여 해당 SAVEPOINT까지 ROLLBACK 할 수 있다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #333333;&quot;&gt;=&amp;gt; SAVEPOINT는 하나의 트랜잭션에서 여러 개 지정할 수 있다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #333333;&quot;&gt;실습&lt;/span&gt;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #333333;&quot;&gt;1. 실습용 테이블 생성&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #333333;&quot;&gt;&amp;gt; CREATE TABLE test ( NO NUMBER(3),&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #333333;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; NAME VARCHAR(10),&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #333333;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; AGE NUMBER(3),&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #333333;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; GENDER VARCHAR(6));&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #333333;&quot;&gt;2. 데이터 추가, SAVEPOINT, ROLLBACK&lt;/span&gt;&lt;br /&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;439&quot; data-origin-height=&quot;474&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/1EO27/btsw0jt13aO/LnLo875nbHKbxbjUXt174k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/1EO27/btsw0jt13aO/LnLo875nbHKbxbjUXt174k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/1EO27/btsw0jt13aO/LnLo875nbHKbxbjUXt174k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F1EO27%2Fbtsw0jt13aO%2FLnLo875nbHKbxbjUXt174k%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;439&quot; height=&quot;474&quot; data-origin-width=&quot;439&quot; data-origin-height=&quot;474&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #333333;&quot;&gt;3. ROLLBACK 테스트&lt;/span&gt;&lt;br /&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;426&quot; data-origin-height=&quot;475&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/YG1BH/btsw2LRw3sV/XfPjT0q50lkyGv7KmEQRv1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/YG1BH/btsw2LRw3sV/XfPjT0q50lkyGv7KmEQRv1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/YG1BH/btsw2LRw3sV/XfPjT0q50lkyGv7KmEQRv1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FYG1BH%2Fbtsw2LRw3sV%2FXfPjT0q50lkyGv7KmEQRv1%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;426&quot; height=&quot;475&quot; data-origin-width=&quot;426&quot; data-origin-height=&quot;475&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/blockquote&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;style2&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #333333;&quot;&gt;UPDATE 조인 : 다른 테이블과 조인을 하는UPDATE&lt;/span&gt;&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #333333;&quot;&gt;일반적인 UPDATE 구문이 아닌 다른 테이블과 JOIN을 하는 UPDATE&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #333333;&quot;&gt;&lt;span style=&quot;background-color: #f6e199;&quot;&gt;UPDATE 문에 조인&lt;/span&gt;이 발생하는 경우는 &lt;span style=&quot;background-color: #f6e199;&quot;&gt;① WHERE 절에만 다른 테이블과 조인&lt;/span&gt;을 하는 경우와 &lt;span style=&quot;background-color: #f6e199;&quot;&gt;② WHERE 절과 SET 절 모두 다른 테이블과 조인&lt;/span&gt;을 하는 경우이다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #333333;&quot;&gt;실습&lt;/span&gt;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #333333;&quot;&gt;1. employees 테이블과 departments 테이블이 있다고 가정합니다.&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #333333;&quot;&gt;departments 테이블에서 departments_name을 업데이트 하세요.&lt;/span&gt;&lt;br /&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;502&quot; data-origin-height=&quot;183&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cMi4Su/btswP0hlVDk/EQxVkk0A5NTQ3fgkKRqcO1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cMi4Su/btswP0hlVDk/EQxVkk0A5NTQ3fgkKRqcO1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cMi4Su/btswP0hlVDk/EQxVkk0A5NTQ3fgkKRqcO1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcMi4Su%2FbtswP0hlVDk%2FEQxVkk0A5NTQ3fgkKRqcO1%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;502&quot; height=&quot;183&quot; data-origin-width=&quot;502&quot; data-origin-height=&quot;183&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #333333;&quot;&gt;-&amp;gt; employee.id가 1인 직원의 departments_name을 '새 부서'로 업데이트&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #333333;&quot;&gt;&amp;nbsp; &amp;nbsp; employees 테이블과 departments 테이블은 departments_id로 JOIN됨&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #333333;&quot;&gt;2. orders 테이블과 customers 테이블이 있습니다. customers 테이블의 customer_name을 업데이트 하세요.&lt;/span&gt;&lt;br /&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;468&quot; data-origin-height=&quot;185&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bmJp4h/btsw2KZt8V0/0EZTlHtdWFvhgjBvvqd0e0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bmJp4h/btsw2KZt8V0/0EZTlHtdWFvhgjBvvqd0e0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bmJp4h/btsw2KZt8V0/0EZTlHtdWFvhgjBvvqd0e0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbmJp4h%2Fbtsw2KZt8V0%2F0EZTlHtdWFvhgjBvvqd0e0%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;468&quot; height=&quot;185&quot; data-origin-width=&quot;468&quot; data-origin-height=&quot;185&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #333333;&quot;&gt;-&amp;gt; order_id가 101인 주문의 customer_name을 '새 고객 이름'으로 업데이트함.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #333333;&quot;&gt;3. ptoducts 테이블과 suppliers 테이블이 있다고 가정합니다. products 테이블과 supplier_name을 업데이트 하세요.&lt;/span&gt;&lt;br /&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;510&quot; data-origin-height=&quot;186&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dcFaKF/btsw8iA666T/qOR4Gtt569dmscb9PNaJI1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dcFaKF/btsw8iA666T/qOR4Gtt569dmscb9PNaJI1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dcFaKF/btsw8iA666T/qOR4Gtt569dmscb9PNaJI1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdcFaKF%2Fbtsw8iA666T%2FqOR4Gtt569dmscb9PNaJI1%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;510&quot; height=&quot;186&quot; data-origin-width=&quot;510&quot; data-origin-height=&quot;186&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #333333;&quot;&gt;-&amp;gt; product_id가 2023인 제품의 supplier_name을 '새 공급 업체 이름'으로 업데이트 함&lt;/span&gt;&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #333333;&quot;&gt;실습1&lt;/span&gt;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #333333;&quot;&gt;1. INSERT, TRANSACTION - 학생 명단에 새 학생 추가&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #333333;&quot;&gt;아래 조건에 맞춰 새로운 학생을 추가하세요.&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #333333;&quot;&gt;학생의 이름은 나형진, 나이는 20세 반은 3반입니다.&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #333333;&quot;&gt;TRANSACTION을 사용하여 수행한 뒤 COMMIT 해주세요.&lt;/span&gt;&lt;br /&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;214&quot; data-origin-height=&quot;147&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bIxjTC/btsxd2EHo04/1fEmkrhkvst8oi0IzdSVi0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bIxjTC/btsxd2EHo04/1fEmkrhkvst8oi0IzdSVi0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bIxjTC/btsxd2EHo04/1fEmkrhkvst8oi0IzdSVi0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbIxjTC%2Fbtsxd2EHo04%2F1fEmkrhkvst8oi0IzdSVi0%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;214&quot; height=&quot;147&quot; data-origin-width=&quot;214&quot; data-origin-height=&quot;147&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #333333;&quot;&gt;HINT: 시퀀스 (일련번호 자동생성 객체) - SEQ_STUDENTS&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #333333;&quot;&gt;해당 시퀀스의 다음 값을 가져오기 - .NEXTVAL&lt;/span&gt;&lt;br /&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;447&quot; data-origin-height=&quot;237&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/G5Bwp/btsw2K6gE14/IJvgKzhIzIgfh7fjrsOeck/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/G5Bwp/btsw2K6gE14/IJvgKzhIzIgfh7fjrsOeck/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/G5Bwp/btsw2K6gE14/IJvgKzhIzIgfh7fjrsOeck/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FG5Bwp%2Fbtsw2K6gE14%2FIJvgKzhIzIgfh7fjrsOeck%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;447&quot; height=&quot;237&quot; data-origin-width=&quot;447&quot; data-origin-height=&quot;237&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;&lt;span style=&quot;background-color: #c0d1e7; font-family: 'Noto Sans Light';&quot;&gt;1-1. 아래&amp;nbsp;조건에&amp;nbsp;맞춰&amp;nbsp;새로운&amp;nbsp;학생을&amp;nbsp;추가해주세요. &lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;학생의 숫자는 &amp;lsquo;9410&amp;rsquo;, ID는 &amp;lsquo;asdas&amp;rsquo; &lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;학생의 이름은 &amp;lsquo;나형진&amp;rsquo;, 학년은 3학년, &lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;주민등록번호는 &amp;lsquo;7510231901812&amp;rsquo; 입니다.&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #ffffff; font-family: 'Noto Sans Light';&quot;&gt;아래 조건에 맞춰 새로운 학생을 추가&lt;/span&gt;&lt;/p&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;430&quot; data-origin-height=&quot;262&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b2msWY/btsxgoaaXQC/QeflYfPWN6cYOYCOty540k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b2msWY/btsxgoaaXQC/QeflYfPWN6cYOYCOty540k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b2msWY/btsxgoaaXQC/QeflYfPWN6cYOYCOty540k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb2msWY%2FbtsxgoaaXQC%2FQeflYfPWN6cYOYCOty540k%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;250&quot; height=&quot;152&quot; data-origin-width=&quot;430&quot; data-origin-height=&quot;262&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;599&quot; data-origin-height=&quot;202&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/rRos8/btsxh8EFpa6/7CmAZ9uZbZtnSV1WcwLyKk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/rRos8/btsxh8EFpa6/7CmAZ9uZbZtnSV1WcwLyKk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/rRos8/btsxh8EFpa6/7CmAZ9uZbZtnSV1WcwLyKk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FrRos8%2Fbtsxh8EFpa6%2F7CmAZ9uZbZtnSV1WcwLyKk%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;400&quot; height=&quot;135&quot; data-origin-width=&quot;599&quot; data-origin-height=&quot;202&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;&lt;span style=&quot;background-color: #c0d1e7; font-family: 'Noto Sans Light';&quot;&gt;1-2. 이전 문제에서 '나형진&amp;rsquo; 학생의 GRADE가 3인 경우에만 ID를 &amp;lsquo;updatedID123&amp;rsquo;로 변경하고, JUMIN의 뒷자리 6자리를 &amp;lsquo;000000&amp;rsquo;으로 바꾸세요.&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;*&amp;nbsp;HINT&amp;nbsp;:&amp;nbsp;CONCAT,&amp;nbsp;SUBSTR&lt;/span&gt;&lt;/p&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;618&quot; data-origin-height=&quot;154&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dFylx1/btsxgpGWSxL/nEHao0AYyg0dKbtnc2oOX1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dFylx1/btsxgpGWSxL/nEHao0AYyg0dKbtnc2oOX1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dFylx1/btsxgpGWSxL/nEHao0AYyg0dKbtnc2oOX1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdFylx1%2FbtsxgpGWSxL%2FnEHao0AYyg0dKbtnc2oOX1%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;400&quot; height=&quot;100&quot; data-origin-width=&quot;618&quot; data-origin-height=&quot;154&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;&lt;span style=&quot;background-color: #c0d1e7; font-family: 'Noto Sans Light';&quot;&gt;1-3. STUDENT 테이블에서 GRADE가 3이고 주민등록번호 뒷자리가 3으로 시작하는 학생을 지워주세요.&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;*&amp;nbsp;HINT&amp;nbsp;:&amp;nbsp;SUBSTR&lt;/span&gt;&lt;/p&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;439&quot; data-origin-height=&quot;127&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ddIAuK/btsxgpUsXQL/QFxYLBn9ZWGBkwSWz10Fj0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ddIAuK/btsxgpUsXQL/QFxYLBn9ZWGBkwSWz10Fj0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ddIAuK/btsxgpUsXQL/QFxYLBn9ZWGBkwSWz10Fj0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FddIAuK%2FbtsxgpUsXQL%2FQFxYLBn9ZWGBkwSWz10Fj0%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;350&quot; height=&quot;101&quot; data-origin-width=&quot;439&quot; data-origin-height=&quot;127&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #333333;&quot;&gt;실습2&lt;/span&gt;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #333333;&quot;&gt;2. UPDATE JOIN, DELETE - 주문 정보 수정 및 취소&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #333333;&quot;&gt;아래 조건에 맞춰 BLACKLIST가 YES로 설정된 모든 고객의 주문을 취소하세요.&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #333333;&quot;&gt;그리고 주문 정보와 고객 정보를 JOIN 하여 '나형진'이 주문한 모든 제품의 이름을 '반품'으로 업데이트 하세요.&lt;/span&gt;&lt;br /&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;330&quot; data-origin-height=&quot;250&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/z359a/btsw66HJnqX/3FWQHnSKiewuK7WujmsTaK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/z359a/btsw66HJnqX/3FWQHnSKiewuK7WujmsTaK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/z359a/btsw66HJnqX/3FWQHnSKiewuK7WujmsTaK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fz359a%2Fbtsw66HJnqX%2F3FWQHnSKiewuK7WujmsTaK%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;330&quot; height=&quot;250&quot; data-origin-width=&quot;330&quot; data-origin-height=&quot;250&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #333333;&quot;&gt;HINT: 고객 ID 조회 -&amp;gt; 고객 주문 삭제 -&amp;gt; TABLE JOIN 후 '나형진'이 주문한 제품 찾기 -&amp;gt; '반품' UPDATE&lt;/span&gt;&lt;br /&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;745&quot; data-origin-height=&quot;212&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bunP8N/btswwO28oC2/OZKRq2s1CfGE8cV2eTVL60/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bunP8N/btswwO28oC2/OZKRq2s1CfGE8cV2eTVL60/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bunP8N/btswwO28oC2/OZKRq2s1CfGE8cV2eTVL60/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbunP8N%2FbtswwO28oC2%2FOZKRq2s1CfGE8cV2eTVL60%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;745&quot; height=&quot;212&quot; data-origin-width=&quot;745&quot; data-origin-height=&quot;212&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #333333;&quot;&gt;실습3&lt;/span&gt;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #333333;&quot;&gt;3. MERGE - 재고 정보 갱신&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #333333;&quot;&gt;아래 조건에 맞춰 새로 도착한 제품 정보 (NEW_ARRIVALS)를 기존의 재고 정보(STOCK)에 병합하세요.&lt;/span&gt;&lt;br /&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;224&quot; data-origin-height=&quot;240&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bd3lv3/btswJDfOq7e/DCrXKRFAxdtapDKsavCX01/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bd3lv3/btswJDfOq7e/DCrXKRFAxdtapDKsavCX01/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bd3lv3/btswJDfOq7e/DCrXKRFAxdtapDKsavCX01/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbd3lv3%2FbtswJDfOq7e%2FDCrXKRFAxdtapDKsavCX01%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;224&quot; height=&quot;240&quot; data-origin-width=&quot;224&quot; data-origin-height=&quot;240&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #333333;&quot;&gt;HINT: 제품 ID로 일치하는 데이터 찾기 -&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #333333;&quot;&gt;일치하는 데이터가 있으면 STOCK 테이블 QUANTITY 갱신 -&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #333333;&quot;&gt;일치하는 데이터가 없으면 STOCK 테이블에 추가&lt;/span&gt;&lt;br /&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;465&quot; data-origin-height=&quot;241&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/QshE1/btsw69qX8j4/EYTxCOkGhdkMLAmOjazQSk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/QshE1/btsw69qX8j4/EYTxCOkGhdkMLAmOjazQSk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/QshE1/btsw69qX8j4/EYTxCOkGhdkMLAmOjazQSk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FQshE1%2Fbtsw69qX8j4%2FEYTxCOkGhdkMLAmOjazQSk%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;465&quot; height=&quot;241&quot; data-origin-width=&quot;465&quot; data-origin-height=&quot;241&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #c0d1e7; font-family: 'Noto Sans Light';&quot;&gt;실습4&lt;/span&gt;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&amp;lt;&amp;lt; 도서 관리 시스템 만들기 &amp;gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;# 테이블 생성&lt;/span&gt;&lt;br /&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;535&quot; data-origin-height=&quot;348&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bDVD1a/btsw6XxYtVO/3dFsAXP2yprsi0zIdjM6b1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bDVD1a/btsw6XxYtVO/3dFsAXP2yprsi0zIdjM6b1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bDVD1a/btsw6XxYtVO/3dFsAXP2yprsi0zIdjM6b1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbDVD1a%2Fbtsw6XxYtVO%2F3dFsAXP2yprsi0zIdjM6b1%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;400&quot; height=&quot;260&quot; data-origin-width=&quot;535&quot; data-origin-height=&quot;348&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;*PRIMARY KEY : DB 테이블에서 테이블 각 행을 고유하게 식별할 수 있는 컬럼을 지정하는 제약 조건 &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;1. 데이터 입력&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;새로운 도서 3권을 도서 테이블에 추가&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;한 권의 도서를 대출 테이블에 추가&lt;/span&gt;&lt;br /&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;536&quot; data-origin-height=&quot;142&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/sVEtg/btsxgfj148u/3vctNnAxBHu7iUHqUdJR4K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/sVEtg/btsxgfj148u/3vctNnAxBHu7iUHqUdJR4K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/sVEtg/btsxgfj148u/3vctNnAxBHu7iUHqUdJR4K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FsVEtg%2Fbtsxgfj148u%2F3vctNnAxBHu7iUHqUdJR4K%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;132&quot; data-origin-width=&quot;536&quot; data-origin-height=&quot;142&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;2. 데이터 조회&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;재고량이&amp;nbsp;6&amp;nbsp;이하인&amp;nbsp;도서의&amp;nbsp;제목과&amp;nbsp;저자를&amp;nbsp;조회&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;아직&amp;nbsp;반납되지&amp;nbsp;않은&amp;nbsp;도서의&amp;nbsp;제목과&amp;nbsp;대출일을&amp;nbsp;조회&lt;/span&gt;&lt;/p&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;546&quot; data-origin-height=&quot;166&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/tWEOQ/btsxaKLrQbt/AsCKN1eyyUXRJhzyfXQRq1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/tWEOQ/btsxaKLrQbt/AsCKN1eyyUXRJhzyfXQRq1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/tWEOQ/btsxaKLrQbt/AsCKN1eyyUXRJhzyfXQRq1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FtWEOQ%2FbtsxaKLrQbt%2FAsCKN1eyyUXRJhzyfXQRq1%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;152&quot; data-origin-width=&quot;546&quot; data-origin-height=&quot;166&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;3.&amp;nbsp;데이터&amp;nbsp;수정&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;특정&amp;nbsp;도서의&amp;nbsp;재고량을&amp;nbsp;1&amp;nbsp;감소(도서&amp;nbsp;ID&amp;nbsp;=&amp;nbsp;1)&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;아직&amp;nbsp;반납되지&amp;nbsp;않은&amp;nbsp;도서&amp;nbsp;중&amp;nbsp;하나의&amp;nbsp;반납일을&amp;nbsp;현재&amp;nbsp;날짜로&amp;nbsp;설정&lt;/span&gt;&lt;/p&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;520&quot; data-origin-height=&quot;138&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bymM0n/btsw2LxUoTV/sCDwkcg6b9czsSEEcupCEK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bymM0n/btsw2LxUoTV/sCDwkcg6b9czsSEEcupCEK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bymM0n/btsw2LxUoTV/sCDwkcg6b9czsSEEcupCEK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbymM0n%2Fbtsw2LxUoTV%2FsCDwkcg6b9czsSEEcupCEK%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;133&quot; data-origin-width=&quot;520&quot; data-origin-height=&quot;138&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;4.&amp;nbsp;데이터&amp;nbsp;삭제&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;재고량이&amp;nbsp;7인&amp;nbsp;도서를&amp;nbsp;도서&amp;nbsp;테이블에서&amp;nbsp;삭제&lt;/span&gt;&lt;/p&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;486&quot; data-origin-height=&quot;96&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/qKNjU/btsw7zjjPaE/H6J7iRBYUISkeZW3IniQEk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/qKNjU/btsw7zjjPaE/H6J7iRBYUISkeZW3IniQEk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/qKNjU/btsw7zjjPaE/H6J7iRBYUISkeZW3IniQEk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FqKNjU%2Fbtsw7zjjPaE%2FH6J7iRBYUISkeZW3IniQEk%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;400&quot; height=&quot;79&quot; data-origin-width=&quot;486&quot; data-origin-height=&quot;96&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;5.&amp;nbsp;트랜잭션&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;새로운&amp;nbsp;도서를&amp;nbsp;추가하고,&amp;nbsp;바로&amp;nbsp;그&amp;nbsp;도서를&amp;nbsp;대출하는&amp;nbsp;작업을&amp;nbsp;한&amp;nbsp;트랜잭션&amp;nbsp;처리&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;(도서&amp;nbsp;추가와&amp;nbsp;대출&amp;nbsp;작업이&amp;nbsp;모두&amp;nbsp;성공하거나&amp;nbsp;실패해야&amp;nbsp;함)&lt;/span&gt;&lt;/p&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;581&quot; data-origin-height=&quot;189&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/5FMcj/btsxaMbscCm/nzYafFQGugxVQhXpqoSMhk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/5FMcj/btsxaMbscCm/nzYafFQGugxVQhXpqoSMhk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/5FMcj/btsxaMbscCm/nzYafFQGugxVQhXpqoSMhk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F5FMcj%2FbtsxaMbscCm%2FnzYafFQGugxVQhXpqoSMhk%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;581&quot; height=&quot;189&quot; data-origin-width=&quot;581&quot; data-origin-height=&quot;189&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;*AUTOCOMMIT&amp;nbsp;OFF&amp;nbsp;:&amp;nbsp;SQL&amp;nbsp;명령을&amp;nbsp;실행할&amp;nbsp;때마다&amp;nbsp;자동으로&amp;nbsp;트랜잭션이&amp;nbsp;COMMIT됨&lt;/span&gt;&lt;/p&gt;
&lt;/blockquote&gt;</description>
      <category>DBMS/Oracle</category>
      <category>11g</category>
      <category>delete</category>
      <category>dml</category>
      <category>insert</category>
      <category>merge</category>
      <category>Oracle</category>
      <category>SQL Developer</category>
      <category>transaction</category>
      <category>update</category>
      <category>오라클</category>
      <author>gxxg</author>
      <guid isPermaLink="true">https://zero-talk.tistory.com/114</guid>
      <comments>https://zero-talk.tistory.com/114#entry114comment</comments>
      <pubDate>Thu, 5 Oct 2023 14:24:22 +0900</pubDate>
    </item>
    <item>
      <title>프로그래머스 2단계 : 택배상자 (Java 자바)</title>
      <link>https://zero-talk.tistory.com/113</link>
      <description>&lt;blockquote data-ke-style=&quot;style2&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;문제 설명&lt;/span&gt;&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;영재는&amp;nbsp;택배상자를&amp;nbsp;트럭에&amp;nbsp;싣는&amp;nbsp;일을&amp;nbsp;합니다.&amp;nbsp;영재가&amp;nbsp;실어야&amp;nbsp;하는&amp;nbsp;택배상자는&amp;nbsp;크기가&amp;nbsp;모두&amp;nbsp;같으며&amp;nbsp;1번&amp;nbsp;상자부터&amp;nbsp;n번&amp;nbsp;상자까지&amp;nbsp;번호가&amp;nbsp;증가하는&amp;nbsp;순서대로&amp;nbsp;컨테이너&amp;nbsp;벨트에&amp;nbsp;일렬로&amp;nbsp;놓여&amp;nbsp;영재에게&amp;nbsp;전달됩니다.&amp;nbsp;컨테이너&amp;nbsp;벨트는&amp;nbsp;한&amp;nbsp;방향으로만&amp;nbsp;진행이&amp;nbsp;가능해서&amp;nbsp;벨트에&amp;nbsp;놓인&amp;nbsp;순서대로(1번&amp;nbsp;상자부터)&amp;nbsp;상자를&amp;nbsp;내릴&amp;nbsp;수&amp;nbsp;있습니다.&amp;nbsp;하지만&amp;nbsp;컨테이너&amp;nbsp;벨트에&amp;nbsp;놓인&amp;nbsp;순서대로&amp;nbsp;택배상자를&amp;nbsp;내려&amp;nbsp;바로&amp;nbsp;트럭에&amp;nbsp;싣게&amp;nbsp;되면&amp;nbsp;택배&amp;nbsp;기사님이&amp;nbsp;배달하는&amp;nbsp;순서와&amp;nbsp;택배상자가&amp;nbsp;실려&amp;nbsp;있는&amp;nbsp;순서가&amp;nbsp;맞지&amp;nbsp;않아&amp;nbsp;배달에&amp;nbsp;차질이&amp;nbsp;생깁니다.&amp;nbsp;따라서&amp;nbsp;택배&amp;nbsp;기사님이&amp;nbsp;미리&amp;nbsp;알려준&amp;nbsp;순서에&amp;nbsp;맞게&amp;nbsp;영재가&amp;nbsp;택배상자를&amp;nbsp;실어야&amp;nbsp;합니다. &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;만약&amp;nbsp;컨테이너&amp;nbsp;벨트의&amp;nbsp;맨&amp;nbsp;앞에&amp;nbsp;놓인&amp;nbsp;상자가&amp;nbsp;현재&amp;nbsp;트럭에&amp;nbsp;실어야&amp;nbsp;하는&amp;nbsp;순서가&amp;nbsp;아니라면&amp;nbsp;그&amp;nbsp;상자를&amp;nbsp;트럭에&amp;nbsp;실을&amp;nbsp;순서가&amp;nbsp;될&amp;nbsp;때까지&amp;nbsp;잠시&amp;nbsp;다른&amp;nbsp;곳에&amp;nbsp;보관해야&amp;nbsp;합니다.&amp;nbsp;하지만&amp;nbsp;고객의&amp;nbsp;물건을&amp;nbsp;함부로&amp;nbsp;땅에&amp;nbsp;둘&amp;nbsp;수&amp;nbsp;없어&amp;nbsp;보조&amp;nbsp;컨테이너&amp;nbsp;벨트를&amp;nbsp;추가로&amp;nbsp;설치하였습니다.&amp;nbsp;보조&amp;nbsp;컨테이너&amp;nbsp;벨트는&amp;nbsp;앞&amp;nbsp;뒤로&amp;nbsp;이동이&amp;nbsp;가능하지만&amp;nbsp;입구&amp;nbsp;외에&amp;nbsp;다른&amp;nbsp;면이&amp;nbsp;막혀&amp;nbsp;있어서&amp;nbsp;맨&amp;nbsp;앞의&amp;nbsp;상자만&amp;nbsp;뺄&amp;nbsp;수&amp;nbsp;있습니다(즉,&amp;nbsp;가장&amp;nbsp;마지막에&amp;nbsp;보조&amp;nbsp;컨테이너&amp;nbsp;벨트에&amp;nbsp;보관한&amp;nbsp;상자부터&amp;nbsp;꺼내게&amp;nbsp;됩니다).&amp;nbsp;보조&amp;nbsp;컨테이너&amp;nbsp;벨트를&amp;nbsp;이용해도&amp;nbsp;기사님이&amp;nbsp;원하는&amp;nbsp;순서대로&amp;nbsp;상자를&amp;nbsp;싣지&amp;nbsp;못&amp;nbsp;한다면,&amp;nbsp;더&amp;nbsp;이상&amp;nbsp;상자를&amp;nbsp;싣지&amp;nbsp;않습니다. &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;예를&amp;nbsp;들어,&amp;nbsp;영재가&amp;nbsp;5개의&amp;nbsp;상자를&amp;nbsp;실어야&amp;nbsp;하며,&amp;nbsp;택배&amp;nbsp;기사님이&amp;nbsp;알려준&amp;nbsp;순서가&amp;nbsp;기존의&amp;nbsp;컨테이너&amp;nbsp;벨트에&amp;nbsp;네&amp;nbsp;번째,&amp;nbsp;세&amp;nbsp;번째,&amp;nbsp;첫&amp;nbsp;번째,&amp;nbsp;두&amp;nbsp;번째,&amp;nbsp;다섯&amp;nbsp;번째&amp;nbsp;놓인&amp;nbsp;택배상자&amp;nbsp;순서인&amp;nbsp;경우,&amp;nbsp;영재는&amp;nbsp;우선&amp;nbsp;첫&amp;nbsp;번째,&amp;nbsp;두&amp;nbsp;번째,&amp;nbsp;세&amp;nbsp;번째&amp;nbsp;상자를&amp;nbsp;보조&amp;nbsp;컨테이너&amp;nbsp;벨트에&amp;nbsp;보관합니다.&amp;nbsp;그&amp;nbsp;후&amp;nbsp;네&amp;nbsp;번째&amp;nbsp;상자를&amp;nbsp;트럭에&amp;nbsp;싣고&amp;nbsp;보조&amp;nbsp;컨테이너&amp;nbsp;벨트에서&amp;nbsp;세&amp;nbsp;번째&amp;nbsp;상자&amp;nbsp;빼서&amp;nbsp;트럭에싣습니다.&amp;nbsp;다음으로&amp;nbsp;첫&amp;nbsp;번째&amp;nbsp;상자를&amp;nbsp;실어야&amp;nbsp;하지만&amp;nbsp;보조&amp;nbsp;컨테이너&amp;nbsp;벨트에서는&amp;nbsp;두&amp;nbsp;번째&amp;nbsp;상자를,&amp;nbsp;기존의&amp;nbsp;컨테이너&amp;nbsp;벨트에는&amp;nbsp;다섯&amp;nbsp;번째&amp;nbsp;상자를&amp;nbsp;꺼낼&amp;nbsp;수&amp;nbsp;있기&amp;nbsp;때문에&amp;nbsp;더이상의&amp;nbsp;상자는&amp;nbsp;실을&amp;nbsp;수&amp;nbsp;없습니다.&amp;nbsp;따라서&amp;nbsp;트럭에는&amp;nbsp;2개의&amp;nbsp;상자만&amp;nbsp;실리게&amp;nbsp;됩니다. &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;택배&amp;nbsp;기사님이&amp;nbsp;원하는&amp;nbsp;상자&amp;nbsp;순서를&amp;nbsp;나타내는&amp;nbsp;정수&amp;nbsp;배열&amp;nbsp;order가&amp;nbsp;주어졌을&amp;nbsp;때,&amp;nbsp;영재가&amp;nbsp;몇&amp;nbsp;개의&amp;nbsp;상자를&amp;nbsp;실을&amp;nbsp;수&amp;nbsp;있는지&amp;nbsp;return&amp;nbsp;하는&amp;nbsp;solution&amp;nbsp;함수를&amp;nbsp;완성하세요. &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;제한사항 &lt;/span&gt;&lt;/blockquote&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;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;1&amp;nbsp;&amp;le;&amp;nbsp;order의&amp;nbsp;길이&amp;nbsp;&amp;le;&amp;nbsp;1,000,000 &lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;order는&amp;nbsp;1이상&amp;nbsp;order의&amp;nbsp;길이&amp;nbsp;이하의&amp;nbsp;모든&amp;nbsp;정수가&amp;nbsp;한번씩&amp;nbsp;등장합니다. &lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;order[i]는&amp;nbsp;기존의&amp;nbsp;컨테이너&amp;nbsp;벨트에&amp;nbsp;order[i]번째&amp;nbsp;상자를&amp;nbsp;i+1번째로&amp;nbsp;트럭에&amp;nbsp;실어야&amp;nbsp;함을&amp;nbsp;의미합니다.&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;입출력 예&lt;/span&gt;&lt;/blockquote&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;235&quot; data-origin-height=&quot;130&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/zCitV/btswat4x1wV/rMMhnPeO1fN9lSAFYjHR31/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/zCitV/btswat4x1wV/rMMhnPeO1fN9lSAFYjHR31/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/zCitV/btswat4x1wV/rMMhnPeO1fN9lSAFYjHR31/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FzCitV%2Fbtswat4x1wV%2FrMMhnPeO1fN9lSAFYjHR31%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;200&quot; height=&quot;111&quot; data-origin-width=&quot;235&quot; data-origin-height=&quot;130&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;&amp;nbsp;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;풀이&lt;/span&gt;&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;주어진 순서대로 상자를 트럭에 실을 때 얼마나 많은 상자가 실리는지를 계산하는 문제입니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;1. Stack&amp;lt;Integer&amp;gt; saveOrder: 보조 컨테이너 벨트 역할을 하는 스택을 생성합니다. &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;2. defaultOrder와 wantOrderIdx 변수를 초기화합니다. defaultOrder는 컨테이너 벨트에 있는 상자의 순서를 나타내고, wantOrderIdx는 주어진 순서대로 상자를 싣기 위한 인덱스를 나타냅니다. &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;3. while (true) 루프를 시작합니다. &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;4. 현재 saveOrder 스택의 맨 위에 있는 상자가 주어진 순서대로 트럭에 실려야 할 상자와 같다면, 해당 상자를 트럭에 싣고 wantOrderIdx를 증가시키고, saveOrder 스택에서 해당 상자를 빼냅니다. &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;5. defaultOrder가 주어진 순서대로 트럭에 실려야 할 상자와 같다면, 해당 상자를 트럭에 싣고 wantOrderIdx와 defaultOrder를 증가시킵니다. &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;6. 그 외의 경우, 현재 defaultOrder를 saveOrder 스택에 추가하고 defaultOrder를 증가시킵니다. &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;7. defaultOrder가 주어진 순서대로 모든 상자를 트럭에 실을 때까지 반복합니다. &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;8. 최종적으로 answer를 반환합니다. &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1695908633946&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import java.util.Stack;

class Solution {
    public int solution(int[] wantOrder) {
        int answer = 0;

        // 보조 컨테이너 역할을 하는 스택 생성
        Stack&amp;lt;Integer&amp;gt; saveOrder = new Stack&amp;lt;Integer&amp;gt;();

        // 컨테이너 벨트에 있는 상자의 기본 순서를 나타내는 변수
        int defaultOrder = 1;
        // 주어진 순서대로 상자를 싣기 위한 인덱스
        int wantOrderIdx = 0;

        // 주어진 순서대로 상자를 트럭에 싣는 과정
        while (true) {
            // 1. 보조 컨테이너 스택의 맨 위에 있는 상자가 주어진 순서대로 트럭에 실려야 할 상자와 같은 경우
            if (!saveOrder.isEmpty() &amp;amp;&amp;amp; wantOrder[wantOrderIdx] == saveOrder.peek()) {
                // 해당 상자를 트럭에 싣고
                answer++;
                // wantOrderIdx를 증가시키고
                wantOrderIdx++;
                // saveOrder 스택에서 해당 상자를 빼냄
                saveOrder.pop();

                // 다음 상자를 처리하기 위해 반복문의 처음으로 돌아감
                continue;
            }

            // 2. defaultOrder가 주어진 순서대로 트럭에 실려야 할 상자와 같은 경우
            if (defaultOrder &amp;lt;= wantOrder.length &amp;amp;&amp;amp; wantOrder[wantOrderIdx] == defaultOrder) {
                // 해당 상자를 트럭에 싣고
                answer++;
                // wantOrderIdx와 defaultOrder를 증가시킴
                wantOrderIdx++;
                defaultOrder++;

                // 다음 상자를 처리하기 위해 반복문의 처음으로 돌아감
                continue;
            }

            // 3. 위의 두 경우가 아닌 경우, 현재 defaultOrder를 saveOrder 스택에 추가하고
            saveOrder.push(defaultOrder);
            // defaultOrder를 증가시킴
            defaultOrder++;
        }

        // 모든 상자를 싣고나면 최종적으로 실린 상자의 개수를 반환
        return answer;
    }
}&lt;/code&gt;&lt;/pre&gt;</description>
      <category>  코딩테스트/programmers</category>
      <author>gxxg</author>
      <guid isPermaLink="true">https://zero-talk.tistory.com/113</guid>
      <comments>https://zero-talk.tistory.com/113#entry113comment</comments>
      <pubDate>Thu, 28 Sep 2023 23:27:20 +0900</pubDate>
    </item>
    <item>
      <title>프로그래머스 2단계 : k진수에서 소수 개수 구하기 (Java 자바)</title>
      <link>https://zero-talk.tistory.com/112</link>
      <description>&lt;blockquote data-ke-style=&quot;style2&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;문제 설명&lt;/span&gt;&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;양의&amp;nbsp;정수&amp;nbsp;n이&amp;nbsp;주어집니다.&amp;nbsp;이&amp;nbsp;숫자를&amp;nbsp;k진수로&amp;nbsp;바꿨을&amp;nbsp;때,&amp;nbsp;변환된&amp;nbsp;수&amp;nbsp;안에&amp;nbsp;아래&amp;nbsp;조건에&amp;nbsp;맞는&amp;nbsp;소수(Prime&amp;nbsp;number)가&amp;nbsp;몇&amp;nbsp;개인지&amp;nbsp;알아보려&amp;nbsp;합니다. &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;0P0처럼&amp;nbsp;소수&amp;nbsp;양쪽에&amp;nbsp;0이&amp;nbsp;있는&amp;nbsp;경우 &lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;P0처럼&amp;nbsp;소수&amp;nbsp;오른쪽에만&amp;nbsp;0이&amp;nbsp;있고&amp;nbsp;왼쪽에는&amp;nbsp;아무것도&amp;nbsp;없는&amp;nbsp;경우 &lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;0P처럼&amp;nbsp;소수&amp;nbsp;왼쪽에만&amp;nbsp;0이&amp;nbsp;있고&amp;nbsp;오른쪽에는&amp;nbsp;아무것도&amp;nbsp;없는&amp;nbsp;경우 &lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;P처럼&amp;nbsp;소수&amp;nbsp;양쪽에&amp;nbsp;아무것도&amp;nbsp;없는&amp;nbsp;경우 &lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;단,&amp;nbsp;P는&amp;nbsp;각&amp;nbsp;자릿수에&amp;nbsp;0을&amp;nbsp;포함하지&amp;nbsp;않는&amp;nbsp;소수입니다. &lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;예를&amp;nbsp;들어,&amp;nbsp;101은&amp;nbsp;P가&amp;nbsp;될&amp;nbsp;수&amp;nbsp;없습니다. &lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;예를&amp;nbsp;들어,&amp;nbsp;437674을&amp;nbsp;3진수로&amp;nbsp;바꾸면&amp;nbsp;211020101011입니다.&amp;nbsp;여기서&amp;nbsp;찾을&amp;nbsp;수&amp;nbsp;있는&amp;nbsp;조건에&amp;nbsp;맞는&amp;nbsp;소수는&amp;nbsp;왼쪽부터&amp;nbsp;순서대로&amp;nbsp;211,&amp;nbsp;2,&amp;nbsp;11이&amp;nbsp;있으며,&amp;nbsp;총&amp;nbsp;3개입니다.&amp;nbsp;(211,&amp;nbsp;2,&amp;nbsp;11을&amp;nbsp;k진법으로&amp;nbsp;보았을&amp;nbsp;때가&amp;nbsp;아닌,&amp;nbsp;10진법으로&amp;nbsp;보았을&amp;nbsp;때&amp;nbsp;소수여야&amp;nbsp;한다는&amp;nbsp;점에&amp;nbsp;주의합니다.)&amp;nbsp;211은&amp;nbsp;P0&amp;nbsp;형태에서&amp;nbsp;찾을&amp;nbsp;수&amp;nbsp;있으며,&amp;nbsp;2는&amp;nbsp;0P0에서,&amp;nbsp;11은&amp;nbsp;0P에서&amp;nbsp;찾을&amp;nbsp;수&amp;nbsp;있습니다. &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;정수&amp;nbsp;n과&amp;nbsp;k가&amp;nbsp;매개변수로&amp;nbsp;주어집니다.&amp;nbsp;n을&amp;nbsp;k진수로&amp;nbsp;바꿨을&amp;nbsp;때,&amp;nbsp;변환된&amp;nbsp;수&amp;nbsp;안에서&amp;nbsp;찾을&amp;nbsp;수&amp;nbsp;있는&amp;nbsp;위&amp;nbsp;조건에&amp;nbsp;맞는&amp;nbsp;소수의&amp;nbsp;개수를&amp;nbsp;return&amp;nbsp;하도록&amp;nbsp;solution&amp;nbsp;함수를&amp;nbsp;완성해&amp;nbsp;주세요. &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;제한사항 &lt;/span&gt;&lt;/blockquote&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;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;1&amp;nbsp;&amp;le;&amp;nbsp;n&amp;nbsp;&amp;le;&amp;nbsp;1,000,000 &lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;3&amp;nbsp;&amp;le;&amp;nbsp;k&amp;nbsp;&amp;le;&amp;nbsp;10&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;입출력 예&lt;/span&gt;&lt;/blockquote&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;274&quot; data-origin-height=&quot;130&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cloPAq/btswgXD15ff/uMN7oTlJGjDikmlsBhLbWK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cloPAq/btswgXD15ff/uMN7oTlJGjDikmlsBhLbWK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cloPAq/btswgXD15ff/uMN7oTlJGjDikmlsBhLbWK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcloPAq%2FbtswgXD15ff%2FuMN7oTlJGjDikmlsBhLbWK%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;200&quot; height=&quot;95&quot; data-origin-width=&quot;274&quot; data-origin-height=&quot;130&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;&amp;nbsp;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;풀이&lt;/span&gt;&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt; n을 k진수로 변환하고, 변환된 숫자에서 조건에 맞는 소수를 찾아 개수를 세는 문제입니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;1. 주어진 수 n을 k진수로 변환합니다. StringBuilder를 사용하여 역순으로 변환합니다. &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;2. 변환된 k진수를 0을 기준으로 나누어 primeNumber 배열에 저장합니다. &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;3. primeNumber 배열을 반복하면서 각 숫자가 조건을 만족하는 소수인지 확인합니다. &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;4. isPrime 함수를 사용하여 소수 여부를 판별하고, 조건에 맞으면 answer를 증가시킵니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1695907668562&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;class Solution {
    public int solution(int n, int k) {
        int answer = 0;
        StringBuilder jinsu = new StringBuilder();

        // 주어진 수를 k진수로 변환
        while (n &amp;gt; 0) {
            jinsu.append(n % k);
            n = n / k;
        }
        jinsu = jinsu.reverse(); // 역순으로 변환된 k진수를 다시 정렬

        // 0을 기준으로 k진수를 나눠서 소수를 찾습니다.
        String[] primeNumber = jinsu.toString().split(&quot;0&quot;);

        // 소수인지 확인하고 조건에 맞으면 개수를 세어줍니다.
        for (String i : primeNumber) {
            if (!i.equals(&quot;&quot;) &amp;amp;&amp;amp; !i.equals(&quot;1&quot;) &amp;amp;&amp;amp; isPrime(Long.parseLong(i))) {
                answer++;
            }
        }
        return answer;
    }

    // 소수인지 판별하는 함수
    boolean isPrime(Long n) {
        for (int i = 2; i &amp;lt;= Math.sqrt(n); i++) {
            if (n % i == 0) {
                return false;
            }
        }
        return true;
    }
}&lt;/code&gt;&lt;/pre&gt;</description>
      <category>  코딩테스트/programmers</category>
      <author>gxxg</author>
      <guid isPermaLink="true">https://zero-talk.tistory.com/112</guid>
      <comments>https://zero-talk.tistory.com/112#entry112comment</comments>
      <pubDate>Thu, 28 Sep 2023 23:04:46 +0900</pubDate>
    </item>
  </channel>
</rss>