<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>나아가는중</title>
    <link>https://dlee0129.tistory.com/</link>
    <description></description>
    <language>ko</language>
    <pubDate>Wed, 8 Apr 2026 06:27:14 +0900</pubDate>
    <generator>TISTORY</generator>
    <ttl>100</ttl>
    <managingEditor>나아가는중</managingEditor>
    <item>
      <title>@SpringQueryMap란? &amp;amp; 사용 예시</title>
      <link>https://dlee0129.tistory.com/292</link>
      <description>&lt;h2 style=&quot;border-bottom: 3px solid #707070; font-weight: bold; padding: 5px;&quot; data-ke-size=&quot;size26&quot;&gt;@SpringQueryMap 란?&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;SpringQueryMap은 Spring Cloud OpenFeign 라이브러리에서 제공하는 어노테이션 중 하나입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 어노테이션은 Feign 클라이언트에서 GET 요청을 보낼 때, Query Parameter를 맵 형태로 전달하기 위해 사용됩니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;@RequestParam과 유사한 역활을 수행하지만, &lt;b&gt;여러 개의 파라미터가 아닌 단일 맵 형태로 전달&lt;/b&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;style7&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;예를&amp;nbsp;들어,&amp;nbsp;@RequestParam을&amp;nbsp;사용하여&amp;nbsp;다음과&amp;nbsp;같이&amp;nbsp;Query&amp;nbsp;Parameter를&amp;nbsp;전달할&amp;nbsp;수&amp;nbsp;있습니다.&lt;/p&gt;
&lt;h3 style=&quot;font-weight: bold; border-bottom: 1px solid #d83c3c; margin: 10px 0px 5px; border-left: 5px solid #d83c3c; letter-spacing: -0.07em; line-height: 30px; padding: 0px 10px 1px;&quot; data-ke-size=&quot;size23&quot;&gt;@RequestParam 사용 예시&lt;/h3&gt;
&lt;pre id=&quot;code_1680185615428&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;    @GetMapping(&quot;/request_param&quot;)
    fun requestParam(
        @RequestParam(&quot;id&quot;) id: Int,
        @RequestParam(&quot;name&quot;) name: String,
    ) : String {
        return &quot;${id} ${name}&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;style7&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;하지만, SpringQueryMap을 사용하면 다음과 같이 맵 형태로 Query Parameter를 전달할 수 있습니다.&lt;/p&gt;
&lt;h3 style=&quot;font-weight: bold; border-bottom: 1px solid #d83c3c; margin: 10px 0px 5px; border-left: 5px solid #d83c3c; letter-spacing: -0.07em; line-height: 30px; padding: 0px 10px 1px;&quot; data-ke-size=&quot;size23&quot;&gt;@SpringQueryMap 사용 예시&lt;/h3&gt;
&lt;pre id=&quot;code_1680185652998&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;    @GetMapping(&quot;/spring_query_map&quot;)
    fun springQueryMap(
        @SpringQueryMap queryParams: MyQueryParam,
    ) : String {
        return &quot;${queryParams.id} ${queryParams.name}&quot;
    }
    
    data class MyQueryParam(
        val id: Int,
        val name: String,
    )&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;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 style=&quot;border-bottom: 3px solid #707070; font-weight: bold; padding: 5px;&quot; data-ke-size=&quot;size26&quot;&gt;테스트 코드&lt;/h2&gt;
&lt;pre id=&quot;code_1680185738867&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;@ExtendWith(SpringExtension::class)
@WebMvcTest(SpringQueryMapController::class)
@AutoConfigureMockMvc
class SpringQueryMapControllerTest {

    @Autowired
    private lateinit var mockMvc: MockMvc

    companion object {
        const val id = &quot;1&quot;
        const val name = &quot;test&quot;

        val queryParams = LinkedMultiValueMap(mapOf(
            &quot;id&quot; to listOf(id),
            &quot;name&quot; to listOf(name)
        ))

        const val PREFIX = &quot;/spring_query_map&quot;
    }


    @Test
    fun requestParamTest() {
        val result = mockMvc.perform(MockMvcRequestBuilders.get(&quot;$PREFIX/request_param&quot;)
            .queryParams(queryParams)
            .contentType(MediaType.APPLICATION_JSON))
            .andExpect(MockMvcResultMatchers.status().isOk)
            .andReturn()

        assertEquals(&quot;${id} ${name}&quot;, result.response.contentAsString)
    }

    @Test
    fun springQueryMapTest() {
        val result = mockMvc.perform(MockMvcRequestBuilders.get(&quot;$PREFIX/spring_query_map&quot;)
            .queryParams(queryParams)
            .contentType(MediaType.APPLICATION_JSON))
            .andExpect(MockMvcResultMatchers.status().isOk)
            .andReturn()

        assertEquals(&quot;${id} ${name}&quot;, result.response.contentAsString)
    }
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>웹, 앱 개발/Spring</category>
      <category>@RequestParam</category>
      <category>@SpringQueryMap</category>
      <category>feign</category>
      <category>kotlin</category>
      <category>Spring</category>
      <category>springboot</category>
      <author>나아가는중</author>
      <guid isPermaLink="true">https://dlee0129.tistory.com/292</guid>
      <comments>https://dlee0129.tistory.com/292#entry292comment</comments>
      <pubDate>Thu, 30 Mar 2023 23:16:56 +0900</pubDate>
    </item>
    <item>
      <title>Collectors.toUnmodifiableList() 불변 리스트</title>
      <link>https://dlee0129.tistory.com/291</link>
      <description>&lt;h2 style=&quot;border-bottom: 3px solid #707070; font-weight: bold; padding: 5px;&quot; data-ke-size=&quot;size26&quot;&gt;.toUnmodifiableList() 란?&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;.toUnmodifiableList&lt;span style=&quot;color: #374151;&quot;&gt;는 자바 10부터 추가된 기능 중 하나로, &lt;/span&gt;java.util.stream.Stream&lt;span style=&quot;color: #374151;&quot;&gt; 인터페이스에서 제공하는 메소드 중 하나입니다. 이 메소드는 스트림에서 요소를 수집하여 &lt;b&gt;변경 불가능한 리스트(&lt;/b&gt;&lt;/span&gt;&lt;b&gt;java.util.List&lt;/b&gt;&lt;span style=&quot;color: #374151;&quot;&gt;&lt;b&gt;)로 반환&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;color: #374151;&quot;&gt;다음과 같이 스트림을 생성하고,&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;toUnmodifiableList&lt;span style=&quot;color: #374151;&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;메소드를 호출하여 변경 불가능한 리스트를 생성할 수 있습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;toList()&lt;span style=&quot;color: #374151;&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;메소드는 스트림에서 수집한 요소를 리스트로 반환합니다. 하지만&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;toList()&lt;span style=&quot;color: #374151;&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;대신&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;toUnmodifiableList()&lt;span style=&quot;color: #374151;&quot;&gt;를 호출하면, 반환된 리스트는 변경할 수 없습니다.&lt;/span&gt;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 style=&quot;border-bottom: 3px solid #707070; font-weight: bold; padding: 5px;&quot; data-ke-size=&quot;size26&quot;&gt;예제 코드&lt;/h2&gt;
&lt;pre id=&quot;code_1680013137759&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.Test;

import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;

class UnmodifiableListTest {

    @Test
    void unmodifiableListTest() {
        List&amp;lt;Integer&amp;gt; numbers = Arrays.asList(1, 2, 3, 4, 5);

        List&amp;lt;Integer&amp;gt; evenNumbers = numbers.stream()
                .filter(n -&amp;gt; n % 2 == 0)
                .collect(Collectors.toUnmodifiableList());

        Assertions.assertThrows(UnsupportedOperationException.class, () -&amp;gt; evenNumbers.add(6));
        Assertions.assertEquals(Arrays.asList(2, 4), evenNumbers);
    }
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #374151;&quot;&gt;.toUnmodifiableList 메소드로 반환된 변경 불가능한 리스트에 요소를 추가하려고 하면 &lt;b&gt;UnsupportedOperationException&lt;/b&gt;&amp;nbsp;예외가 발생합니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>프로그래밍 언어/자바(JAVA)</category>
      <category>Java</category>
      <category>jdk10</category>
      <category>STREAM</category>
      <category>tolist</category>
      <category>toUnmodifiableList</category>
      <author>나아가는중</author>
      <guid isPermaLink="true">https://dlee0129.tistory.com/291</guid>
      <comments>https://dlee0129.tistory.com/291#entry291comment</comments>
      <pubDate>Wed, 29 Mar 2023 00:22:11 +0900</pubDate>
    </item>
    <item>
      <title>@SuperBuilder란? &amp;amp; 사용 예시</title>
      <link>https://dlee0129.tistory.com/290</link>
      <description>&lt;h2 style=&quot;border-bottom: 3px solid #707070; font-weight: bold; padding: 5px;&quot; data-ke-size=&quot;size26&quot;&gt;SupperBuilder 란?&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;@SuperBuilder는 Lombok 라이브러리에서 제공하는 어노테이션 중 하나입니다. 이 어노테이션을 사용하면 자바 빈(Java Bean) 클래스를 빌더 패턴(Builder Pattern)으로 간편하게 구현할 수 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;빌더 패턴은 객체를 생성하기 위한 여러 속성을 가진 클래스를 생성하고, 이를 이용하여 객체를 생성하는 방식입니다. 빌더 패턴은 객체 생성을 보다 유연하고 가독성 높은 방식으로 구현할 수 있어, 객체 생성 로직이 복잡한 경우 유용합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;@SuperBuilder 어노테이션은 @Builder 어노테이션의 기능을 보완하기 위해 도입되었습니다. @Builder 어노테이션으로는 상속받은 필드를 빌더에서 사용하지 못하는 등의 제한이 있었습니다. @SuperBuilder 어노테이션은 이러한 제한을 해결하고, 상속받은 필드도 빌더에서 사용할 수 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;@SuperBuilder 어노테이션은 다음과 같은 장점이 있습니다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;빌더 패턴을 구현하기 위한 코드를 간결하게 작성할 수 있습니다.&lt;/li&gt;
&lt;li&gt;별도의 빌더 클래스를 작성하지 않아도 됩니다.&lt;/li&gt;
&lt;li&gt;생성자에서 상속받은 필드도 빌더에서 사용할 수 있습니다.&lt;/li&gt;
&lt;/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;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 style=&quot;border-bottom: 3px solid #707070; font-weight: bold; padding: 5px;&quot; data-ke-size=&quot;size26&quot;&gt;SupperBuilder 사용 예시&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;SuperBuilder를 사용하기 위해서는 부모와 자식 클래스 양쪽에 @SuperBuilder 어노테이션을 추가해줘야 합니다. 자식 클래스를 생성하면서 빌더를 통해 부모와 자식 클래스의 필드 모두를 작성할 수 있습니다.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style7&quot; /&gt;
&lt;h3 style=&quot;font-weight: bold; border-bottom: 1px solid #d83c3c; margin: 10px 0px 5px; border-left: 5px solid #d83c3c; letter-spacing: -0.07em; line-height: 30px; padding: 0px 10px 1px;&quot; data-ke-size=&quot;size23&quot;&gt;부모 클래스 Parent&lt;/h3&gt;
&lt;pre id=&quot;code_1680011138353&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import lombok.experimental.SuperBuilder;

@SuperBuilder
public class Parent {
    private String parentField;
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-weight: bold; border-bottom: 1px solid #d83c3c; margin: 10px 0px 5px; border-left: 5px solid #d83c3c; letter-spacing: -0.07em; line-height: 30px; padding: 0px 10px 1px;&quot; data-ke-size=&quot;size23&quot;&gt;자식 클래스 Child&lt;/h3&gt;
&lt;pre id=&quot;code_1680011186352&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import lombok.experimental.SuperBuilder;

@SuperBuilder
public class Child extends Parent {
    private String childField;
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-weight: bold; border-bottom: 1px solid #d83c3c; margin: 10px 0px 5px; border-left: 5px solid #d83c3c; letter-spacing: -0.07em; line-height: 30px; padding: 0px 10px 1px;&quot; data-ke-size=&quot;size23&quot;&gt;SuperBuilder 예제 코드&lt;/h3&gt;
&lt;pre id=&quot;code_1680011223987&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import org.junit.jupiter.api.Test;

class SupperBuilderTest {

    @Test
    void supperBuilderTest() {
        Child child = Child.builder()
                .parentField(&quot;parent&quot;)
                .childField(&quot;child&quot;)
                .build();
    }

}&lt;/code&gt;&lt;/pre&gt;</description>
      <category>웹, 앱 개발/Spring</category>
      <category>builder</category>
      <category>Lombok</category>
      <category>springboot</category>
      <category>SuperBuilder</category>
      <author>나아가는중</author>
      <guid isPermaLink="true">https://dlee0129.tistory.com/290</guid>
      <comments>https://dlee0129.tistory.com/290#entry290comment</comments>
      <pubDate>Tue, 28 Mar 2023 22:49:20 +0900</pubDate>
    </item>
    <item>
      <title>[백준 Baekjoon] 2501번 약수 구하기 - Kotlin</title>
      <link>https://dlee0129.tistory.com/286</link>
      <description>&lt;div id=&quot;problem-body&quot;&gt;
&lt;div&gt;
&lt;div&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;문제&lt;/span&gt;&lt;/h2&gt;
&lt;/div&gt;
&lt;div id=&quot;problem_description&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;어떤 자연수 p와 q가 있을 때, 만일 p를 q로 나누었을 때 나머지가 0이면 q는 p의 약수이다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;6을 예로 들면&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 Serif KR';&quot;&gt;6 &amp;divide; 1 = 6 &amp;hellip; 0&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;6 &amp;divide; 2 = 3 &amp;hellip; 0&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;6 &amp;divide; 3 = 2 &amp;hellip; 0&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;6 &amp;divide; 4 = 1 &amp;hellip; 2&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;6 &amp;divide; 5 = 1 &amp;hellip; 1&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;6 &amp;divide; 6 = 1 &amp;hellip; 0&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 Serif KR';&quot;&gt;그래서 6의 약수는 1, 2, 3, 6, 총 네 개이다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;두 개의 자연수 N과 K가 주어졌을 때, N의 약수들 중 K번째로 작은 수를 출력하는 프로그램을 작성하시오.&lt;/span&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;입력&lt;/span&gt;&lt;/h2&gt;
&lt;/div&gt;
&lt;div id=&quot;problem_input&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;첫째 줄에 N과 K가 빈칸을 사이에 두고 주어진다. N은 1 이상 10,000 이하이다. K는 1 이상 N 이하이다.&lt;/span&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;출력&lt;/span&gt;&lt;/h2&gt;
&lt;/div&gt;
&lt;div id=&quot;problem_output&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;첫째 줄에 N의 약수들 중 K번째로 작은 수를 출력한다. 만일 N의 약수의 개수가 K개보다 적어서 K번째 약수가 존재하지 않을 경우에는 0을 출력하시오.&lt;/span&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;예제 입력 1&lt;/span&gt;&lt;/h2&gt;
&lt;/div&gt;
&lt;pre id=&quot;sample-input-1&quot; class=&quot;basic&quot;&gt;&lt;code&gt;6 3
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;예제 출력 1&amp;nbsp;&lt;/span&gt;&lt;/h2&gt;
&lt;/div&gt;
&lt;pre id=&quot;sample-output-1&quot; class=&quot;angelscript&quot;&gt;&lt;code&gt;3
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;예제 입력 2&amp;nbsp;&lt;/span&gt;&lt;/h2&gt;
&lt;/div&gt;
&lt;pre id=&quot;sample-input-2&quot; class=&quot;basic&quot;&gt;&lt;code&gt;25 4
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;예제 출력 2&amp;nbsp;&lt;/span&gt;&lt;/h2&gt;
&lt;/div&gt;
&lt;pre id=&quot;sample-output-2&quot; class=&quot;angelscript&quot;&gt;&lt;code&gt;0
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;예제 입력 3&amp;nbsp;&lt;/span&gt;&lt;/h2&gt;
&lt;/div&gt;
&lt;pre id=&quot;sample-input-3&quot; class=&quot;basic&quot;&gt;&lt;code&gt;2735 1
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;예제 출력 3&amp;nbsp;&lt;/span&gt;&lt;/h2&gt;
&lt;/div&gt;
&lt;pre id=&quot;sample-output-3&quot; class=&quot;angelscript&quot;&gt;&lt;code&gt;1
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;소스코드&lt;/span&gt;&lt;/h2&gt;
&lt;div&gt;
&lt;pre id=&quot;code_1678283139775&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;fun main() {
    val (n, k) = readLine()!!.split(&quot; &quot;).map { it.toInt() }
    var cnt = 0

    for (idx in 1..n) {
        if (n % idx == 0) cnt++

        if (cnt == k) {
            println(idx)
            return
        }
    }

    println(0)
}&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;</description>
      <category>알고리즘(Algorithm)/백준(Baekjoon)</category>
      <category>2501</category>
      <category>Baekjoon</category>
      <category>kotlin</category>
      <category>백준</category>
      <category>약수 구하기</category>
      <category>코틀린</category>
      <author>나아가는중</author>
      <guid isPermaLink="true">https://dlee0129.tistory.com/286</guid>
      <comments>https://dlee0129.tistory.com/286#entry286comment</comments>
      <pubDate>Wed, 8 Mar 2023 22:46:26 +0900</pubDate>
    </item>
    <item>
      <title>[Kotlin] Day 5: Loops (HackerRank - 30 Days of Code)</title>
      <link>https://dlee0129.tistory.com/285</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;소스코드&lt;/h2&gt;
&lt;pre id=&quot;code_1678280989450&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;fun main(args: Array&amp;lt;String&amp;gt;) {
    val n = readLine()!!.trim().toInt()
    val sb = StringBuilder()

    for (idx in 1 .. 10) {
        sb.append(&quot;$n x $idx = ${n * idx}&quot;).append(&quot;\n&quot;)
    }

    println(sb)
}&lt;/code&gt;&lt;/pre&gt;</description>
      <category>프로그래밍 언어/코틀린(Kotline)</category>
      <category>30 Days of Code</category>
      <category>Day 5</category>
      <category>hackerrank</category>
      <category>kotlin</category>
      <category>loops</category>
      <category>코틀린</category>
      <category>해커랭크</category>
      <author>나아가는중</author>
      <guid isPermaLink="true">https://dlee0129.tistory.com/285</guid>
      <comments>https://dlee0129.tistory.com/285#entry285comment</comments>
      <pubDate>Wed, 8 Mar 2023 22:10:37 +0900</pubDate>
    </item>
    <item>
      <title>[Kotlin] Day 3: Intro to Conditional Statements (HackerRank - 30 Days of Code)</title>
      <link>https://dlee0129.tistory.com/284</link>
      <description>&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;&lt;b&gt;Objective&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;In this challenge, we learn about conditional statements. Check out the&amp;nbsp;&lt;a href=&quot;https://www.hackerrank.com/challenges/30-conditional-statements/tutorial&quot;&gt;Tutorial&lt;/a&gt;&amp;nbsp;tab for learning materials and an instructional video.&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 Serif KR';&quot;&gt;&lt;b&gt;Task&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;Given an integer,&amp;nbsp;, perform the following conditional actions:&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 Serif KR';&quot;&gt;If&amp;nbsp;&amp;nbsp;is odd, print&amp;nbsp;Weird&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;If&amp;nbsp;&amp;nbsp;is even and in the inclusive range of&amp;nbsp;&amp;nbsp;to&amp;nbsp;, print&amp;nbsp;Not Weird&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;If&amp;nbsp;&amp;nbsp;is even and in the inclusive range of&amp;nbsp;&amp;nbsp;to&amp;nbsp;, print&amp;nbsp;Weird&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;If&amp;nbsp;&amp;nbsp;is even and greater than&amp;nbsp;, print&amp;nbsp;Not Weird&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 Serif KR';&quot;&gt;Complete the stub code provided in your editor to print whether or not&amp;nbsp;&amp;nbsp;is weird.&lt;/span&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;&lt;b&gt;Input Format&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;A single line containing a positive integer&lt;/span&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;&lt;b&gt;Output Format&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;Print&amp;nbsp;Weird&amp;nbsp;if the number is weird; otherwise, print&amp;nbsp;Not Weird.&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 Serif KR';&quot;&gt;&lt;b&gt;Sample Input 0&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;pre class=&quot;angelscript&quot;&gt;&lt;code&gt;3
&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;&lt;b&gt;Sample Output 0&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;pre class=&quot;ebnf&quot;&gt;&lt;code&gt;Weird
&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;&lt;b&gt;Sample Input 1&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;pre class=&quot;angelscript&quot;&gt;&lt;code&gt;24
&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;&lt;b&gt;Sample Output 1&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;pre class=&quot;ebnf&quot;&gt;&lt;code&gt;Not Weird
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;&lt;b&gt;Explanation&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;Sample Case 0:&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;&amp;nbsp;is odd and odd numbers are weird, so we print&amp;nbsp;Weird.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;Sample Case 1:&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;&amp;nbsp;and&amp;nbsp;&amp;nbsp;is even, so it is not weird. Thus, we print&amp;nbsp;Not Weird.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;문제풀이&lt;/span&gt;&lt;/h2&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 Serif KR';&quot;&gt;짝수면(N % 2) -&amp;gt; &lt;b&gt;Wieird&lt;/b&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;5이하면 -&amp;gt; &lt;b&gt;Not Weird&lt;/b&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;20이하면 -&amp;gt; &lt;b&gt;Weird&lt;/b&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;홀수면(else) -&amp;gt; &lt;b&gt;Not Weird&lt;/b&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;소스코드&lt;/span&gt;&lt;/h2&gt;
&lt;pre id=&quot;code_1678112302661&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;fun main(args: Array&amp;lt;String&amp;gt;) {
    val N = readLine()!!.trim().toInt()

    when {
        N % 2 != 0 -&amp;gt; println(&quot;Weird&quot;)
        N &amp;lt;= 5 -&amp;gt; println(&quot;Not Weird&quot;)
        N &amp;lt;= 20 -&amp;gt; println(&quot;Weird&quot;)
        else -&amp;gt; println(&quot;Not Weird&quot;)
    }
}&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;</description>
      <category>프로그래밍 언어/코틀린(Kotline)</category>
      <category>30 Days of Code</category>
      <category>day3</category>
      <category>hackerrank</category>
      <category>Intro to Conditional Statements</category>
      <category>kotlin</category>
      <category>코틀린</category>
      <author>나아가는중</author>
      <guid isPermaLink="true">https://dlee0129.tistory.com/284</guid>
      <comments>https://dlee0129.tistory.com/284#entry284comment</comments>
      <pubDate>Mon, 6 Mar 2023 23:21:51 +0900</pubDate>
    </item>
    <item>
      <title>[Kotlin] Day 2: Opterators (HackerRank - 30 Days of Code)</title>
      <link>https://dlee0129.tistory.com/283</link>
      <description>&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;&lt;b&gt;Objective&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;In this challenge, you will work with arithmetic operators. Check out the&amp;nbsp;&lt;a href=&quot;https://www.hackerrank.com/challenges/30-operators/tutorial&quot;&gt;Tutorial&lt;/a&gt;&amp;nbsp;tab for learning materials and an instructional video.&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 Serif KR';&quot;&gt;&lt;b&gt;Task&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;Given the&amp;nbsp;meal price&amp;nbsp;(base cost of a meal),&amp;nbsp;tip percent&amp;nbsp;(the percentage of the&amp;nbsp;meal price&amp;nbsp;being added as tip), and&amp;nbsp;tax percent&amp;nbsp;(the percentage of the&amp;nbsp;meal price&amp;nbsp;being added as tax) for a meal, find and print the meal's&amp;nbsp;total cost. Round the result to the nearest integer.&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 Serif KR';&quot;&gt;&lt;b&gt;Example&lt;/b&gt;&lt;b&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;A tip of 15% * 100 = 15, and the taxes are 8% * 100 = 8. Print the value&amp;nbsp;&amp;nbsp;and return from the function.&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 Serif KR';&quot;&gt;&lt;b&gt;Function Description&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;Complete the&amp;nbsp;solve&amp;nbsp;function in the editor below.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;solve&amp;nbsp;has the following parameters:&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 Serif KR';&quot;&gt;int meal_cost:&amp;nbsp;the cost of food before tip and tax&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;int tip_percent:&amp;nbsp;the tip percentage&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;int tax_percent:&amp;nbsp;the tax percentage&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 Serif KR';&quot;&gt;Returns The function returns nothing. Print the calculated value, rounded to the nearest integer.&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 Serif KR';&quot;&gt;&lt;b&gt;Note:&lt;/b&gt;&amp;nbsp;Be sure to use precise values for your calculations, or you may end up with an incorrectly rounded result.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;&lt;b&gt;Input Format&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;&lt;span style=&quot;letter-spacing: 0px;&quot;&gt;There are&lt;/span&gt;&lt;span style=&quot;letter-spacing: 0px;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;letter-spacing: 0px;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;letter-spacing: 0px;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;letter-spacing: 0px;&quot;&gt;lines of numeric input:&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 Serif KR';&quot;&gt;&lt;span style=&quot;letter-spacing: 0px;&quot;&gt;The first line has a double,&lt;/span&gt;&lt;span style=&quot;letter-spacing: 0px;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;letter-spacing: 0px;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;letter-spacing: 0px;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;letter-spacing: 0px;&quot;&gt;(the cost of the meal before tax and tip).&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 Serif KR';&quot;&gt;&lt;span style=&quot;letter-spacing: 0px;&quot;&gt;The second line has an integer,&lt;/span&gt;&lt;span style=&quot;letter-spacing: 0px;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;letter-spacing: 0px;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;letter-spacing: 0px;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;letter-spacing: 0px;&quot;&gt;(the percentage of&lt;/span&gt;&lt;span style=&quot;letter-spacing: 0px;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;letter-spacing: 0px;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;letter-spacing: 0px;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;letter-spacing: 0px;&quot;&gt;being added as tip).&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 Serif KR';&quot;&gt;&lt;span style=&quot;letter-spacing: 0px;&quot;&gt;The third line has an integer,&lt;/span&gt;&lt;span style=&quot;letter-spacing: 0px;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;letter-spacing: 0px;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;letter-spacing: 0px;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;letter-spacing: 0px;&quot;&gt;(the percentage of&lt;/span&gt;&lt;span style=&quot;letter-spacing: 0px;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;letter-spacing: 0px;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;letter-spacing: 0px;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;letter-spacing: 0px;&quot;&gt;being added as tax).&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;&lt;b&gt;Sample Input&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;pre class=&quot;angelscript&quot;&gt;&lt;code&gt;12.00
20
8
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;&lt;b&gt;Sample Output&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;pre class=&quot;angelscript&quot;&gt;&lt;code&gt;15
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;문제풀이&lt;/span&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;팁과 세금을 음식값과 곱해준다음 퍼센트 계산을 해야 하므로 100으로 나눠줍니다.&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 Serif KR';&quot;&gt;결과를 &lt;b&gt;&lt;span style=&quot;background-color: #dddddd;&quot;&gt;가장 가까운 정수로 반환하기 위해 rountToInt()&lt;/span&gt;&lt;/b&gt;을 사용해줍니다.&lt;/span&gt;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;소스코드&lt;/span&gt;&lt;/h2&gt;
&lt;pre id=&quot;code_1678111788925&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import kotlin.math.roundToInt

fun solve(meal_cost: Double, tip_percent: Int, tax_percent: Int): Unit {
    val tip = tip_percent * meal_cost / 100
    val tax = tax_percent * meal_cost / 100

    println((tip + tax + meal_cost).roundToInt())
}

fun main(args: Array&amp;lt;String&amp;gt;) {
    val meal_cost = readLine()!!.trim().toDouble()

    val tip_percent = readLine()!!.trim().toInt()

    val tax_percent = readLine()!!.trim().toInt()

    solve(meal_cost, tip_percent, tax_percent)
}&lt;/code&gt;&lt;/pre&gt;</description>
      <category>프로그래밍 언어/코틀린(Kotline)</category>
      <category>30 Days of Code</category>
      <category>day2</category>
      <category>Hakerrank</category>
      <category>kotlin</category>
      <category>operators</category>
      <category>코틀린</category>
      <category>해커랭크</category>
      <author>나아가는중</author>
      <guid isPermaLink="true">https://dlee0129.tistory.com/283</guid>
      <comments>https://dlee0129.tistory.com/283#entry283comment</comments>
      <pubDate>Mon, 6 Mar 2023 23:14:40 +0900</pubDate>
    </item>
    <item>
      <title>[Kotlin] Day 0: Hello, World. (HackerRank - 30 Days of Code)</title>
      <link>https://dlee0129.tistory.com/282</link>
      <description>&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;&lt;b&gt;Objective&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;In this challenge, we review some basic concepts that will get you started with this series. You will need to use the same (or similar) syntax to read input and write output in challenges throughout HackerRank. Check out the&amp;nbsp;&lt;a href=&quot;https://www.hackerrank.com/challenges/30-hello-world/tutorial&quot;&gt;Tutorial&lt;/a&gt;&amp;nbsp;tab for learning materials and an instructional video!&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;&lt;b&gt;Task&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;To complete this challenge, you must save a line of input from stdin to a variable, print&amp;nbsp;Hello, World.&amp;nbsp;on a single line, and finally print the value of your variable on a second line.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;You've got this!&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;&lt;b&gt;Note:&lt;/b&gt;&amp;nbsp;The instructions are Java-based, but we support submissions in many popular languages. You can switch languages using the drop-down menu above your editor, and the&amp;nbsp;&amp;nbsp;variable may be written differently depending on the best-practice conventions of your submission language.&lt;/span&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;&lt;b&gt;Input Format&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;A single line of text denoting&amp;nbsp;&amp;nbsp;(the variable whose contents must be printed).&lt;/span&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;&lt;b&gt;Output Format&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;Print&amp;nbsp;Hello, World.&amp;nbsp;on the first line, and the contents of&amp;nbsp;&amp;nbsp;on the second line.&lt;/span&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;&lt;b&gt;Sample Input&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;pre class=&quot;excel&quot;&gt;&lt;code&gt;Welcome to 30 Days of Code!
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;&lt;b&gt;Sample Output&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;pre class=&quot;excel&quot;&gt;&lt;code&gt;Hello, World. 
Welcome to 30 Days of Code!
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;&lt;b&gt;Explanation&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;On the first line, we print the string literal&amp;nbsp;Hello, World.. On the second line, we print the contents of the&amp;nbsp;&amp;nbsp;variable which, for this sample case, happens to be&amp;nbsp;Welcome to 30 Days of Code!.&amp;nbsp;If you do not print the variable's contents to stdout, you will not pass the hidden test case.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;소스코드&lt;/span&gt;&lt;/h2&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;pre id=&quot;code_1677858127127&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import java.io.*
import java.util.*

fun main(args: Array&amp;lt;String&amp;gt;) {
        val inputString = readLine()
        
        println(&quot;Hello, World.&quot;)
        println(inputString)
}&lt;/code&gt;&lt;/pre&gt;</description>
      <category>프로그래밍 언어/코틀린(Kotline)</category>
      <category>30 Days of Code</category>
      <category>day 0</category>
      <category>harkerrank</category>
      <category>hello</category>
      <category>kotlin</category>
      <category>World.</category>
      <category>코틀린</category>
      <author>나아가는중</author>
      <guid isPermaLink="true">https://dlee0129.tistory.com/282</guid>
      <comments>https://dlee0129.tistory.com/282#entry282comment</comments>
      <pubDate>Sat, 4 Mar 2023 00:43:32 +0900</pubDate>
    </item>
    <item>
      <title>[백준 Baekjoon] 10156번 과자 - Kotlin</title>
      <link>https://dlee0129.tistory.com/281</link>
      <description>&lt;div&gt;
&lt;div&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;문제&lt;/h2&gt;
&lt;/div&gt;
&lt;div id=&quot;problem_description&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;동수는 제과점에 과자를 사러 가는데 현재 가진 돈이 모자랄 경우 부모님께 모자란 돈을 받으려고 한다. 과자 한 개의 가격이 K, 사려고 하는 과자의 개수가 N이고, 현재 가진 돈의 액수를 M이라 할 때 여러분은 동수가 부모님께 받아야 하는 모자란 돈을 계산하려고 한다.&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;예를 들어, 과자 한 개의 가격이 30원, 사려고 하는 과자의 개수가 4개, 현재 동수가 가진 돈이 100원이라 할 때, 동수가 부모님께 받아야 하는 돈은 20원이다. 과자 한 개의 가격이 250원, 사려고 하는 과자의 개수가 2개, 현재 동수가 가진 돈이 140원이라 할 때, 동수가 부모님께 받아야 하는 돈은 360원이다. 과자 한 개의 가격이 20원, 사려고 하는 과자의 개수가 6개, 현재 동수가 가진 돈이 120원이라 할 때 동수가 부모님께 받아야 하는 돈은 0원이다. 과자 한 개의 가격이 20원, 사려고 하는 과자의 개수가 10개, 현재 동수가 가진 돈이 320원이라 할 때 동수가 부모님께 받아야 하는 돈은 역시 0원이다.&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;/div&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;입력&lt;/h2&gt;
&lt;/div&gt;
&lt;div id=&quot;problem_input&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;첫 번째 줄에는 과자 한 개의 가격 K, 사려고 하는 과자의 개수 N, 현재 동수가 가진 돈 M이 각각 공백을 사이에 두고 주어진다. 단, K, N은 1,000 이하의 양의 정수이고, M은 10만 이하의 양의 정수이다. (1 &amp;le; K, N &amp;le; 1,000, 1 &amp;le; M &amp;le; 100,000이다.)&amp;nbsp;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;출력&lt;/h2&gt;
&lt;/div&gt;
&lt;div id=&quot;problem_output&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;첫 줄에 동수가 부모님께 받아야 하는 돈의 액수를 출력한다.&amp;nbsp;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;예제 입력 1&lt;/h2&gt;
&lt;/div&gt;
&lt;pre id=&quot;sample-input-1&quot; class=&quot;basic&quot;&gt;&lt;code&gt;300 4 1000
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;예제 출력 1&lt;/h2&gt;
&lt;/div&gt;
&lt;pre id=&quot;sample-output-1&quot; class=&quot;angelscript&quot;&gt;&lt;code&gt;200
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;예제 입력 2&lt;/h2&gt;
&lt;/div&gt;
&lt;pre id=&quot;sample-input-2&quot; class=&quot;basic&quot;&gt;&lt;code&gt;250 2 140
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;예제 출력 2&lt;/h2&gt;
&lt;/div&gt;
&lt;pre id=&quot;sample-output-2&quot; class=&quot;angelscript&quot;&gt;&lt;code&gt;360
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;예제 입력 3&lt;/h2&gt;
&lt;/div&gt;
&lt;pre id=&quot;sample-input-3&quot; class=&quot;basic&quot;&gt;&lt;code&gt;20 6 120
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;예제 출력 3&lt;/h2&gt;
&lt;/div&gt;
&lt;pre id=&quot;sample-output-3&quot; class=&quot;angelscript&quot;&gt;&lt;code&gt;0
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;예제 입력 4&lt;/h2&gt;
&lt;/div&gt;
&lt;pre id=&quot;sample-input-4&quot; class=&quot;basic&quot;&gt;&lt;code&gt;20 10 320
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;예제 출력 4&lt;/h2&gt;
&lt;/div&gt;
&lt;pre id=&quot;sample-output-4&quot; class=&quot;angelscript&quot;&gt;&lt;code&gt;0&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;문제풀이&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1. 주어진 돈에서 사려고하는 과자 * 갯수를 뺀 값을 구한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2. 1에서 구한 값이 0보다 작다면 양수로 바꿔 출력하고 0보다 크다면 0을 출력한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;소스코드&lt;/h2&gt;
&lt;pre id=&quot;code_1677854050278&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import java.util.StringTokenizer

fun main() {
    val st = StringTokenizer(readln())
    val k = st.nextToken().toInt()
    val n = st.nextToken().toInt()
    val m = st.nextToken().toInt()

    val needMoney = m - k * n
    println(if (needMoney &amp;lt; 0) -needMoney else 0)
}&lt;/code&gt;&lt;/pre&gt;</description>
      <category>알고리즘(Algorithm)/백준(Baekjoon)</category>
      <category>10156</category>
      <category>Baekjoon</category>
      <category>kotlin</category>
      <category>과자</category>
      <category>백준</category>
      <category>코틀린</category>
      <author>나아가는중</author>
      <guid isPermaLink="true">https://dlee0129.tistory.com/281</guid>
      <comments>https://dlee0129.tistory.com/281#entry281comment</comments>
      <pubDate>Fri, 3 Mar 2023 23:34:43 +0900</pubDate>
    </item>
    <item>
      <title>[백준 Baekjoon] 1271번 엄청난 부자2 - Kotlin</title>
      <link>https://dlee0129.tistory.com/280</link>
      <description>&lt;div&gt;
&lt;div&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;문제&lt;/h2&gt;
&lt;/div&gt;
&lt;div id=&quot;problem_description&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&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: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&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: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;프로토스 중앙 우주 정부의 정책인, &amp;lsquo;모든 지적 생명체는 동등하다&amp;rsquo;라는 규칙에 입각해서 돈을 똑같이 분배하고자 한다.&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: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&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: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;또, 생명체들에게 동일하게 분배한 후 남는 돈은 얼마인가?&lt;/span&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;입력&lt;/h2&gt;
&lt;/div&gt;
&lt;div id=&quot;problem_input&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;첫째 줄에는 최백준 조교가 가진 돈 n과 돈을 받으러 온 생명체의 수 m이 주어진다. (1 &amp;le;&amp;nbsp;m &amp;le; n &amp;le;&amp;nbsp;101000, m과 n은 10진수 정수)&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;출력&lt;/h2&gt;
&lt;/div&gt;
&lt;div id=&quot;problem_output&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;첫째 줄에 생명체 하나에게 돌아가는 돈의 양을 출력한다. 그리고 두 번째 줄에는 1원씩 분배할 수 없는 남는 돈을 출력한다.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;예제 입력&amp;nbsp;&lt;/h2&gt;
&lt;/div&gt;
&lt;pre id=&quot;sample-input-1&quot; class=&quot;basic&quot;&gt;&lt;code&gt;1000 100
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;예제 출력&amp;nbsp;&lt;/h2&gt;
&lt;/div&gt;
&lt;pre id=&quot;sample-output-1&quot; class=&quot;angelscript&quot;&gt;&lt;code&gt;10
0&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;문제풀이&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;주어진 n과 m은 int나 long의 범위를 넘어 BigInteger 자료형을 사용하여야 합니다.&lt;/p&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 / m 을 해서 구할 수 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1원씩 분배할 수 없는 남는 돈은 n % m 을 해서 나머지 연산을 하면 구할 수 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;소스코드&lt;/h2&gt;
&lt;pre id=&quot;code_1677853416206&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import java.util.StringTokenizer

fun main() {
    val st = StringTokenizer(readln())
    val n = st.nextToken().toBigInteger()
    val m = st.nextToken().toBigInteger()

    println(n / m)
    println(n % m)
}&lt;/code&gt;&lt;/pre&gt;</description>
      <category>알고리즘(Algorithm)/백준(Baekjoon)</category>
      <category>1271</category>
      <category>Baekjoon</category>
      <category>kotlin</category>
      <category>백준</category>
      <category>엄청난 부자2</category>
      <category>코틀린</category>
      <author>나아가는중</author>
      <guid isPermaLink="true">https://dlee0129.tistory.com/280</guid>
      <comments>https://dlee0129.tistory.com/280#entry280comment</comments>
      <pubDate>Fri, 3 Mar 2023 23:25:14 +0900</pubDate>
    </item>
    <item>
      <title>[백준 Baekjoon] 4101번 크냐? - Kotlin</title>
      <link>https://dlee0129.tistory.com/279</link>
      <description>&lt;div&gt;
&lt;div&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;문제&lt;/h2&gt;
&lt;/div&gt;
&lt;div id=&quot;problem_description&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;두 양의 정수가 주어졌을 때, 첫 번째 수가 두 번째 수보다 큰지 구하는 프로그램을 작성하시오.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;입력&lt;/h2&gt;
&lt;/div&gt;
&lt;div id=&quot;problem_input&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;입력은 여러 개의 테스트 케이스로 이루어져 있다. 각 테스트 케이스는 한 줄로 이루어져 있으며, 두 정수가 주어진다. 두 수는 백만보다 작거나 같은 양의 정수이다. 입력의 마지막 줄에는 0이 두 개 주어진다.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;출력&lt;/h2&gt;
&lt;/div&gt;
&lt;div id=&quot;problem_output&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;각 테스트 케이스마다, 첫 번째 수가 두 번째 수보다 크면 Yes를, 아니면 No를 한 줄에 하나씩 출력한다.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;예제 입력 1&lt;/h2&gt;
&lt;/div&gt;
&lt;pre id=&quot;sample-input-1&quot; class=&quot;basic&quot;&gt;&lt;code&gt;1 19
4 4
23 14
0 0
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;예제 출력 1&lt;/h2&gt;
&lt;/div&gt;
&lt;pre id=&quot;sample-output-1&quot; class=&quot;yaml&quot;&gt;&lt;code&gt;No
No
Yes&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;문제풀이&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1. 입력으로 0, 0 을 받을때까지 무한루프를 돌며 입력을 받아 크기 비교를 수행합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2. 입력으로 받은 a 가 b 보다 작거나 같은 경우 &quot;No&quot;, 큰 경우 &quot;Yes&quot;를 출력에 추가해줍니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;3. 루프가 종료되면, 그 동안 추가한 출력을 출력합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;소스코드&lt;/h3&gt;
&lt;pre id=&quot;code_1677507845492&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import java.util.StringTokenizer

fun main() {
    var st: StringTokenizer
    var a: Int
    var b: Int
    val sb = StringBuilder()

    while (true) {
        st = StringTokenizer(readln())
        a = st.nextToken().toInt()
        b = st.nextToken().toInt()

        if (a == 0 &amp;amp;&amp;amp; b == 0) {
            break
        }

        sb.append(if (a &amp;lt;= b) &quot;No&quot; else &quot;Yes&quot;).append(&quot;\n&quot;)
    }

    println(sb)
}&lt;/code&gt;&lt;/pre&gt;</description>
      <category>알고리즘(Algorithm)/백준(Baekjoon)</category>
      <category>4101</category>
      <category>Baekjoon</category>
      <category>kotlin</category>
      <category>백준</category>
      <category>코틀린</category>
      <category>크냐?</category>
      <author>나아가는중</author>
      <guid isPermaLink="true">https://dlee0129.tistory.com/279</guid>
      <comments>https://dlee0129.tistory.com/279#entry279comment</comments>
      <pubDate>Mon, 27 Feb 2023 23:26:32 +0900</pubDate>
    </item>
    <item>
      <title>[백준 Baekjoon] 2530번 인공지능 시계 - Kotlin</title>
      <link>https://dlee0129.tistory.com/278</link>
      <description>&lt;div&gt;
&lt;div&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;문제&lt;/h2&gt;
&lt;/div&gt;
&lt;div id=&quot;problem_description&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;KOI 전자에서는 건강에 좋고 맛있는 훈제오리구이 요리를 간편하게 만드는 인공지능 오븐을 개발하려고 한다. 인공지능 오븐을 사용하는 방법은 적당한 양의 오리 훈제 재료를 인공지능 오븐에 넣으면 된다. 그러면 인공지능 오븐은 오븐구이가 끝나는 시간을 초 단위로 자동적으로 계산한다.&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;또한, KOI 전자의 인공지능 오븐 앞면에는 사용자에게 훈제오리구이 요리가 끝나는 시각을 알려 주는 디지털 시계가 있다. &amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;훈제오리구이를 시작하는 시각과 오븐구이를 하는 데 필요한 시간이 초 단위로 주어졌을 때, 오븐구이가 끝나는 시각을 계산하는 프로그램을 작성하시오.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;입력&lt;/h2&gt;
&lt;/div&gt;
&lt;div id=&quot;problem_input&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;첫째 줄에는 현재 시각이 나온다. 현재 시각은 시 A (0 &amp;le; A &amp;le; 23), 분 B (0 &amp;le; B &amp;le; 59)와 초 C (0 &amp;le; C &amp;le; 59)가 정수로 빈칸을 사이에 두고 순서대로 주어진다. 두 번째 줄에는 요리하는 데 필요한 시간 D (0 &amp;le; D &amp;le; 500,000)가 초 단위로 주어진다.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;출력&lt;/h2&gt;
&lt;/div&gt;
&lt;div id=&quot;problem_output&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;첫째 줄에 종료되는 시각의 시, 분, 초을 공백을 사이에 두고 출력한다. (단, 시는 0부터 23까지의 정수이며, 분, 초는 0부터 59까지의 정수이다. 디지털 시계는 23시 59분 59초에서 1초가 지나면 0시 0분 0초가 된다.)&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;예제 입력 1&lt;/p&gt;
&lt;/div&gt;
&lt;pre id=&quot;sample-input-1&quot; class=&quot;basic&quot;&gt;&lt;code&gt;14 30 0
200
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;예제 출력 1&lt;/p&gt;
&lt;/div&gt;
&lt;pre id=&quot;sample-output-1&quot; class=&quot;basic&quot;&gt;&lt;code&gt;14 33 20
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;예제 입력 2&lt;/p&gt;
&lt;/div&gt;
&lt;pre id=&quot;sample-input-2&quot; class=&quot;basic&quot;&gt;&lt;code&gt;17 40 45
6015
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;예제 출력 2&lt;/p&gt;
&lt;/div&gt;
&lt;pre id=&quot;sample-output-2&quot; class=&quot;basic&quot;&gt;&lt;code&gt;19 21 0
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;예제 입력 3&lt;/p&gt;
&lt;/div&gt;
&lt;pre id=&quot;sample-input-3&quot; class=&quot;basic&quot;&gt;&lt;code&gt;23 48 59
2515
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;예제 출력 3&lt;/p&gt;
&lt;/div&gt;
&lt;pre id=&quot;sample-output-3&quot; class=&quot;basic&quot;&gt;&lt;code&gt;0 30 54&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;문제풀이&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1. 요리하는데 필요한 시간 D를 초에 더해준다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2. 초, 분, 시 순서로 덧셈을 수행해준다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;소스코드&lt;/h3&gt;
&lt;pre id=&quot;code_1677507353976&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import java.util.StringTokenizer

fun main() {
    val st = StringTokenizer(readln())
    var a = st.nextToken().toInt()
    var b = st.nextToken().toInt()
    var c = st.nextToken().toInt()
    val d = readln().toInt()

    c += d

    b += c / 60
    c %= 60

    a += b / 60
    b %= 60

    a %= 24

    println(&quot;$a $b $c&quot;)
}&lt;/code&gt;&lt;/pre&gt;</description>
      <category>알고리즘(Algorithm)/백준(Baekjoon)</category>
      <category>2530</category>
      <category>Baekjoon</category>
      <category>kotlin</category>
      <category>백준</category>
      <category>인공지능 시계</category>
      <category>코틀린</category>
      <author>나아가는중</author>
      <guid isPermaLink="true">https://dlee0129.tistory.com/278</guid>
      <comments>https://dlee0129.tistory.com/278#entry278comment</comments>
      <pubDate>Mon, 27 Feb 2023 23:19:23 +0900</pubDate>
    </item>
    <item>
      <title>[백준 Baekjoon] 2587번 대표값2 - Kotlin</title>
      <link>https://dlee0129.tistory.com/277</link>
      <description>&lt;div&gt;
&lt;div&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;문제&lt;/h2&gt;
&lt;/div&gt;
&lt;div id=&quot;problem_description&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;어떤 수들이 있을 때, 그 수들을 대표하는 값으로 가장 흔하게 쓰이는 것은 평균이다. 평균은 주어진 모든 수의 합을 수의 개수로 나눈 것이다. 예를 들어 10, 40, 30, 60, 30의 평균은 (10 + 40 + 30 + 60 + 30) / 5 = 170 / 5 = 34가 된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;평균 이외의 또 다른 대표값으로 중앙값이라는 것이 있다. 중앙값은 주어진 수를 크기 순서대로 늘어 놓았을 때 가장 중앙에 놓인 값이다. 예를 들어 10, 40, 30, 60, 30의 경우, 크기 순서대로 늘어 놓으면&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;10 30 30 40 60&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 되고 따라서 중앙값은 30이 된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다섯 개의 자연수가 주어질 때 이들의 평균과 중앙값을 구하는 프로그램을 작성하시오.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;입력&lt;/h2&gt;
&lt;/div&gt;
&lt;div id=&quot;problem_input&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;첫째 줄부터 다섯 번째 줄까지 한 줄에 하나씩 자연수가 주어진다. 주어지는 자연수는 100 보다 작은 10의 배수이다.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;출력&lt;/h2&gt;
&lt;/div&gt;
&lt;div id=&quot;problem_output&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;첫째 줄에는 평균을 출력하고, 둘째 줄에는 중앙값을 출력한다. 평균과 중앙값은 모두 자연수이다.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;예제 입력 1&lt;/h4&gt;
&lt;/div&gt;
&lt;pre id=&quot;sample-input-1&quot; class=&quot;angelscript&quot;&gt;&lt;code&gt;10
40
30
60
30
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;예제 출력 1&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/h4&gt;
&lt;/div&gt;
&lt;pre id=&quot;sample-output-1&quot; class=&quot;angelscript&quot;&gt;&lt;code&gt;34
30&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;문제풀이&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1. 배열을 생성해서 다섯 번째 수 까지 입력을 받아 저장합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2. 중앙값을 찾기 위해 입력 값들을 저장한 배열을 정렬 해줍니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;3. 첫째 줄에는 입력 값들을 전부 더한 다음 5로 나누어 평균을 구하여 출력합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;4. 둘째 줄에는 정렬된 배열에서 2번째 값 = 중앙값을 찾아 출력합니다.&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;/h3&gt;
&lt;pre id=&quot;code_1677506601982&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;fun main() {
    val arr = IntArray(5)

    for (i in 0 until 5) {
        arr[i] = readln().toInt()
    }

    val sortedArray = arr.sorted()

    println(sortedArray.sum() / 5)
    println(sortedArray[2])
}&lt;/code&gt;&lt;/pre&gt;</description>
      <category>알고리즘(Algorithm)/백준(Baekjoon)</category>
      <category>2587</category>
      <category>Baekjoon</category>
      <category>kotlin</category>
      <category>대표값2</category>
      <category>백준</category>
      <category>코틀린</category>
      <author>나아가는중</author>
      <guid isPermaLink="true">https://dlee0129.tistory.com/277</guid>
      <comments>https://dlee0129.tistory.com/277#entry277comment</comments>
      <pubDate>Mon, 27 Feb 2023 23:07:43 +0900</pubDate>
    </item>
    <item>
      <title>[백준 Baekjoon] 11382번 꼬마 정민 - Kotlin</title>
      <link>https://dlee0129.tistory.com/276</link>
      <description>&lt;div&gt;
&lt;div&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;문제&lt;/h2&gt;
&lt;/div&gt;
&lt;div id=&quot;problem_description&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;꼬마 정민이는 이제 A + B 정도는 쉽게 계산할 수 있다. 이제 A + B + C를 계산할 차례이다!&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;입력&lt;/h2&gt;
&lt;/div&gt;
&lt;div id=&quot;problem_input&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;첫 번째 줄에 A, B, C (1 &amp;le; A, B, C &amp;le; 10^12)이 공백을 사이에 두고 주어진다.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;출력&lt;/h2&gt;
&lt;/div&gt;
&lt;div id=&quot;problem_output&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;A+B+C의 값을 출력한다.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;예제 입력&amp;nbsp;&lt;/h4&gt;
&lt;/div&gt;
&lt;pre id=&quot;sample-input-1&quot; class=&quot;basic&quot;&gt;&lt;code&gt;77 77 7777
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;예제 출력&lt;/h4&gt;
&lt;/div&gt;
&lt;pre id=&quot;sample-output-1&quot; class=&quot;angelscript&quot;&gt;&lt;code&gt;7931&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;문제풀이&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;주어진 입력의 범위가 10^12 으로, Int 값의 범위를 초과합니다. 따라서 입력값을 &lt;span style=&quot;background-color: #dddddd;&quot;&gt;&lt;b&gt;Int가 아닌 Long으로&lt;/b&gt;&lt;/span&gt; 형 변환해서 문제를 풀어야 합니다.&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;/h3&gt;
&lt;pre id=&quot;code_1677506025901&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import java.util.StringTokenizer

fun main() {
    val st = StringTokenizer(readln())
    val a = st.nextToken().toLong()
    val b = st.nextToken().toLong()
    val c = st.nextToken().toLong()

    println(a + b + c)
}&lt;/code&gt;&lt;/pre&gt;</description>
      <category>알고리즘(Algorithm)/백준(Baekjoon)</category>
      <category>11382</category>
      <category>Baekjoon</category>
      <category>kotlin</category>
      <category>꼬마 정민</category>
      <category>백준</category>
      <category>코틀린</category>
      <author>나아가는중</author>
      <guid isPermaLink="true">https://dlee0129.tistory.com/276</guid>
      <comments>https://dlee0129.tistory.com/276#entry276comment</comments>
      <pubDate>Mon, 27 Feb 2023 22:55:47 +0900</pubDate>
    </item>
    <item>
      <title>코틀린(Kotlin) 진법 변환 .toInt()</title>
      <link>https://dlee0129.tistory.com/275</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;문자열 -&amp;gt; N진법 변환&lt;/h2&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;코틀린에서 &lt;b&gt;문자열을 N진법으로 변환&lt;/b&gt;하는 방법은&lt;b&gt; &lt;span style=&quot;background-color: #dddddd;&quot;&gt;.toInt()&lt;/span&gt; 함수를 사용&lt;/b&gt;하는 방법이 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;코틀린 라이브러리를 확인해 보면 &lt;b&gt;코틀린 1.1 버전부터 사용이 가능&lt;/b&gt;하며, &lt;b&gt;내부적으로는 자바의 .parseInt() 함수를 사용&lt;/b&gt;하고 있습니다.&lt;/p&gt;
&lt;pre id=&quot;code_1677504701341&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;/**
 * Parses the string as an [Int] number and returns the result.
 * @throws NumberFormatException if the string is not a valid representation of a number.
 * @throws IllegalArgumentException when [radix] is not a valid radix for string to number conversion.
 */
@SinceKotlin(&quot;1.1&quot;)
@kotlin.internal.InlineOnly
public actual inline fun String.toInt(radix: Int): Int = java.lang.Integer.parseInt(this, checkRadix(radix))&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;b&gt;parseInt의 파라미터&lt;/b&gt;로&lt;span style=&quot;background-color: #dddddd;&quot;&gt;&lt;b&gt; checkRadix()&lt;/b&gt;&lt;/span&gt; 함수가 존재하는데, 이 함수는 파라미터로 넘어온 &lt;b&gt;radix가 MIN_RADIX(2) 와 MAX_RADIX(36)의 사이인지 검사&lt;/b&gt;해서 사이 값으라면 &lt;b&gt;radix를 반환&lt;/b&gt;하는 함수입니다.&lt;/p&gt;
&lt;pre id=&quot;code_1677505167837&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;@PublishedApi
internal actual fun checkRadix(radix: Int): Int {
    if (radix !in Character.MIN_RADIX..Character.MAX_RADIX) {
        throw IllegalArgumentException(&quot;radix $radix was not in valid range ${Character.MIN_RADIX..Character.MAX_RADIX}&quot;)
    }
    return radix
}&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;.parseInt() 함수의 내부에서는 다음과 같은 로직을 통해 radix 로 지정한 N진법으로 변환을 해주게 됩니다.&lt;/p&gt;
&lt;pre id=&quot;code_1677505240372&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;    public static int parseInt(String s, int radix)
                throws NumberFormatException
    {
        ...
        boolean negative = false;
        int i = 0, len = s.length();
        int limit = -Integer.MAX_VALUE;

        if (len &amp;gt; 0) {
            ...
            int multmin = limit / radix;
            int result = 0;
            while (i &amp;lt; len) {
                int digit = Character.digit(s.charAt(i++), radix);
                if (digit &amp;lt; 0 || result &amp;lt; multmin) {
                    throw NumberFormatException.forInputString(s);
                }
                result *= radix;
                if (result &amp;lt; limit + digit) {
                    throw NumberFormatException.forInputString(s);
                }
                result -= digit;
            }
            return negative ? result : -result;
        } else {
            throw NumberFormatException.forInputString(s);
        }
    }&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>프로그래밍 언어/코틀린(Kotline)</category>
      <category>kotlin</category>
      <category>n진법</category>
      <category>toInt()</category>
      <category>진법 변환</category>
      <category>코틀린</category>
      <author>나아가는중</author>
      <guid isPermaLink="true">https://dlee0129.tistory.com/275</guid>
      <comments>https://dlee0129.tistory.com/275#entry275comment</comments>
      <pubDate>Mon, 27 Feb 2023 22:44:31 +0900</pubDate>
    </item>
    <item>
      <title>[백준 Baekjoon] 1550번 16진수 - Kotlin</title>
      <link>https://dlee0129.tistory.com/274</link>
      <description>&lt;div&gt;
&lt;div&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;문제&lt;/h2&gt;
&lt;/div&gt;
&lt;div id=&quot;problem_description&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;16진수 수를 입력받아서 10진수로 출력하는 프로그램을 작성하시오.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;입력&lt;/h2&gt;
&lt;/div&gt;
&lt;div id=&quot;problem_input&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;첫째 줄에 16진수 수가 주어진다. 이 수의 최대 길이는 6글자이다. 16진수 수는 0~9와 A~F로 이루어져 있고, A~F는 10~15를 뜻한다. 또, 이 수는 음이 아닌 정수이다.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;출력&lt;/h2&gt;
&lt;/div&gt;
&lt;div id=&quot;problem_output&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;첫째 줄에 입력으로 주어진 16진수 수를 10진수로 변환해 출력한다.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;예제 입력 1&lt;/h4&gt;
&lt;/div&gt;
&lt;pre id=&quot;sample-input-1&quot; class=&quot;dns&quot;&gt;&lt;code&gt;A
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;예제 출력 1&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/h4&gt;
&lt;/div&gt;
&lt;pre id=&quot;sample-output-1&quot; class=&quot;angelscript&quot;&gt;&lt;code&gt;10&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;문제풀이&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;주어진 문자열을 원하는 진법으로 변환해주는 .toInt() 함수를 사용하여 16진수로 변환하여 출력해줍니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;코틀린 진법 변환은 아래 포스트에 자세히 나와 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://dlee0129.tistory.com/275&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://dlee0129.tistory.com/275&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1677505602071&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;코틀린(Kotlin) 진법 변환 .toInt()&quot; data-og-description=&quot;문자열 -&amp;gt; N진법 변환 코틀린에서 문자열을 N진법으로 변환하는 방법은 .toInt() 함수를 사용하는 방법이 있습니다. 코틀린 라이브러리를 확인해 보면 코틀린 1.1 버전부터 사용이 가능하며, 내부적&quot; data-og-host=&quot;dlee0129.tistory.com&quot; data-og-source-url=&quot;https://dlee0129.tistory.com/275&quot; data-og-url=&quot;https://dlee0129.tistory.com/275&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/CDQL0/hyRKVGCDjI/xethXudjZ9pWXZKaOrQKd1/img.png?width=800&amp;amp;height=800&amp;amp;face=0_0_800_800,https://scrap.kakaocdn.net/dn/PTlOo/hyRKMJFWif/JA2atTqwNKFlSKgmc9RwkK/img.png?width=800&amp;amp;height=800&amp;amp;face=0_0_800_800,https://scrap.kakaocdn.net/dn/cfUPb0/hyRKN9Glvi/cyGDXIfg51A7D3RGhL7axK/img.png?width=400&amp;amp;height=400&amp;amp;face=0_0_400_400&quot;&gt;&lt;a href=&quot;https://dlee0129.tistory.com/275&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://dlee0129.tistory.com/275&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/CDQL0/hyRKVGCDjI/xethXudjZ9pWXZKaOrQKd1/img.png?width=800&amp;amp;height=800&amp;amp;face=0_0_800_800,https://scrap.kakaocdn.net/dn/PTlOo/hyRKMJFWif/JA2atTqwNKFlSKgmc9RwkK/img.png?width=800&amp;amp;height=800&amp;amp;face=0_0_800_800,https://scrap.kakaocdn.net/dn/cfUPb0/hyRKN9Glvi/cyGDXIfg51A7D3RGhL7axK/img.png?width=400&amp;amp;height=400&amp;amp;face=0_0_400_400');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;코틀린(Kotlin) 진법 변환 .toInt()&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;문자열 -&amp;gt; N진법 변환 코틀린에서 문자열을 N진법으로 변환하는 방법은 .toInt() 함수를 사용하는 방법이 있습니다. 코틀린 라이브러리를 확인해 보면 코틀린 1.1 버전부터 사용이 가능하며, 내부적&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;dlee0129.tistory.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;소스코드&lt;/h2&gt;
&lt;pre id=&quot;code_1677324477359&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;fun main() {
    println(readln().toInt(16))
}&lt;/code&gt;&lt;/pre&gt;</description>
      <category>알고리즘(Algorithm)/백준(Baekjoon)</category>
      <category>1550</category>
      <category>16진수</category>
      <category>Baekjoon</category>
      <category>kotlin</category>
      <category>백준</category>
      <category>코틀린</category>
      <author>나아가는중</author>
      <guid isPermaLink="true">https://dlee0129.tistory.com/274</guid>
      <comments>https://dlee0129.tistory.com/274#entry274comment</comments>
      <pubDate>Sat, 25 Feb 2023 20:28:20 +0900</pubDate>
    </item>
    <item>
      <title>[백준 Baekjoon] 2522번 별 찍기 - 12 - Kotlin</title>
      <link>https://dlee0129.tistory.com/273</link>
      <description>&lt;pre id=&quot;code_1677323779319&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;fun main() {
    val n = readln().toInt()

    val sb = StringBuilder()
    for (idx in 1 until 2 * n) {
        val starCnt = if (idx &amp;lt;= n) idx else 2 * n - idx
        val spaceCnt = n - starCnt

        for (space in 1..spaceCnt) {
            sb.append(&quot; &quot;)
        }
        for (star in 1..starCnt) {
            sb.append(&quot;*&quot;)
        }
        sb.append(&quot;\n&quot;)
    }

    println(sb)
}&lt;/code&gt;&lt;/pre&gt;</description>
      <category>알고리즘(Algorithm)/백준(Baekjoon)</category>
      <category>2522</category>
      <category>Baekjoon</category>
      <category>kotlin</category>
      <category>백준</category>
      <category>별 찍기</category>
      <category>코틀린</category>
      <author>나아가는중</author>
      <guid isPermaLink="true">https://dlee0129.tistory.com/273</guid>
      <comments>https://dlee0129.tistory.com/273#entry273comment</comments>
      <pubDate>Sat, 25 Feb 2023 20:16:47 +0900</pubDate>
    </item>
    <item>
      <title>[백준 Baekjoon] 2738번 행렬 덧셈 - Kotlin</title>
      <link>https://dlee0129.tistory.com/272</link>
      <description>&lt;pre id=&quot;code_1677322935068&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import java.util.StringTokenizer

fun main() {
    var st = StringTokenizer(readln())
    val n = st.nextToken().toInt()
    val m = st.nextToken().toInt()

    val arr = Array(n) { IntArray(m) }
    for (i in 0 until n) {
        st = StringTokenizer(readln())
        for (j in 0 until m) {
            arr[i][j] = st.nextToken().toInt()
        }
    }

    for (i in 0 until n) {
        st = StringTokenizer(readln())
        for (j in 0 until m) {
            arr[i][j] += st.nextToken().toInt()
        }
    }

    val sb = StringBuilder()
    for (i in 0 until n) {
        for (j in 0 until m) {
            sb.append(arr[i][j]).append(&quot; &quot;)
        }
        sb.append(&quot;\n&quot;)
    }

    println(sb)
}&lt;/code&gt;&lt;/pre&gt;</description>
      <category>알고리즘(Algorithm)/백준(Baekjoon)</category>
      <category>2738</category>
      <category>Baekjoon</category>
      <category>Koltin</category>
      <category>백준</category>
      <category>코틀린</category>
      <category>행렬 덧셈</category>
      <author>나아가는중</author>
      <guid isPermaLink="true">https://dlee0129.tistory.com/272</guid>
      <comments>https://dlee0129.tistory.com/272#entry272comment</comments>
      <pubDate>Sat, 25 Feb 2023 20:02:44 +0900</pubDate>
    </item>
    <item>
      <title>Markdown(마크다운) - 단락(Paragraph)</title>
      <link>https://dlee0129.tistory.com/271</link>
      <description>&lt;h1&gt;Paragraph&lt;/h1&gt;
&lt;hr&gt;
&lt;p&gt;단락(Paragraph)을 만들려면 빈 줄을 사용하여 하나 이상의 텍스트 줄을 구분합니다.&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Markdown&lt;/th&gt;
&lt;th&gt;Rendered Output&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;&lt;tr&gt;
&lt;td&gt;I really like using Markdown.&lt;br/&gt;&lt;br/&gt;I think I&amp;#39;ll use it to format all of my documents from now on.&lt;/td&gt;
&lt;td&gt;&lt;p&gt;I really like using Markdown.&lt;/p&gt; &lt;p&gt;I think I&amp;#39;ll use it to format all of my documents from now on.&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;br&gt;  
&lt;br&gt;  

&lt;h1&gt;Notice&lt;/h1&gt;
&lt;hr&gt;
&lt;p&gt;단락(Paragraph)이 목록에 아니라면 공백이나 탭이 있는 단락을 들여쓰지 마세요.&lt;/p&gt;
&lt;p&gt;!-- 단락이나 들여쓰기 해야 하는 경우 들여쓰기(탭) 방법에 대한 섹션을 참조하세요 --&lt;/p&gt;  

&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Do this&lt;/th&gt;
&lt;th&gt;Don&amp;#39;t do this&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;&lt;tr&gt;
&lt;td&gt;Don&amp;#39;t put tabs or spaces in front of your paragraphs.&lt;br/&gt;&lt;br/&gt;Keep lines left-aligned like this.&lt;/td&gt;
&lt;td&gt;&amp;nbsp;This can result in unexpected formatting problems. &lt;br/&gt;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Don&amp;#39;t add tabs or spaces in front of paragraphs.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;br&gt;
&lt;br&gt;
&lt;br&gt;

&lt;h3&gt;Ref&lt;/h3&gt;
&lt;hr&gt;
&lt;ul&gt;
&lt;li&gt;Markdown Guid - Basic Syntax (&lt;a href=&quot;https://www.markdownguide.org/basic-syntax/#headings&quot;&gt;https://www.markdownguide.org/basic-syntax/#headings&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;</description>
      <category>Markdown</category>
      <category>Paragraph</category>
      <category>단락</category>
      <category>마크다운</category>
      <author>나아가는중</author>
      <guid isPermaLink="true">https://dlee0129.tistory.com/271</guid>
      <comments>https://dlee0129.tistory.com/271#entry271comment</comments>
      <pubDate>Sun, 7 Aug 2022 15:36:24 +0900</pubDate>
    </item>
    <item>
      <title>Markdown(마크다운) - 제목(Header 해더)</title>
      <link>https://dlee0129.tistory.com/270</link>
      <description>&lt;h1&gt;Headings&lt;/h1&gt;
&lt;hr&gt;
&lt;p&gt;제목(Header)을 만들려면 단어나 구절(phrase) 앞에 기호(#)를 추가하면 됩니다.&lt;br&gt;사용하는 숫자 기호의 수는 제목 수준(level)과 일치해야 합니다.&lt;br&gt;&lt;br&gt;&lt;br&gt;예를 들어, 제목 수준 3(h3)을 만들려면 세 개의 기호(###)을 사용합니다.&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Markdown&lt;/th&gt;
&lt;th&gt;Redndered Output&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;&lt;tr&gt;
&lt;td&gt;# Heading levvel 1&lt;/td&gt;
&lt;td&gt;&lt;h1&gt; Heading level 1 &lt;/h1&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;## Heading level 2&lt;/td&gt;
&lt;td&gt;&lt;h2&gt; Heading level 2 &lt;/h2&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;### Heading level 3&lt;/td&gt;
&lt;td&gt;&lt;h3&gt; Heading level 3 &lt;/h3&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;#### Heading level 4&lt;/td&gt;
&lt;td&gt;&lt;h4&gt; Heading level 4 &lt;/h4&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;##### Heading level 5&lt;/td&gt;
&lt;td&gt;&lt;h5&gt; Heading level 5 &lt;/h5&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;###### Heading level 6&lt;/td&gt;
&lt;td&gt;&lt;h6&gt; Heading level 6 &lt;/h6&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;br&gt;  
&lt;br&gt;

&lt;h1&gt;Alternate Syntax&lt;/h1&gt;
&lt;hr&gt;
&lt;p&gt;제목(Header)를 &amp;#39;#&amp;#39;기호 이외에 대체하는 방법입니다.&lt;br&gt;아래 줄에 제목 수준(level) 1의 경우 &amp;#39;==&amp;#39; 문자를 추가하고,&lt;br&gt;제목 수준 2의 경우 &amp;#39;--&amp;#39; 문자를 추가합니다.  &lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Markdown&lt;/th&gt;
&lt;th&gt;Rendered Output&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;&lt;tr&gt;
&lt;td&gt;Heading level 1&lt;br/&gt;============&lt;/td&gt;
&lt;td&gt;&lt;h1&gt; Heading level 1 &lt;/h1&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Heading level 2&lt;br/&gt;---------------------&lt;/td&gt;
&lt;td&gt;&lt;h2&gt; Heading level 2 &lt;/h2&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;br&gt;  
&lt;br&gt;

&lt;h1&gt;Notice&lt;/h1&gt;
&lt;hr&gt;
&lt;p&gt;마크다운은 기호(#)와 제목 사이의 공백을 처리하는 방법에 동의하지 않습니다.&lt;br&gt;호환성을 위해 항상 숫자 기호와 제목 이름 사이에 공백을 넣으십시오.&lt;br&gt;또한 호환성을 위해 제목 앞뒤에 빈 줄을 넣어야 합니다.&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Do this&lt;/th&gt;
&lt;th&gt;Don&amp;#39;t do this&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;&lt;tr&gt;
&lt;td&gt;# Here&amp;#39;s a Heading&lt;/td&gt;
&lt;td&gt;#Here&amp;#39;s a Heading&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Try to put a blank line before...&lt;br/&gt;&lt;br/&gt;# Heading&lt;br/&gt;&lt;br/&gt;... and after a heading.&lt;/td&gt;
&lt;td&gt;Without blank lines, this might not look right.&lt;br/&gt;# Heading&lt;br/&gt;Don&amp;#39;t do this!&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;br&gt;  
&lt;br&gt;  
&lt;br&gt;  
&lt;br&gt;  

&lt;h3&gt;Ref.&lt;/h3&gt;
&lt;hr&gt;
&lt;ul&gt;
&lt;li&gt;Markdown Guid - Basic Syntax (&lt;a href=&quot;https://www.markdownguide.org/basic-syntax/#headings&quot;&gt;https://www.markdownguide.org/basic-syntax/#headings&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;</description>
      <category>Markdown</category>
      <category>Header</category>
      <category>Headings</category>
      <category>Markdown</category>
      <category>마크다운</category>
      <category>제목</category>
      <author>나아가는중</author>
      <guid isPermaLink="true">https://dlee0129.tistory.com/270</guid>
      <comments>https://dlee0129.tistory.com/270#entry270comment</comments>
      <pubDate>Sat, 6 Aug 2022 12:05:12 +0900</pubDate>
    </item>
    <item>
      <title>Tistory 블로그 글 작성 Open API (JAVA)</title>
      <link>https://dlee0129.tistory.com/269</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;티스토리의 Open API를 사용하여 블로그 글을 작성하는 방법 1탄입니다.&lt;br /&gt;여기서는 자바 언어를 사용하여 구현합니다.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Open API를 사용하기에 앞서 몇가지 준비사항이 필요합니다.&lt;/p&gt;
&lt;ol style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Open API 앱 등록&lt;/li&gt;
&lt;li&gt;권한 허가하기&lt;/li&gt;
&lt;li&gt;Access Token 획득하기&lt;/li&gt;
&lt;li&gt;Category ID 카테고리 아이디&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;Open API 앱 등록&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아래 링크로 접속하여 앱 등록을 진행해야 합니다.&lt;br /&gt;&lt;a href=&quot;https://www.tistory.com/guide/api/manage/register&quot;&gt;https://www.tistory.com/guide/api/manage/register&lt;/a&gt;&lt;br /&gt;앱 등록 화면에서 아래 항목들을 설정하고 등록해주시면 됩니다.&lt;br /&gt;서비스 명: 블로그 이름&lt;br /&gt;서비스 URL: 블로그 주소&lt;br /&gt;서비스 형태: 웹서비스&lt;br /&gt;서비스 권한: 읽기, 쓰기&lt;br /&gt;CallBack: 블로그 주소 (서비스 URL과 동일)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;앱 등록을 완료하면 App ID와 Secret Key를 보여줍니다.&lt;br /&gt;이 App ID와 Secret Key를 잘 저장해두셔야 합니다.&lt;/b&gt;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;권한 허가하기&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;인터넷 주소창에 아래 URL을 입력하여 들어가서 하가를 해주어야 합니다.&lt;br /&gt;&lt;a href=&quot;https://www.tistory.com/oauth/authorize?client_id=%7BAppID)&amp;amp;redirect_uri=%7B%EC%84%9C%EB%B9%84%EC%8A%A4&quot;&gt;https://www.tistory.com/oauth/authorize?client_id={AppID)&amp;amp;redirect_uri={서비스&lt;/a&gt; URL}&amp;amp;response_type=code&lt;br /&gt;여기에서 사용되는 AppID는 앱 등록시 획득한 App ID이며 서비스 URL은 블로그 주소입니다.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;직접 입력하는게 어렵거나 귀찮으시면 아래 함수를 사용하여 URL을 구하면 됩니다.&lt;/p&gt;
&lt;pre class=&quot;arduino&quot;&gt;&lt;code&gt;    public static String getAuthenticationUrl(String clientId, String redirectUri) {
        return &quot;https://www.tistory.com/oauth/authorize?client_id=&quot;
                + clientId
                + &quot;&amp;amp;redirect_uri=&quot;
                + redirectUri
                + &quot;&amp;amp;response_type=code&quot;;
    }&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;허가하기 이후 이동한 화면의 주소에서 code={code}&amp;amp;state=spomeValue의 code 값을 저장해두어야 합니다.&lt;/b&gt;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;Access Token 획득하기&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다음으로 Open API에서 사용할 Access Token을 획득해야 합니다.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;아래 함수를 사용해서 tistory에 요청하여 access token을 획득합니다.&lt;br /&gt;&lt;b&gt;함수를 호출한 뒤 리턴 값의 access token을 저장해둡니다.&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;clientId: App ID&lt;br /&gt;clientSecret: Secret Key&lt;br /&gt;redirectUri: 블로그 주소&lt;/p&gt;
&lt;pre class=&quot;reasonml&quot;&gt;&lt;code&gt;    public static String getAccessToken(String clientId, String clientSecret, String redirectUri, String code) {
        try {
            String url = &quot;https://www.tistory.com/oauth/access_token?&quot;
                    + &quot;client_id=&quot; + clientId + &quot;&amp;amp;&quot;
                    + &quot;client_secret=&quot; + clientSecret + &quot;&amp;amp;&quot;
                    + &quot;redirect_uri=&quot; + redirectUri + &quot;&amp;amp;&quot;
                    + &quot;code=&quot; + code + &quot;&amp;amp;&quot;
                    + &quot;grant_type=authorization_code&quot;;

            URL obj = new URL(url);

            HttpURLConnection connection = (HttpURLConnection) obj.openConnection();
            connection.setRequestMethod(&quot;GET&quot;);

            BufferedReader br = new BufferedReader(new InputStreamReader(connection.getInputStream(), &quot;UTF-8&quot;));

            return br.readLine();
        } catch (IOException e) {
            e.printStackTrace();

            return &quot;Error&quot;;
        }
    }&lt;/code&gt;&lt;/pre&gt;</description>
      <category>IT 지식/기타</category>
      <author>나아가는중</author>
      <guid isPermaLink="true">https://dlee0129.tistory.com/269</guid>
      <comments>https://dlee0129.tistory.com/269#entry269comment</comments>
      <pubDate>Thu, 28 Jul 2022 23:05:36 +0900</pubDate>
    </item>
    <item>
      <title>[SpringBoot] sourceCompatibility &amp;amp; targetCompatibility</title>
      <link>https://dlee0129.tistory.com/265</link>
      <description>&lt;h3 data-ke-size=&quot;size23&quot;&gt;들어가기 전에&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Spring boot 프로젝트&lt;/b&gt;를 생성하면 &lt;b&gt;build.gradle&lt;/b&gt; 파일에 다음의 코드들이 추가되어있는것을 볼 수 있습니다.&lt;/p&gt;
&lt;pre class=&quot;ini&quot;&gt;&lt;code&gt;group = 'com.example'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = '11'&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;위의 코드 중 &lt;b&gt;'sourceCompatibility'&lt;/b&gt;는 무엇인지에 대한 글입니다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&amp;nbsp;&lt;/h3&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;sourceCompatibility란?&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;sourceCompatibility란 Java 버전과 일치하는 값으로 &lt;b&gt;컴파일에서 사용하는 JDK 버전&lt;/b&gt;입니다.&lt;br /&gt;&lt;b&gt;소스 코드에서 사용할 수 있는 Java 버전을 해당 버전 값으로 제한&lt;/b&gt; 합니다.&lt;br /&gt;컴파일 단계에서 에러를 감지하여, 실수로 더 높은 버전의 Java 기능을 사용하는 것을 방지합니다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&amp;nbsp;&lt;/h3&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;targetCompatibility&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;sourceCompatibility와 유사한 targetCompatibility 기능이 있습니다.&lt;br /&gt;&lt;br /&gt;targetCompatibility는 생성된 &lt;b&gt;클래스 파일의 버전을 제어&lt;/b&gt;합니다.&lt;br /&gt;&lt;b&gt;프로그램에서 실행할 수 있는 가장 낮은 Java 버전&lt;/b&gt;을 의미합니다.&lt;br /&gt;여기에서 정한 버전 이상의 Java 버전을 사용해야 하며, 마찬가지로 컴파일 단계에서 에러를 감지합니다.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Spring boot 프로젝트 생성 시에 sourceCompatibility는 자동으로 추가가 되지만, targetCompatibility는 추가가 되지 않습니다. 필요한 경우 직접 추가하여 사용하시면 됩니다.&lt;/p&gt;
&lt;pre class=&quot;ini&quot;&gt;&lt;code&gt;group = 'com.example'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = '11'
targetCompatibility = '11'&lt;/code&gt;&lt;/pre&gt;</description>
      <category>웹, 앱 개발/Spring</category>
      <category>build.gradle</category>
      <category>gradle</category>
      <category>sourceCompatibility</category>
      <category>springboot</category>
      <category>targetCompatibility</category>
      <author>나아가는중</author>
      <guid isPermaLink="true">https://dlee0129.tistory.com/265</guid>
      <comments>https://dlee0129.tistory.com/265#entry265comment</comments>
      <pubDate>Tue, 19 Jul 2022 17:32:17 +0900</pubDate>
    </item>
    <item>
      <title>[LeetCode] 13. Roman to Integer (JAVA)</title>
      <link>https://dlee0129.tistory.com/264</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;문제&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Roman numerals are represented by seven different symbols: I, V, X, L, C, D and M.&lt;br /&gt;로마 숫자는 I, V, X, L, C, D 그리고 M의 7가지 기호로 표시됩니다.&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;
&lt;table data-ke-align=&quot;alignLeft&quot;&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th align=&quot;left&quot;&gt;Symbol&lt;/th&gt;
&lt;th align=&quot;left&quot;&gt;Value&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td align=&quot;left&quot;&gt;I&lt;/td&gt;
&lt;td align=&quot;left&quot;&gt;1&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td align=&quot;left&quot;&gt;V&lt;/td&gt;
&lt;td align=&quot;left&quot;&gt;5&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td align=&quot;left&quot;&gt;X&lt;/td&gt;
&lt;td align=&quot;left&quot;&gt;10&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td align=&quot;left&quot;&gt;L&lt;/td&gt;
&lt;td align=&quot;left&quot;&gt;50&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td align=&quot;left&quot;&gt;C&lt;/td&gt;
&lt;td align=&quot;left&quot;&gt;100&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td align=&quot;left&quot;&gt;D&lt;/td&gt;
&lt;td align=&quot;left&quot;&gt;500&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td align=&quot;left&quot;&gt;M&lt;/td&gt;
&lt;td align=&quot;left&quot;&gt;1000&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;For example, 2 is written as II in Roman numeral, just two one's added together.&lt;br /&gt;예를 들어, 2는 로마 숫자로 II로 표기되며, 일을 두번 더하면 됩니다.&lt;br /&gt;&lt;br /&gt;12 is written as XII, which is simply X + II.&lt;br /&gt;12는 XII로 표기되며, 단순히 X + II입니다.&lt;br /&gt;&lt;br /&gt;The number 27 is written as XXVII, which is XX + V + II.&lt;br /&gt;숫자 27은 XXVII로 표기되며, XX + V + II입니다.&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Roman numerals are usually written largest to smallest from left to right.&lt;br /&gt;로마 숫자는 일반적으로 왼쪽에서 오른쪽으로 큰 것에서 작은 것 순으로 표기합니다.&lt;br /&gt;&lt;br /&gt;However, the numeral for four is not IIII.&lt;br /&gt;그러나, 4에 대한 숫자는 IIII가 아닙니다.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Instead, the number four is written as IV.&lt;br /&gt;대신에, 숫자 4는 IV로 표기됩니다.&lt;br /&gt;&lt;br /&gt;Because the one is before the five we subtract it making four.&lt;br /&gt;1은 5보다 앞에 있기 때문에 빼서 4가 됩니다.&lt;br /&gt;&lt;br /&gt;The same principle applies to the number nine, which is written as IX.&lt;br /&gt;IX로 쓰여진 숫자 9에도 동일한 원칙이 적용됩니다.&lt;br /&gt;&lt;br /&gt;There are six instances where subtraction is used: 빼기가 사용되는 6가지 경우가 있습니다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;I can be placed before V (5) and X (10) to make 4 and 9.&lt;/li&gt;
&lt;li&gt;X can be placed before L (50) and C (100) to make 40 and 90.&lt;/li&gt;
&lt;li&gt;C can be placed before D (500) and M (1000) to make 400 and 900.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Given an integer, convert it to a roman numeral.&lt;br /&gt;정수가 주어지면, 로마 숫자로 변환하세요.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;Example 1:&lt;/h3&gt;
&lt;pre class=&quot;yaml&quot;&gt;&lt;code&gt;Input: s = &quot;III&quot;
Output: 3
Explanation: III = 3.&lt;/code&gt;&lt;/pre&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;Example 2:&lt;/h3&gt;
&lt;pre class=&quot;yaml&quot;&gt;&lt;code&gt;Input: s = &quot;LVIII&quot;
Output: 58
Explanation: L = 50, V= 5, III = 3.&lt;/code&gt;&lt;/pre&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;Example 3:&lt;/h3&gt;
&lt;pre class=&quot;yaml&quot;&gt;&lt;code&gt;Input: s = &quot;MCMXCIV&quot;
Output: 1994
Explanation: M = 1000, CM = 900, XC = 90 and IV = 4.&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;제약조건:&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;1 &amp;lt;= num &amp;lt;= 3999&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;문제 풀이&lt;/h2&gt;
&lt;ol style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;기본 로마 숫자 7가지와 빼기가 사용되는 6가지 경우에 대해서 HashMap을 사용하여 저장합니다.&lt;/li&gt;
&lt;li&gt;문자열을 순회하며 로마숫자의 값을 찾습니다.&lt;/li&gt;
&lt;/ol&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;빼기가 사용되는 경우를 찾기위해서 두 글자와, 한 글자로 나눠 탐색을 합니다.
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;두 글자를 먼저 검사해서 빼기가 사용되는 경우를 먼저 확인할 수 있습니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;소스코드&lt;/h2&gt;
&lt;pre class=&quot;arduino&quot;&gt;&lt;code&gt;private static final Map&amp;lt;String, Integer&amp;gt; romanSymbolMap = new HashMap&amp;lt;&amp;gt;() {
        {
            put(&quot;M&quot;, 1000);
            put(&quot;CM&quot;, 900);
            put(&quot;D&quot;, 500);
            put(&quot;CD&quot;, 400);
            put(&quot;C&quot;, 100);
            put(&quot;XC&quot;, 90);
            put(&quot;L&quot;, 50);
            put(&quot;XL&quot;, 40);
            put(&quot;X&quot;, 10);
            put(&quot;IX&quot;, 9);
            put(&quot;V&quot;, 5);
            put(&quot;IV&quot;, 4);
            put(&quot;I&quot;, 1);
        }
    };

    public static int romanToInt(String s) {
        int answer = 0;

        for (int idx = 0; idx &amp;lt; s.length(); ) {
            String twoChSubStr = s.substring(idx, Math.min(s.length(), idx + 2));
            String oneChSubStr = s.substring(idx, idx + 1);

            if (romanSymbolMap.containsKey(twoChSubStr)) {
                answer += romanSymbolMap.get(twoChSubStr);
                idx += 2;
            } else {
                answer += romanSymbolMap.get(oneChSubStr);
                idx++;
            }
        }

        return answer;
    }&lt;/code&gt;&lt;/pre&gt;</description>
      <category>알고리즘(Algorithm)/LeetCode</category>
      <author>나아가는중</author>
      <guid isPermaLink="true">https://dlee0129.tistory.com/264</guid>
      <comments>https://dlee0129.tistory.com/264#entry264comment</comments>
      <pubDate>Mon, 18 Jul 2022 14:32:33 +0900</pubDate>
    </item>
    <item>
      <title>[LeetCode] 12. Integer_to_Roman (JAVA)</title>
      <link>https://dlee0129.tistory.com/263</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;문제&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Roman numerals are represented by seven different symbols: I, V, X, L, C, D and M.&lt;br /&gt;로마 숫자는 I, V, X, L, C, D 그리고 M의 7가지 기호로 표시됩니다.&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;
&lt;table data-ke-align=&quot;alignLeft&quot;&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th align=&quot;left&quot;&gt;Symbol&lt;/th&gt;
&lt;th align=&quot;left&quot;&gt;Value&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td align=&quot;left&quot;&gt;I&lt;/td&gt;
&lt;td align=&quot;left&quot;&gt;1&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td align=&quot;left&quot;&gt;V&lt;/td&gt;
&lt;td align=&quot;left&quot;&gt;5&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td align=&quot;left&quot;&gt;X&lt;/td&gt;
&lt;td align=&quot;left&quot;&gt;10&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td align=&quot;left&quot;&gt;L&lt;/td&gt;
&lt;td align=&quot;left&quot;&gt;50&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td align=&quot;left&quot;&gt;C&lt;/td&gt;
&lt;td align=&quot;left&quot;&gt;100&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td align=&quot;left&quot;&gt;D&lt;/td&gt;
&lt;td align=&quot;left&quot;&gt;500&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td align=&quot;left&quot;&gt;M&lt;/td&gt;
&lt;td align=&quot;left&quot;&gt;1000&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;For example, 2 is written as II in Roman numeral, just two one's added together.&lt;br /&gt;예를 들어, 2는 로마 숫자로 II로 표기되며, 일을 두번 더하면 됩니다.&lt;br /&gt;&lt;br /&gt;12 is written as XII, which is simply X + II.&lt;br /&gt;12는 XII로 표기되며, 단순히 X + II입니다.&lt;br /&gt;&lt;br /&gt;The number 27 is written as XXVII, which is XX + V + II.&lt;br /&gt;숫자 27은 XXVII로 표기되며, XX + V + II입니다.&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Roman numerals are usually written largest to smallest from left to right.&lt;br /&gt;로마 숫자는 일반적으로 왼쪽에서 오른쪽으로 큰 것에서 작은 것 순으로 표기합니다.&lt;br /&gt;&lt;br /&gt;However, the numeral for four is not IIII.&lt;br /&gt;그러나, 4에 대한 숫자는 IIII가 아닙니다.&lt;br /&gt;&lt;br /&gt;Instead, the number four is written as IV.&lt;br /&gt;대신에, 숫자 4는 IV로 표기됩니다.&lt;br /&gt;&lt;br /&gt;Because the one is before the five we subtract it making four.&lt;br /&gt;1은 5보다 앞에 있기 때문에 빼서 4가 됩니다.&lt;br /&gt;&lt;br /&gt;The same principle applies to the number nine, which is written as IX.&lt;br /&gt;IX로 쓰여진 숫자 9에도 동일한 원칙이 적용됩니다.&lt;br /&gt;&lt;br /&gt;There are six instances where subtraction is used: 빼기가 사용되는 6가지 경우가 있습니다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;I can be placed before V (5) and X (10) to make 4 and 9.&lt;/li&gt;
&lt;li&gt;X can be placed before L (50) and C (100) to make 40 and 90.&lt;/li&gt;
&lt;li&gt;C can be placed before D (500) and M (1000) to make 400 and 900.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Given an integer, convert it to a roman numeral.&lt;br /&gt;정수가 주어지면, 로마 숫자로 변환하세요.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;Example 1:&lt;/h3&gt;
&lt;pre class=&quot;yaml&quot;&gt;&lt;code&gt;Input: num = 3
Output: &quot;III&quot;
Explanation: 3 is represented as 3 ones.&lt;/code&gt;&lt;/pre&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;Example 2:&lt;/h3&gt;
&lt;pre class=&quot;yaml&quot;&gt;&lt;code&gt;Input: num = 58
Output: &quot;LVIII&quot;
Explanation: L = 50, V = 5, III = 3.&lt;/code&gt;&lt;/pre&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;Example 3:&lt;/h3&gt;
&lt;pre class=&quot;yaml&quot;&gt;&lt;code&gt;Input: num = 1994
Output: &quot;MCMXCIV&quot;
Explanation: M = 1000, CM = 900, XC = 90 and IV = 4.&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;제약조건:&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;1 &amp;lt;= num &amp;lt;= 3999&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;문제 풀이&lt;/h2&gt;
&lt;ol style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;기본 로마 숫자 7가지와 빼기가 사용되는 6가지 경우에 대해서 LinkedHashMap을 사용해서 저장합니다.
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;큰 숫자부터 비교하기 위해서 순서가 있는 LinkedHashMap을 사용했습니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;큰 숫자부터 비교하면서 나누었을 때 0인지 검사합니다.
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;나누었을 때 0인 경우 해당 숫자를 뺄 수 있기 때문입니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;2의 조건이 성립하면, 로마 숫자 사용할 수 있는 반복 횟수 만큼 추가해줍니다.
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;num 을 숫자로 나누었을 때 나오는 숫자가 반복 횟수가 됩니다.&lt;/li&gt;
&lt;li&gt;반복해서 추가는 repeat() 함수를 사용합니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;숫자를 로마 숫자를 추가한 만큼 빼줍니다.&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;소스코드&lt;/h2&gt;
&lt;pre class=&quot;arduino&quot;&gt;&lt;code&gt;static private final Map&amp;lt;Integer, String&amp;gt; romanSymbolMap = new LinkedHashMap&amp;lt;&amp;gt;() {
        {
            put(1000, &quot;M&quot;);
            put(900, &quot;CM&quot;);
            put(500, &quot;D&quot;);
            put(400, &quot;CD&quot;);
            put(100, &quot;C&quot;);
            put(90, &quot;XC&quot;);
            put(50, &quot;L&quot;);
            put(40, &quot;XL&quot;);
            put(10, &quot;X&quot;);
            put(9, &quot;IX&quot;);
            put(5, &quot;V&quot;);
            put(4, &quot;IV&quot;);
            put(1, &quot;I&quot;);
        }
    };

    public static String intToRoman(int num) {
        StringBuilder answer = new StringBuilder();

        for (Map.Entry&amp;lt;Integer, String&amp;gt; entry : romanSymbolMap.entrySet()) {
            if (num / entry.getKey() != 0) {
                answer.append(entry.getValue().repeat(num / entry.getKey()));
                num -= entry.getKey() * (num / entry.getKey());
            }
        }

        return answer.toString();
    }&lt;/code&gt;&lt;/pre&gt;</description>
      <category>알고리즘(Algorithm)/LeetCode</category>
      <category>12</category>
      <category>Algorithm</category>
      <category>integer_to_roman</category>
      <category>Java</category>
      <category>leetcode</category>
      <category>자바</category>
      <author>나아가는중</author>
      <guid isPermaLink="true">https://dlee0129.tistory.com/263</guid>
      <comments>https://dlee0129.tistory.com/263#entry263comment</comments>
      <pubDate>Sun, 17 Jul 2022 12:52:43 +0900</pubDate>
    </item>
    <item>
      <title>[LeetCode] 11. Container With Most Water (Java)</title>
      <link>https://dlee0129.tistory.com/262</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;문제&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;You are given an integer array &lt;span style=&quot;background-color: #f6f9fa;&quot;&gt;height&lt;/span&gt; of length &lt;span style=&quot;background-color: #f6f9fa;&quot;&gt;n&lt;/span&gt;.&lt;br /&gt;길이가 n인 정수 배열 'height'가 제공됩니다.&lt;br /&gt;&lt;br /&gt;There are &lt;span style=&quot;background-color: #f6f9fa;&quot;&gt;n&lt;/span&gt; vertical lines drawn such that the two endpoints of the &lt;span style=&quot;background-color: #f6f9fa;&quot;&gt;ith&lt;/span&gt; line are &lt;span style=&quot;background-color: #f6f9fa;&quot;&gt;(i, 0)&lt;/span&gt; and &lt;span style=&quot;background-color: #f6f9fa;&quot;&gt;(i, height[i])&lt;/span&gt;.&lt;br /&gt;i번째 선의 두 끝점이 (i, 0) 및 (i, height[i])가 되도록 n개의 수직선이 그려집니다.&lt;br /&gt;&lt;br /&gt;Find two lines that together with the x-axis form a container, such that the container contains the most water.&lt;br /&gt;컨테이너에 가장 많은 물이 포함되도록 컨테이너의 x축과 함께 형성하는 두 개의 선을 찾으세요.&lt;br /&gt;&lt;br /&gt;Return the maximum amount of water a container can store.&lt;br /&gt;컨테이너가 저장할 수 있는 최대 물의 양을 반환하세요.&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Notice that you may not slant the container.&lt;br /&gt;컨테이너를 기울이면 안 됩니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;Example 1:&lt;/h3&gt;
&lt;pre class=&quot;angelscript&quot;&gt;&lt;code&gt;Input: height = [1,8,6,2,5,4,8,3,7]
Output: 49
Explanation: The above vertical lines are represented by array [1,8,6,2,5,4,8,3,7]. In this case, the max area of water (blue section) the container can contain is 49.&lt;/code&gt;&lt;/pre&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;Example 2:&lt;/h3&gt;
&lt;pre class=&quot;angelscript&quot;&gt;&lt;code&gt;Input: height = [1,1]
Output: 1&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;제약조건:&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;n == height.length&lt;/li&gt;
&lt;li&gt;2 &amp;lt;= n &amp;lt;= 105&lt;/li&gt;
&lt;li&gt;0 &amp;lt;= height[i] &amp;lt;= 104&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;문제 풀이&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;가장 많은 양의 물을 담기 위해서는 두 기둥 사이의 공간의 크기가 최대가 되는 기둥을 찾아야 합니다. 공간의 크기는 &lt;b&gt; 높이 * 넓이 &lt;/b&gt; 입니다.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;왼쪽 끝 기둥과 오른쪽 끝 기둥에서 시작해서 넓이를 구하는 두 기둥을 욺직이며 가장 공간의 크기가 큰 경우를 찾습니다.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;왼쪽과 오른쪽 기둥을 비교하여 더 작은 기둥을 움직여야 더 큰 공간을 찾을 수 있는 경우가 생깁니다.&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;소스코드&lt;/h2&gt;
&lt;pre class=&quot;arduino&quot;&gt;&lt;code&gt;class Solution {
    public static int maxArea(int[] height) {
        int maxArea = 0, left = 0, right = height.length - 1;

        while (left &amp;lt; right) {
            maxArea = Math.max(maxArea, getArea(left, right, height));

            if (height[left] &amp;lt; height[right]) {
                left++;
            } else {
                right--;
            }
        }

        return maxArea;
    }

    public static int getArea(int left, int right, int[] height) {
        int w = right - left, h = Math.min(height[left], height[right]);
        return w * h;
    }
}&lt;/code&gt;&lt;/pre&gt;</description>
      <category>알고리즘(Algorithm)/LeetCode</category>
      <category>11</category>
      <category>Container With Most Water</category>
      <category>Java</category>
      <category>leetcode</category>
      <category>문제풀이</category>
      <category>번역</category>
      <category>자바</category>
      <author>나아가는중</author>
      <guid isPermaLink="true">https://dlee0129.tistory.com/262</guid>
      <comments>https://dlee0129.tistory.com/262#entry262comment</comments>
      <pubDate>Sat, 16 Jul 2022 00:55:56 +0900</pubDate>
    </item>
    <item>
      <title>[백준 Baekjoon] 10162번 전자레인지 - JAVA</title>
      <link>https://dlee0129.tistory.com/261</link>
      <description>&lt;h3&gt;문제풀이&lt;/h3&gt;
&lt;p&gt;최소버튼 동작을 구하기 위해서는 가장 가장 동작시간이 오래 걸리는 버튼을 최대로 누르면 됩니다.&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;b&gt;가장 동작시간이 긴 A버튼 부터 남아있는 요리시간과 비교하여 버튼을 누를 수 있는 경우 해당 버튼을 누를 수 있는 최대를 구합니다.&lt;/b&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;b&gt;시간을 정확히 맞출 수 없는 경우&lt;/b&gt;는 이 경우 버튼 C로 시간을 맞출 수 없는 경우입니다. &lt;/p&gt;
&lt;br&gt;

&lt;h3&gt;소스코드&lt;/h3&gt;
&lt;pre&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));

        final int btnTimeA = 300, btnTimeB = 60, btnTimeC = 10;
        int cntBtnA = 0, cntBtnB = 0, cntBtnC = 0;
        int T = Integer.parseInt(br.readLine());

        if (T % btnTimeC != 0) {
            System.out.println(-1);

            return;
        }

        if (T &amp;gt;= btnTimeA) {
            cntBtnA += T / btnTimeA;
            T %= btnTimeA;
        }

        if (T &amp;gt;= btnTimeB) {
            cntBtnB += T / btnTimeB;
            T %= btnTimeB;
        }

        cntBtnC += T / btnTimeC;
        T %= btnTimeC;

        System.out.println(cntBtnA + &amp;quot; &amp;quot; + cntBtnB + &amp;quot; &amp;quot; + cntBtnC);
    }
}
&lt;/code&gt;&lt;/pre&gt;</description>
      <category>알고리즘(Algorithm)/백준(Baekjoon)</category>
      <category>10162</category>
      <category>Baekjoon</category>
      <category>boj</category>
      <category>Java</category>
      <category>백준</category>
      <category>자바</category>
      <category>전자레인지</category>
      <author>나아가는중</author>
      <guid isPermaLink="true">https://dlee0129.tistory.com/261</guid>
      <comments>https://dlee0129.tistory.com/261#entry261comment</comments>
      <pubDate>Fri, 15 Jul 2022 23:19:50 +0900</pubDate>
    </item>
    <item>
      <title>[백준 Baekjoon] 1268번 임시 반장 정하기 - JAVA</title>
      <link>https://dlee0129.tistory.com/260</link>
      <description>&lt;h3&gt;문제풀이&lt;/h3&gt;
&lt;p&gt;문제의 난이도는 브로즌 1이라지만, 체감은 더 난이도가 있었던것 같습니다. 풀기 엄청 귀찮은 문제였습니다.&lt;br&gt;&lt;br&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;int[][] arr = new int[5][N];

Set[] dupCheckSet = new Set[N];
int max = 0, answer = 1;&lt;/code&gt;&lt;/pre&gt;&lt;ul&gt;
&lt;li&gt;표는 나중에 계산하기 편하게 i를 학년으로 j를 학생으로 생성하고 저장하였습니다.&lt;/li&gt;
&lt;li&gt;중복되는 학생을 검사하기 위해 set 배열을 사용하였습니다.&lt;/li&gt;
&lt;li&gt;한 번도 겹치지 않는 경우 1번 학생이 정답이여 초기값을 1로 하였습니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;br&gt;

&lt;pre&gt;&lt;code&gt;for (int i = 0; i &amp;lt; 5; i++) {
    Map&amp;lt;Integer, List&amp;lt;Integer&amp;gt;&amp;gt; stuClsMap = new HashMap&amp;lt;&amp;gt;();

    for (int j = 0; j &amp;lt; N; j++) {
        List&amp;lt;Integer&amp;gt; value = stuClsMap.getOrDefault(arr[i][j], new ArrayList&amp;lt;&amp;gt;());
        value.add(j);

        stuClsMap.put(arr[i][j], value);
    }

    for (Entry&amp;lt;Integer, List&amp;lt;Integer&amp;gt;&amp;gt; entry : stuClsMap.entrySet()) {
        if (entry.getValue().size() &amp;gt; 1) {
            for (int stuN : entry.getValue()) {
                dupCheckSet[stuN].addAll(entry.getValue());
                dupCheckSet[stuN].remove(stuN);
            }
        }
    }
}&lt;/code&gt;&lt;/pre&gt;&lt;ul&gt;
&lt;li&gt;학생들의 반을 key로 학생을 value로 하여 저장합니다.&lt;/li&gt;
&lt;li&gt;반의 학생이 2이상 있는 경우 같은 반인 학생이 있는 경우입니다.&lt;/li&gt;
&lt;li&gt;같은 반의 학생들을 set에 추가합니다. 자신은 제외합니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;br&gt;

&lt;pre&gt;&lt;code&gt;for (int i = 0; i &amp;lt; N; i++) {
    if (dupCheckSet[i].size() &amp;gt; max) {
        max = dupCheckSet[i].size();
        answer = i + 1;
    }
}&lt;/code&gt;&lt;/pre&gt;&lt;ul&gt;
&lt;li&gt;가장 같은 반이었던 사람이 많은 학생을 찾습니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;br&gt;

&lt;h3&gt;소스코드&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Map.Entry;
import java.util.*;

public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringTokenizer st;

        int N = Integer.parseInt(br.readLine());
        int[][] arr = new int[5][N];

        Set[] dupCheckSet = new Set[N];
        int max = 0, answer = 1;

        for (int j = 0; j &amp;lt; N; j++) {
            dupCheckSet[j] = new HashSet();

            st = new StringTokenizer(br.readLine());
            for (int i = 0; i &amp;lt; 5; i++) {
                arr[i][j] = Integer.parseInt(st.nextToken());
            }
        }

        for (int i = 0; i &amp;lt; 5; i++) {
            Map&amp;lt;Integer, List&amp;lt;Integer&amp;gt;&amp;gt; stuClsMap = new HashMap&amp;lt;&amp;gt;();

            for (int j = 0; j &amp;lt; N; j++) {
                List&amp;lt;Integer&amp;gt; value = stuClsMap.getOrDefault(arr[i][j], new ArrayList&amp;lt;&amp;gt;());
                value.add(j);

                stuClsMap.put(arr[i][j], value);
            }

            for (Entry&amp;lt;Integer, List&amp;lt;Integer&amp;gt;&amp;gt; entry : stuClsMap.entrySet()) {
                if (entry.getValue().size() &amp;gt; 1) {
                    for (int stuN : entry.getValue()) {
                        dupCheckSet[stuN].addAll(entry.getValue());
                        dupCheckSet[stuN].remove(stuN);
                    }
                }
            }
        }

        for (int i = 0; i &amp;lt; N; i++) {
            if (dupCheckSet[i].size() &amp;gt; max) {
                max = dupCheckSet[i].size();
                answer = i + 1;
            }
        }

        System.out.println(answer);
    }
}
&lt;/code&gt;&lt;/pre&gt;</description>
      <category>알고리즘(Algorithm)/백준(Baekjoon)</category>
      <category>1268</category>
      <category>Baekjoon</category>
      <category>boj</category>
      <category>Java</category>
      <category>백준</category>
      <category>임시 반장 정하기</category>
      <category>자바</category>
      <author>나아가는중</author>
      <guid isPermaLink="true">https://dlee0129.tistory.com/260</guid>
      <comments>https://dlee0129.tistory.com/260#entry260comment</comments>
      <pubDate>Tue, 12 Jul 2022 23:37:12 +0900</pubDate>
    </item>
    <item>
      <title>[백준 Baekjoon] 2511번 카드놀이 - JAVA</title>
      <link>https://dlee0129.tistory.com/259</link>
      <description>&lt;h3 data-ke-size=&quot;size23&quot;&gt;문제풀이&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;간단한 구현문제입니다.&lt;/p&gt;
&lt;ol style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;A와 B의 카드를 문자열 배열로 저장합니다.&lt;/li&gt;
&lt;li&gt;배열을 순회하며 A와 B의 카드를 비교합니다.
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;문자열의 기본 메소드 compareTo()를 사용하여, 문자열을 비교할 수 있습니다.&lt;/li&gt;
&lt;li&gt;문자열을 비교하여 같은경우 0, 이외에는 A와 B 문자열의 차이를 리턴합니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;마지막으로 이긴 사람을 저장합니다. 모든 라운드에서 비기는 경우는 초기화값인 'D'가 됩니다.&lt;/li&gt;
&lt;li&gt;A와 B의 최종 점수를 출력합니다.&lt;/li&gt;
&lt;li&gt;이긴 사람을 출력합니다. 비기는 경우는 'D'를 출력합니다.
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;모든 라운드에서 비기는 경우인지 승자가 초기값인 'D'와 비교하여 검사합니다.&lt;/li&gt;
&lt;li&gt;점수가 같은 경우 마지막으로 이긴 사람을 출력합니다.&lt;/li&gt;
&lt;li&gt;점수가 다른 경우 더 높은 점수를 획득한 사람을 출력합니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;소스코드&lt;/h3&gt;
&lt;pre class=&quot;processing&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[] strArrA = br.readLine().split(&quot; &quot;);
        String[] strArrB = br.readLine().split(&quot; &quot;);

        int scoreA = 0, scoreB = 0;
        String lastWinner = &quot;D&quot;;

        for (int i = 0; i &amp;lt; 10; i++) {
            if (strArrA[i].compareTo(strArrB[i]) == 0) {
                scoreA++;
                scoreB++;
            } else if (strArrA[i].compareTo(strArrB[i]) &amp;gt; 0) {
                scoreA += 3;
                lastWinner = &quot;A&quot;;
            } else {
                scoreB += 3;
                lastWinner = &quot;B&quot;;
            }
        }

        System.out.println(scoreA + &quot; &quot; + scoreB);
        System.out.println(
                lastWinner.equals(&quot;D&quot;) ? &quot;D&quot;
                        : scoreA == scoreB ? lastWinner
                        : scoreA &amp;gt; scoreB ? &quot;A&quot;
                        : &quot;B&quot;
        );
    }
}
&lt;/code&gt;&lt;/pre&gt;</description>
      <category>알고리즘(Algorithm)/백준(Baekjoon)</category>
      <category>2511</category>
      <category>Baekjoon</category>
      <category>boj</category>
      <category>Java</category>
      <category>백준</category>
      <category>자바</category>
      <category>카드놀이</category>
      <author>나아가는중</author>
      <guid isPermaLink="true">https://dlee0129.tistory.com/259</guid>
      <comments>https://dlee0129.tistory.com/259#entry259comment</comments>
      <pubDate>Mon, 11 Jul 2022 23:00:23 +0900</pubDate>
    </item>
    <item>
      <title>[Intellij] 언어팩 영어(English) 사용 / 언어 변경</title>
      <link>https://dlee0129.tistory.com/258</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;Intellij를 사용하다 업데이트를 했더니 한글 팩이 적용되거나, 다른 예기치 않은 이유로 변경되는 경우가 있습니다. &lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;일반적으로 Intellij를 영어로 사용하는 것이 편리하고 보편적이라 갑자기 한글이 된다면 낯설고 불편할 것입니다.&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;Intellij를 영문으로 사용하고 싶으시다면 다음의 절차를 따라하시면 됩니다.&lt;/blockquote&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;- 이 포스트는 Mac os를 사용하여 설명드립니다.&lt;/span&gt;&lt;/div&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 Serif KR';&quot;&gt;화면 좌측 상단의 'Intellij IDEA'를 선택한 다음 'Preference'를 선택합니다.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/blockquote&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2022-07-04 오후 10.53.01.png&quot; data-origin-width=&quot;530&quot; data-origin-height=&quot;534&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/UpMXK/btrGsogeZwl/fkkOgHMgj1VkjweKKiFxLK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/UpMXK/btrGsogeZwl/fkkOgHMgj1VkjweKKiFxLK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/UpMXK/btrGsogeZwl/fkkOgHMgj1VkjweKKiFxLK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FUpMXK%2FbtrGsogeZwl%2FfkkOgHMgj1VkjweKKiFxLK%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;530&quot; height=&quot;534&quot; data-filename=&quot;스크린샷 2022-07-04 오후 10.53.01.png&quot; data-origin-width=&quot;530&quot; data-origin-height=&quot;534&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style1&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;좌측 메뉴들 중에서 플러그인을 선택합니다.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/blockquote&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2022-07-04 오후 10.53.13.png&quot; data-origin-width=&quot;1818&quot; data-origin-height=&quot;1416&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dKOIPD/btrGw1J4WF1/Lme3BzpHpIJFatd9VwHosk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dKOIPD/btrGw1J4WF1/Lme3BzpHpIJFatd9VwHosk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dKOIPD/btrGw1J4WF1/Lme3BzpHpIJFatd9VwHosk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdKOIPD%2FbtrGw1J4WF1%2FLme3BzpHpIJFatd9VwHosk%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;1818&quot; height=&quot;1416&quot; data-filename=&quot;스크린샷 2022-07-04 오후 10.53.13.png&quot; data-origin-width=&quot;1818&quot; data-origin-height=&quot;1416&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;blockquote data-ke-style=&quot;style1&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;플러그인에는 'MarketPlace'와 'Installed' 탭이 존재하는데 이 중 'Installed' 탭을 클릭해줍니다.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;설치된 플러그인 중 'Korean Language Pack / 한국어 언어 팩'의 체크박스를 해제합니다.&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;완료를 선택하시고 Intellij를 다시 시작해주면 Intellij 언어 설정이 영문으로 변경됩니다.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/blockquote&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2022-07-04 오후 10.54.17.png&quot; data-origin-width=&quot;1812&quot; data-origin-height=&quot;1418&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bNts5k/btrGunHnRuY/OYrWn9UAxDWxv7XkuWbXp1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bNts5k/btrGunHnRuY/OYrWn9UAxDWxv7XkuWbXp1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bNts5k/btrGunHnRuY/OYrWn9UAxDWxv7XkuWbXp1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbNts5k%2FbtrGunHnRuY%2FOYrWn9UAxDWxv7XkuWbXp1%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;1812&quot; height=&quot;1418&quot; data-filename=&quot;스크린샷 2022-07-04 오후 10.54.17.png&quot; data-origin-width=&quot;1812&quot; data-origin-height=&quot;1418&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;</description>
      <category>Tools/Intellij</category>
      <category>IntelliJ</category>
      <category>설정</category>
      <category>언어</category>
      <category>언어팩</category>
      <category>영문</category>
      <category>영어</category>
      <category>한글</category>
      <author>나아가는중</author>
      <guid isPermaLink="true">https://dlee0129.tistory.com/258</guid>
      <comments>https://dlee0129.tistory.com/258#entry258comment</comments>
      <pubDate>Mon, 4 Jul 2022 23:12:31 +0900</pubDate>
    </item>
    <item>
      <title>[LeetCode] 9. Palindrome Number (Java)</title>
      <link>https://dlee0129.tistory.com/257</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;문제&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Given an integer &lt;span style=&quot;background-color: #f6f9fa;&quot;&gt;x&lt;/span&gt;, return&lt;span style=&quot;background-color: #f6f9fa;&quot;&gt;true&lt;/span&gt; if &lt;span style=&quot;background-color: #f6f9fa;&quot;&gt;x&lt;/span&gt; is palindrome integer.&lt;br /&gt;정수 &lt;span style=&quot;background-color: #f6f9fa;&quot;&gt;x&lt;/span&gt;가 주어지면, &lt;span style=&quot;background-color: #f6f9fa;&quot;&gt;x&lt;/span&gt;가 회문 정수이면 &lt;span style=&quot;background-color: #f6f9fa;&quot;&gt;true&lt;/span&gt;를 반환하세요.&lt;br /&gt;&lt;br /&gt;An integer is a &lt;b&gt;palindrome&lt;/b&gt; when it reads the same backward as forward.&lt;br /&gt;정수는 정방향과 역방향이 같을 때 &lt;b&gt;회문&lt;/b&gt;입니다.&lt;br /&gt;&lt;br /&gt;For example, &lt;span style=&quot;background-color: #f6f9fa;&quot;&gt;121&lt;/span&gt; is a palindrome while &lt;span style=&quot;background-color: #f6f9fa;&quot;&gt;123&lt;/span&gt; is not.&lt;br /&gt;예를 들어, &lt;span style=&quot;background-color: #f6f9fa;&quot;&gt;121&lt;/span&gt;은 회문이지만 &lt;span style=&quot;background-color: #f6f9fa;&quot;&gt;123&lt;/span&gt;은 아닙니다.&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;
&lt;pre class=&quot;gcode&quot;&gt;&lt;code&gt;회문이란?

회문(回文) 또는 팰린드롬(palindrome)은 거꾸로 읽어도 제대로 읽는 것과 같은 문장이나 낱말, 숫자, 문자열(sequence of characters) 등이다. 보통 낱말 사이에 있는 띄어쓰기나 문장 부호는 무시한다.

출처: 회문 - 위키백과&lt;/code&gt;&lt;/pre&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;Example 1:&lt;/h3&gt;
&lt;pre class=&quot;vim&quot;&gt;&lt;code&gt;Input: x = 121
Output: true
Explanation: 121 reads as 121 from left to right and from right to left.&lt;/code&gt;&lt;/pre&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;Example 2:&lt;/h3&gt;
&lt;pre class=&quot;livecodeserver&quot;&gt;&lt;code&gt;Input: x = -121
Output: false
Explanation: From left to right, it reads -121. From right to left, it becomes 121-. Therefore it is not a palindrome.&lt;/code&gt;&lt;/pre&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;Example 3:&lt;/h3&gt;
&lt;pre class=&quot;yaml&quot;&gt;&lt;code&gt;Input: x = 10
Output: false
Explanation: Reads 01 from right to left. Therefore it is not a palindrome.&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;제약조건:&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;-231 &amp;lt;= x &amp;lt;= 231 - 1&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Follow-up&lt;/b&gt;:&lt;br /&gt;Could you solve it without converting the integer to a string?&lt;br /&gt;정수를 문자열로 변환하지 않고 해결할 수 있습니까?&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;문제 풀이 (시간복잡도 O(n))&lt;/h2&gt;
&lt;ol style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;가운데를 기준으로 left, right로 나누어 계산하였습니다.&lt;/li&gt;
&lt;li&gt;right가 left보다 커지기 전까지 반복을 하여 가운데를 기준으로 나눕니다.&lt;/li&gt;
&lt;li&gt;left는 10씩 나누고, right는 뒤의 숫자를 붙여가며 구합니다.&lt;/li&gt;
&lt;li&gt;짝수인 경우 left == right로 계산되며, 홀수는 right를 10으로 나누어 계산합니다.&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;소스코드&lt;/h2&gt;
&lt;pre class=&quot;angelscript&quot;&gt;&lt;code&gt;class Solution {
    public boolean isPalindrome(int x) {
        if (x &amp;lt; 0 || (x != 0 &amp;amp;&amp;amp; x % 10 == 0)) {
            return false;
        }

        int left = x, right = 0;
        while (left &amp;gt; right) {
            right = right * 10 + left % 10;
            left /= 10;
        }

        return (left == right || left == right / 10);
    }
}&lt;/code&gt;&lt;/pre&gt;</description>
      <category>알고리즘(Algorithm)/LeetCode</category>
      <category>Algorithm</category>
      <category>Java</category>
      <category>leetcode</category>
      <category>palindrome</category>
      <category>Palindrome Number</category>
      <category>알고리즘</category>
      <category>자바</category>
      <author>나아가는중</author>
      <guid isPermaLink="true">https://dlee0129.tistory.com/257</guid>
      <comments>https://dlee0129.tistory.com/257#entry257comment</comments>
      <pubDate>Tue, 31 May 2022 21:32:56 +0900</pubDate>
    </item>
    <item>
      <title>터미널 꾸미기 with iTerm</title>
      <link>https://dlee0129.tistory.com/256</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;Mac에서 사용하는 터미널을 커스터마이징하여 꾸며보는 방법입니다.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;터미널을 꾸민다고 기본 앱인 'Terminal'을 커스터마이징 하는 것이 아니라, 터미널을 대체하는 &lt;b&gt;iterm2&lt;/b&gt; 제품을 &lt;b&gt;사용&lt;/b&gt;하여 커스터마이징 하는 방법입니다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;1. iTerm2 설치&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;iTerm2 공식 사이트에 들어가서 iTerm2를 설치해줍니다.&lt;br /&gt;&lt;a href=&quot;https://iterm2.com/&quot;&gt;https://iterm2.com/&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1653821168486&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;iTerm2 - macOS Terminal Replacement&quot; data-og-description=&quot;iTerm2 by George Nachman. Website by Matthew Freeman, George Nachman, and James A. Rosen. Website updated and optimized by HexBrain&quot; data-og-host=&quot;iterm2.com&quot; data-og-source-url=&quot;https://iterm2.com/&quot; data-og-url=&quot;https://iterm2.com/&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/bpfPoR/hyOzRsofV1/Xnz2lpACJdSKroEVhcPkoK/img.jpg?width=1600&amp;amp;height=624&amp;amp;face=0_0_1600_624&quot;&gt;&lt;a href=&quot;https://iterm2.com/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://iterm2.com/&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/bpfPoR/hyOzRsofV1/Xnz2lpACJdSKroEVhcPkoK/img.jpg?width=1600&amp;amp;height=624&amp;amp;face=0_0_1600_624');&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;iTerm2 - macOS Terminal Replacement&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;iTerm2 by George Nachman. Website by Matthew Freeman, George Nachman, and James A. Rosen. Website updated and optimized by HexBrain&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;iterm2.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;iTerm2는 Mac OS에서 터미널을 대체하여 사용할 수 있는 가상 터미널 어플리케이션입니다. 기본 터미널보다 다양한 기능들을 제공합니다. 화면 분할, 검색 및 하이라이브, 마우스를 사용하지 않고 복사, 붙여넣기 등의 기능들이 있습니다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;2. Homebrew 설치&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Hombrew 공식 사이트에 들어가서 Hombrew를 설치해줍니다.&lt;br /&gt;&lt;a href=&quot;https://brew.sh/index_ko&quot;&gt;https://brew.sh/index_ko&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1653821225042&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;Homebrew&quot; data-og-description=&quot;The Missing Package Manager for macOS (or Linux).&quot; data-og-host=&quot;brew.sh&quot; data-og-source-url=&quot;https://brew.sh/index_ko&quot; data-og-url=&quot;https://brew.sh/index_ko&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/cfBwfz/hyOym1GtO1/CCktkYe0SZluKcRyIsoFF1/img.png?width=1200&amp;amp;height=560&amp;amp;face=0_0_1200_560,https://scrap.kakaocdn.net/dn/cdqf6G/hyOymAAtCM/nosTrBvRbOGqgclwz4Isn0/img.png?width=1200&amp;amp;height=560&amp;amp;face=0_0_1200_560,https://scrap.kakaocdn.net/dn/B1MlE/hyOzMqTPnp/w5jmQpy0VJgwagPSwGyDu0/img.png?width=298&amp;amp;height=298&amp;amp;face=0_0_298_298&quot;&gt;&lt;a href=&quot;https://brew.sh/index_ko&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://brew.sh/index_ko&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/cfBwfz/hyOym1GtO1/CCktkYe0SZluKcRyIsoFF1/img.png?width=1200&amp;amp;height=560&amp;amp;face=0_0_1200_560,https://scrap.kakaocdn.net/dn/cdqf6G/hyOymAAtCM/nosTrBvRbOGqgclwz4Isn0/img.png?width=1200&amp;amp;height=560&amp;amp;face=0_0_1200_560,https://scrap.kakaocdn.net/dn/B1MlE/hyOzMqTPnp/w5jmQpy0VJgwagPSwGyDu0/img.png?width=298&amp;amp;height=298&amp;amp;face=0_0_298_298');&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;Homebrew&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;The Missing Package Manager for macOS (or Linux).&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;brew.sh&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Hombrew는 brew를 사용할 수 있는 어플리케이션입니다. brew는 Mac OS에서 패키지 매니저의 기능을 하며 shell을 통해 프로그램을 다운로드 등 편리한 기능들을 제공합니다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;3. zsh &amp;amp; oh-my-zsh 설치&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;터미널에 아래 명령어들을 입력하여 zsh와 oh-my-zsh를 설치해줍니다.&lt;/p&gt;
&lt;pre class=&quot;crystal&quot;&gt;&lt;code&gt;// zsh 설치
brew install zsh

// oh-my-zsh 설치
sh -c &quot;$(curl -fsSL https://raw.githubusercontent.com/robbyrussell/oh-my-zsh/master/tools/install.sh)&quot;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;zsh는 bash에서 개선된 버전으로 여러 추가 기능들을 제공합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;oh-my-zsh는 zsh에서 가장 많이 사용되는 프레임워크로, 내장 플러그인과 테마등을 제공합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;oh-my-zsh 설치 이후 아래와 같이 brew 명령어를 찾을 수 없다고 하면&lt;/p&gt;
&lt;pre class=&quot;less&quot;&gt;&lt;code&gt; zsh: command not found: brew&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;터미널에 아래 명령어를 입력하여 에디터로 들어갑니다.&lt;/p&gt;
&lt;pre class=&quot;jboss-cli&quot;&gt;&lt;code&gt;vi ~/.zshrc // vi 외에 사용하시는 에디터를 사용해도 무방합니다.&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아래 코드를 추가하여 줍니다.&lt;/p&gt;
&lt;pre class=&quot;routeros&quot;&gt;&lt;code&gt;export PATH=/opt/bombrew/bin:$PATH&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;마지막으로 아래 명령어로 변경 파일을 적용시켜줍니다.&lt;/p&gt;
&lt;pre class=&quot;bash&quot;&gt;&lt;code&gt;source ~/.zshrc&lt;/code&gt;&lt;/pre&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;4. Color Theme 적용&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아래 사이트에서 원하는 Color Theme을 선택합니다. (Color Theme 이름을 선택하면 링크로 이동합니다.)&lt;br /&gt;&lt;a href=&quot;https://github.com/mbadolato/iTerm2-Color-Schemes&quot;&gt;https://github.com/mbadolato/iTerm2-Color-Schemes&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1653821250033&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;object&quot; data-og-title=&quot;GitHub - mbadolato/iTerm2-Color-Schemes: Over 250 terminal color schemes/themes for iTerm/iTerm2. Includes ports to Terminal, Ko&quot; data-og-description=&quot;Over 250 terminal color schemes/themes for iTerm/iTerm2. Includes ports to Terminal, Konsole, PuTTY, Xresources, XRDB, Remmina, Termite, XFCE, Tilda, FreeBSD VT, Terminator, Kitty, MobaXterm, LXTer...&quot; data-og-host=&quot;github.com&quot; data-og-source-url=&quot;https://github.com/mbadolato/iTerm2-Color-Schemes&quot; data-og-url=&quot;https://github.com/mbadolato/iTerm2-Color-Schemes&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/cwf03O/hyOzKtglNU/Yt0AHO3znYhC475cImfCyK/img.png?width=1200&amp;amp;height=600&amp;amp;face=960_133_1081_266&quot;&gt;&lt;a href=&quot;https://github.com/mbadolato/iTerm2-Color-Schemes&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://github.com/mbadolato/iTerm2-Color-Schemes&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/cwf03O/hyOzKtglNU/Yt0AHO3znYhC475cImfCyK/img.png?width=1200&amp;amp;height=600&amp;amp;face=960_133_1081_266');&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;GitHub - mbadolato/iTerm2-Color-Schemes: Over 250 terminal color schemes/themes for iTerm/iTerm2. Includes ports to Terminal, Ko&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;Over 250 terminal color schemes/themes for iTerm/iTerm2. Includes ports to Terminal, Konsole, PuTTY, Xresources, XRDB, Remmina, Termite, XFCE, Tilda, FreeBSD VT, Terminator, Kitty, MobaXterm, LXTer...&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;github.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;주소를 복사한 다음 curl을 사용하여 다운로드 해줍니다. (curl은 github에서 파일 하나만 받을 수 있게 해줍니다.)&lt;/p&gt;
&lt;pre class=&quot;awk&quot;&gt;&lt;code&gt;// curl이 설치되어 있지 않다면 아래 명령어로 설치해줍니다.
brew install curl

// 저는 3024 Day를 설치했습니다.
curl -LO https://github.com/hongzimao/iTerm2-Color-Schemes/blob/master/schemes/3024%20Day.itermcolors&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이제 다음과 같이 Color Theme을 적용시켜 줍니다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Type CMD+i&lt;/li&gt;
&lt;li&gt;Navigate to Colors tab&lt;/li&gt;
&lt;li&gt;Click on Load Presets&lt;/li&gt;
&lt;li&gt;Click on Import&lt;/li&gt;
&lt;li&gt;Select the .itermcolors file(s) of the scheme(s) you'd like to use&lt;/li&gt;
&lt;li&gt;Click on Load Presets and choose a color scheme&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;5. ZSH THEME 변경&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;터미널에 아래 명령어를 입력하여 에디터로 들어갑니다.&lt;/p&gt;
&lt;pre class=&quot;jboss-cli&quot;&gt;&lt;code&gt;vi ~/.zshrc // vi 외에 사용하시는 에디터를 사용해도 무방합니다.&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;'ZSH_THEME' 을 찾아 &lt;b&gt;agnoster&lt;/b&gt;로 변경해줍니다. (agnoster는 가장 대중적으로 사용되는 Theme입니다.)&lt;/p&gt;
&lt;p&gt;&lt;img /&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2022-05-29 오후 7.31.45.png&quot; data-origin-width=&quot;1150&quot; data-origin-height=&quot;924&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/kyaQu/btrDtiuOB1U/S68ckemDNeVqUrqfcScx80/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/kyaQu/btrDtiuOB1U/S68ckemDNeVqUrqfcScx80/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/kyaQu/btrDtiuOB1U/S68ckemDNeVqUrqfcScx80/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FkyaQu%2FbtrDtiuOB1U%2FS68ckemDNeVqUrqfcScx80%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;523&quot; height=&quot;420&quot; data-filename=&quot;스크린샷 2022-05-29 오후 7.31.45.png&quot; data-origin-width=&quot;1150&quot; data-origin-height=&quot;924&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;6. Font 변경&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;5번 까지 하고 나면 Font가 깨지는 현상이 일어날 것입니다.&lt;br /&gt;호환되는 Font를 다운로드하여 적용해줍니다.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;여기서는 아래 링크를 통해 D2Coding Font를 설치하겠습니다.&lt;br /&gt;&lt;a href=&quot;https://github.com/naver/d2codingfont/releases/tag/VER1.3.2&quot;&gt;https://github.com/naver/d2codingfont/releases/tag/VER1.3.2&lt;/a&gt;&lt;br /&gt;다운로드 받은 zip 파일 압축을 풀고 들어가서 D2Coding 파일의 'D2Coding-Ver1.3.2-20180524'을 클릭하여 서체 설치를 눌러줍니다.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;이제 다음과 같이 Font을 적용시켜 줍니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2022-05-29 오후 7.40.09.png&quot; data-origin-width=&quot;1282&quot; data-origin-height=&quot;1380&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Xtglh/btrDpP7WNvl/eBrKBtCLQXVSL6Ker4xC51/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Xtglh/btrDpP7WNvl/eBrKBtCLQXVSL6Ker4xC51/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Xtglh/btrDpP7WNvl/eBrKBtCLQXVSL6Ker4xC51/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FXtglh%2FbtrDpP7WNvl%2FeBrKBtCLQXVSL6Ker4xC51%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;622&quot; data-filename=&quot;스크린샷 2022-05-29 오후 7.40.09.png&quot; data-origin-width=&quot;1282&quot; data-origin-height=&quot;1380&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;</description>
      <category>Tools/Teminal</category>
      <category>brew</category>
      <category>Customizing</category>
      <category>hombrew</category>
      <category>iterm</category>
      <category>oh-my-zsh</category>
      <category>terminal</category>
      <category>zsh</category>
      <category>꾸미기</category>
      <category>터미널</category>
      <author>나아가는중</author>
      <guid isPermaLink="true">https://dlee0129.tistory.com/256</guid>
      <comments>https://dlee0129.tistory.com/256#entry256comment</comments>
      <pubDate>Tue, 31 May 2022 20:50:04 +0900</pubDate>
    </item>
    <item>
      <title>[LeetCode] 8. String to Integer (atoi) (Java)</title>
      <link>https://dlee0129.tistory.com/255</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;문제&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Implement the &lt;span style=&quot;background-color: #f6f9fa;&quot;&gt;myAtoi(string s)&lt;/span&gt; function, which converts a string to a 32-bit signed integer (similar to C/C++'s atoi function).&lt;br /&gt;문자열을 32비트 부호 있는 정수로 변환하는 &lt;span style=&quot;background-color: #f6f9fa;&quot;&gt;myAtoi(string s)&lt;/span&gt;함수를 구현합니다(C/C++의 atoi함수와 유사).&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;The algorithm for &lt;span style=&quot;background-color: #f6f9fa;&quot;&gt;myAtoi(string s)&lt;/span&gt; is as follows:&lt;br /&gt;&lt;span style=&quot;background-color: #f6f9fa;&quot;&gt;myAtoi(string s)&lt;/span&gt;의 알고리즘은 다음과 같습니다:&lt;/p&gt;
&lt;ol style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Read in and ignore any leading whitespace. 공백을 읽고 무시하세요.&lt;/li&gt;
&lt;li&gt;Check if the next character (if not already at the end of the string) is '-' or '+'. 다음 문자(문자열 끝에 아직 없는 경우)가 '-' 또는 '+'인지 확인합니다. Read this character in if it is either. 둘 중 하나인 경우 이 문자를 읽으세요. This determines if the final result is negative or positive respectively. 이것은 최종 결과가 음수인지 양수인지를 결정합니다. Assume the result is positive if neither is present. 둘 다 없으면 결과가 양수라고 가정합니다.&lt;/li&gt;
&lt;li&gt;Read in next the characters until the next non-digit character or the end of the input is reached. 다음 문자가 숫자가 아닌 문자 또는 입력의 끝에 도달할 때까지 다음 문자를 읽으세요. The rest of the string is ignored. 나머지 문자열은 무시됩니다.&lt;/li&gt;
&lt;li&gt;Convert these digits into an integer (i.e. &quot;123&quot; -&amp;gt; 123, &quot;0032&quot; -&amp;gt; 32). 이 숫자들을 정수로 변환합니다 (예: &quot;123&quot; -&amp;gt; 123, &quot;0032&quot; -&amp;gt; 32). If no digits were read, then the integer is 0. 읽은 숫자가 없다면 정수는 0입니다. Change the sign as necessary (from step 2). 필요에 따라 부호를 변경합니다 (2단계로부터).&lt;/li&gt;
&lt;li&gt;If the integer is out of the 32-bit signed integer range [-231, 231 - 1], then clamp the integer so that it remains in the range. 정수가 32비트 부호 있는 정수 범위 [-231, 231 - 1]를 벗어나면 해당 범위에 남아 있는 정수를 클램프합니다. Specifically, integers less than -231 should be clamped to -231, and integers greater than 231 - 1 should be clamped to 231 - 1. 특히, 정수가 -231보다 작은 경우 -231로, 231 -1보다 큰 정수는 231 -1로 고정해야 합니다.&lt;/li&gt;
&lt;li&gt;Return the integer as the final result. 정수를 최종 결과로 반환하세요.&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Note:&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;Only the space character ' ' is considered a whitespace character. 공백 문자 ' '만 공백 문자로 간주됩니다.&lt;/li&gt;
&lt;li&gt;Do not ignore any characters other than the leading whitespace or the rest of the string after the digits. 공백 또는 숫자 뒤의 나머지 문자열 이외의 문자를 무시하지 마세요.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;Example 1:&lt;/h3&gt;
&lt;pre class=&quot;pgsql&quot;&gt;&lt;code&gt;Input: s = &quot;42&quot;
Output: 42
Explanation: The underlined characters are what is read in, the caret is the current reader position. 
Step 1: &quot;42&quot; (no characters read because there is no leading whitespace)
         ^
Step 2: &quot;42&quot; (no characters read because there is neither a '-' nor '+')
         ^
Step 3: &quot;42&quot; (&quot;42&quot; is read in)
           ^
The parsed integer is 42.
Since 42 is in the range [-231, 231 - 1], the final result is 42.&lt;/code&gt;&lt;/pre&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;Example 2:&lt;/h3&gt;
&lt;pre class=&quot;vim&quot;&gt;&lt;code&gt;Input: s = &quot;   -42&quot;
Output: -42
Explanation:
Step 1: &quot;   -42&quot; (leading whitespace is read and ignored)
            ^
Step 2: &quot;   -42&quot; ('-' is read, so the result should be negative)
             ^
Step 3: &quot;   -42&quot; (&quot;42&quot; is read in)
               ^
The parsed integer is -42.
Since -42 is in the range [-231, 231 - 1], the final result is -42.&lt;/code&gt;&lt;/pre&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;Example 3:&lt;/h3&gt;
&lt;pre class=&quot;applescript&quot;&gt;&lt;code&gt;Input: s = &quot;4193 with words&quot;
Output: 4193
Explanation:
Step 1: &quot;4193 with words&quot; (no characters read because there is no leading whitespace)
         ^
Step 2: &quot;4193 with words&quot; (no characters read because there is neither a '-' nor '+')
         ^
Step 3: &quot;4193 with words&quot; (&quot;4193&quot; is read in; reading stops because the next character is a non-digit)
             ^
The parsed integer is 4193.
Since 4193 is in the range [-231, 231 - 1], the final result is 4193.&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;제약조건:&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;0 &amp;lt;= s.length &amp;lt;= 200&lt;/li&gt;
&lt;li&gt;s consists of English letters (lower-case and upper-case), digits (0-9), ' ', '+', '-', and '.'.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;문제 풀이&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;문제 설명이 너무 복잡하고 이해하기 어려웠던 문제였습니다.&lt;/p&gt;
&lt;ol style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;문자열의 첫번째 단어(?)에서만 계산합니다.
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;첫번째 단어가 숫자가 아닐 수 있습니다.
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;if 문의 마지막 else에 해당, return 0;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;빈 문자열이 주어질 수 있습니다.
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;if 문의 처음에 해당, 길이 비교하여 return 0;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;단어의 앞에 부호가 붙어 있는 경우가 있습니다.
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;부호가 있는 경우는 부호 뒤는 숫자로만 이루어져있습니다. 부호 뒤에 단어가 오는 경우는 없습니다.&lt;/li&gt;
&lt;li&gt;부호 뒤의 숫자를 계산한다음 부호를 붙여 return 합니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;숫자로만 이루어져있는 경우가 있습니다.&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;소스코드&lt;/h2&gt;
&lt;pre class=&quot;pgsql&quot;&gt;&lt;code&gt;class Solution {
    public static int myAtoi(String s) {
        String str = s.stripLeading().split(&quot;\\s+&quot;)[0];

        if (str.length() == 0) {
            return 0;
        } else if (str.charAt(0) == '+') {
            return convert(str.substring(1), false);
        } else if (str.charAt(0) == '-') {
            return convert(str.substring(1), true);
        } else if (Character.isDigit(str.charAt(0))) {
            return convert(str, false);
        } else {
            return 0;
        }
    }

    public static int convert(String s, boolean isNegative) {
        long value = 0;

        for (int idx = 0; idx &amp;lt; s.length() &amp;amp;&amp;amp; Character.isDigit(s.charAt(idx)); idx++) {
            value = value * 10 + Character.getNumericValue(s.charAt(idx));

            if (value &amp;gt; Integer.MAX_VALUE) {
                return isNegative ? Integer.MIN_VALUE : Integer.MAX_VALUE;
            }
        }

        return (int) (isNegative ? -value : value);
    }
}&lt;/code&gt;&lt;/pre&gt;</description>
      <category>알고리즘(Algorithm)/LeetCode</category>
      <category>Algorithm</category>
      <category>Java</category>
      <category>leetcode</category>
      <category>String to Integer</category>
      <category>번역</category>
      <category>알고리즘</category>
      <category>자바</category>
      <author>나아가는중</author>
      <guid isPermaLink="true">https://dlee0129.tistory.com/255</guid>
      <comments>https://dlee0129.tistory.com/255#entry255comment</comments>
      <pubDate>Mon, 30 May 2022 17:51:56 +0900</pubDate>
    </item>
    <item>
      <title>[LeetCode] 7. Reverse Integer (Java)</title>
      <link>https://dlee0129.tistory.com/254</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;문제&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Given a signed 32-bit integer &lt;span style=&quot;background-color: #f6f9fa;&quot;&gt;x&lt;/span&gt;, return &lt;span style=&quot;background-color: #f6f9fa;&quot;&gt;x&lt;/span&gt; with its digits reversed. If reversing &lt;span style=&quot;background-color: #f6f9fa;&quot;&gt;x&lt;/span&gt; causes the value to go outside the signed 32-bit integer range &lt;span style=&quot;background-color: #f6f9fa;&quot;&gt;[-231, 231 - 1]&lt;/span&gt;, then return &lt;span style=&quot;background-color: #f6f9fa;&quot;&gt;0&lt;/span&gt;.&lt;br /&gt;부호 있는 32비트 정수 &lt;span style=&quot;background-color: #f6f9fa;&quot;&gt;x&lt;/span&gt;이 주어지면 숫자가 반전된 &lt;span style=&quot;background-color: #f6f9fa;&quot;&gt;x&lt;/span&gt;를 반환합니다. &lt;span style=&quot;background-color: #f6f9fa;&quot;&gt;x&lt;/span&gt;를 반전하면 값이 부호 있는 32비트 정수 범위 &lt;span style=&quot;background-color: #f6f9fa;&quot;&gt;[-231, 231 - 1]&lt;/span&gt;를 벗어나면 0을 반환합니다.&lt;br /&gt;&lt;br /&gt;&lt;b&gt; Assume the environment does not allow you to store 64-bit integers (signed or unsigned).&lt;/b&gt;&lt;br /&gt;&lt;b&gt;65비트 정수(부호가 있거나 없는)를 저장할 수 없는 환경이라고 가정합니다.&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;Example 1:&lt;/h3&gt;
&lt;pre class=&quot;yaml&quot;&gt;&lt;code&gt;Input: x = 123
Output: 321&lt;/code&gt;&lt;/pre&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;Example 2:&lt;/h3&gt;
&lt;pre class=&quot;yaml&quot;&gt;&lt;code&gt;Input: x = -123
Output: -321&lt;/code&gt;&lt;/pre&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;Example 3:&lt;/h3&gt;
&lt;pre class=&quot;yaml&quot;&gt;&lt;code&gt;Input: x = 120
Output: 21&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;제약조건:&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;-231 &amp;lt;= x &amp;lt;= 231 - 1&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;문제 풀이&lt;/h2&gt;
&lt;ol style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;x를 다음과 같은 방법으로 반전합니다.
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;answer * 10 + x % 10
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;반전한 값을 * 10하여 한자리 앞으로 옮김니다.&lt;/li&gt;
&lt;li&gt;x의 10의 자리 수를 맨 뒤에 추가합니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;while (x != 0) x가 0이 될때까지 반복합니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;32비트 정수 범위를 넘어가는지 확인합니다.
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;overflowCheck 변수를 사용하여 새로 구한 값을 역으로 계산했을 때, 이전 값과 같은지 비교합니다.&lt;/li&gt;
&lt;li&gt;범위를 넘어가는 경우 두 값이 다릅니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;소스코드&lt;/h2&gt;
&lt;pre class=&quot;angelscript&quot;&gt;&lt;code&gt;class Solution {
    public int reverse(int x) {
        int answer = 0;

        while (x != 0) {
            int overflowCheck = answer * 10 + x % 10;

            if ((overflowCheck - x % 10) / 10 != answer) {
                return  0;
            }

            x /= 10;
            answer = overflowCheck;
        }

        return answer;
    }
}&lt;/code&gt;&lt;/pre&gt;</description>
      <category>알고리즘(Algorithm)/LeetCode</category>
      <category>Algorithm</category>
      <category>Jaba</category>
      <category>leetcode</category>
      <category>Reverse Integer</category>
      <category>번역</category>
      <author>나아가는중</author>
      <guid isPermaLink="true">https://dlee0129.tistory.com/254</guid>
      <comments>https://dlee0129.tistory.com/254#entry254comment</comments>
      <pubDate>Sun, 29 May 2022 15:24:37 +0900</pubDate>
    </item>
    <item>
      <title>[LeetCode] 6. Zigzag Converstion (Java)</title>
      <link>https://dlee0129.tistory.com/253</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;문제&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;The string &lt;span style=&quot;background-color: #f6f9fa;&quot;&gt;&quot;PAYPALISHIRING&quot;&lt;/span&gt; is written in a zigzag pattern on a given number of rows like this: (you may want to display this pattern in a fixed font for better legibility)&lt;br /&gt;문자열 &lt;span style=&quot;background-color: #f6f9fa;&quot;&gt;&quot;PAYPALISHIRING&quot;&lt;/span&gt;은 다음과 같이 주어진 수의 행들에 지그재그 패턴으로 작성되어있습니다.(가독성을 높이기 위해 이 패턴을 고정 글꼴로 표시할 수 있습니다.)&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;
&lt;pre class=&quot;tp&quot;&gt;&lt;code&gt;P   A   H   N
A P L S I I G
Y   I   R&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;And then read line by line: &lt;span style=&quot;background-color: #f6f9fa;&quot;&gt;&quot;PAYPALISHIRING&quot;&lt;/span&gt;&lt;br /&gt;그런 다음 한 줄씩 읽습니다: &lt;span style=&quot;background-color: #f6f9fa;&quot;&gt;&quot;PAYPALISHIRING&quot;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;문자열을 가져가고 주어진 수의 행들을 변환하는 코드를 작성하세요:&lt;/p&gt;
&lt;pre class=&quot;cpp&quot;&gt;&lt;code&gt;string convert(string s, int numRows);&lt;/code&gt;&lt;/pre&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;Example 1:&lt;/h3&gt;
&lt;pre class=&quot;avrasm&quot;&gt;&lt;code&gt;Input: s = &quot;PAYPALISHIRING&quot;, numRows = 3
Output: &quot;PAHNAPLSIIGYIR&quot;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;Example 2:&lt;/h3&gt;
&lt;pre class=&quot;properties&quot;&gt;&lt;code&gt;Input: s = &quot;PAYPALISHIRING&quot;, numRows = 4
Output: &quot;PINALSIGYAHRPI&quot;
Explanation:
P     I    N
A   L S  I G
Y A   H R
P     I&lt;/code&gt;&lt;/pre&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;Example 3:&lt;/h3&gt;
&lt;pre class=&quot;avrasm&quot;&gt;&lt;code&gt;Input: s = &quot;A&quot;, numRows = 1
Output: &quot;A&quot;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;제약조건:&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;1 &amp;lt;= s.length &amp;lt;= 1000&lt;/li&gt;
&lt;li&gt;s consists of English letters (lower-case and upper-case), ',' and '.'.&lt;/li&gt;
&lt;li&gt;1 &amp;lt;= numRows &amp;lt;= 1000&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;문제 풀이&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;StringBuilder 배열을 사용함으로 같은 줄의 문자들을 동시에 저장하여 사용하도록 하였습니다.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;단어를 배열하는 방향은 '아래'와 '대각선 위' 두가지 입니다.&lt;br /&gt;boolean 타입의 down 변수는 방향을 나타냅니다.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;어떤 행에 저장할지 cur_row 변수를 사용하였습니다.&lt;br /&gt;행은 방향에 따라서 이동하도록 하였습니다.&lt;br /&gt;맨 아래를 도달한경우와 다시 맨 위를 도달한 경우 방향을 변경하도록 하였습니다.&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;소스코드&lt;/h2&gt;
&lt;pre class=&quot;angelscript&quot;&gt;&lt;code&gt;class Solution {
    public String convert(String s, int numRows) {
        if (numRows == 1) {
            return s;
        }

        StringBuilder[] zigzag = new StringBuilder[numRows];
        int idx = 0, cur_row = 0;
        boolean down = true;

        for (int i = 0; i &amp;lt; numRows; i++) {
            zigzag[i] = new StringBuilder();
        }

        while (idx != s.length()) {
            zigzag[cur_row].append(s.charAt(idx++));

            cur_row = down ? cur_row + 1 : cur_row - 1;
            down = (cur_row == numRows - 1 || cur_row == 0) != down;
        }

        StringBuilder answer = new StringBuilder();
        for (StringBuilder sb : zigzag) {
            answer.append(sb);
        }

        return answer.toString();
    }
}&lt;/code&gt;&lt;/pre&gt;</description>
      <category>알고리즘(Algorithm)/LeetCode</category>
      <category>Algorithm</category>
      <category>conversion</category>
      <category>Java</category>
      <category>leetcode</category>
      <category>zigzag</category>
      <author>나아가는중</author>
      <guid isPermaLink="true">https://dlee0129.tistory.com/253</guid>
      <comments>https://dlee0129.tistory.com/253#entry253comment</comments>
      <pubDate>Thu, 26 May 2022 23:29:42 +0900</pubDate>
    </item>
    <item>
      <title>[Intellij] Custom Template 만들어 사용하기</title>
      <link>https://dlee0129.tistory.com/252</link>
      <description>&lt;h4 data-ke-size=&quot;size20&quot;&gt;Intellij Custom Template 만들어 사용하기&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Intellij에서 보통 템플릿이라고하면&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;Live Template&lt;/b&gt;을 생각할테지만, Live Template은 함수를 템플릿화하여 사용하기는 편해도 클래스 생성에서 사용하기는 불편한 점이 많다고 생각합니다.&lt;br /&gt;&lt;br /&gt;여기에서 소개해드릴 내용은&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;Class 파일을 Template으로 저장하여 쉽게 활용하는 방법&lt;/b&gt;입니다.&lt;br /&gt;&lt;br /&gt;Spring 프로젝트를 하며 Domain에서 @Entity, @Getter, @Id등 공통으로 사용되는 코드들을 매번 입력하지 않고 편하게 사용할 수 있습니다.&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;b&gt;1. 템플릿화할 클래스 파일을 작성합니다&lt;/b&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-filename=&quot;스크린샷 2022-05-23 오후 11.53.16.png&quot; data-origin-width=&quot;424&quot; data-origin-height=&quot;558&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/R6ioo/btrC2CnCnLW/nEm600mkmA4rVvdi0J7Xv0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/R6ioo/btrC2CnCnLW/nEm600mkmA4rVvdi0J7Xv0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/R6ioo/btrC2CnCnLW/nEm600mkmA4rVvdi0J7Xv0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FR6ioo%2FbtrC2CnCnLW%2FnEm600mkmA4rVvdi0J7Xv0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;323&quot; height=&quot;425&quot; data-filename=&quot;스크린샷 2022-05-23 오후 11.53.16.png&quot; data-origin-width=&quot;424&quot; data-origin-height=&quot;558&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;&lt;b&gt;2. Intellij 상단의 Tools -&amp;gt; Save File as Template...를 선택해줍니다.&lt;/b&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-filename=&quot;스크린샷 2022-05-23 오후 11.51.31.png&quot; data-origin-width=&quot;542&quot; data-origin-height=&quot;1008&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bxM9k3/btrC1hdQfE9/fCXYUcqPYsgtg94PbNUX41/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bxM9k3/btrC1hdQfE9/fCXYUcqPYsgtg94PbNUX41/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bxM9k3/btrC1hdQfE9/fCXYUcqPYsgtg94PbNUX41/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbxM9k3%2FbtrC1hdQfE9%2FfCXYUcqPYsgtg94PbNUX41%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;325&quot; height=&quot;604&quot; data-filename=&quot;스크린샷 2022-05-23 오후 11.51.31.png&quot; data-origin-width=&quot;542&quot; data-origin-height=&quot;1008&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;&lt;b&gt;3. 저장할 Template 이름을 입력하시고 OK버튼을 선택해줍니다.&lt;/b&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-filename=&quot;스크린샷 2022-05-23 오후 11.52.13.png&quot; data-origin-width=&quot;1306&quot; data-origin-height=&quot;1892&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bBVHOh/btrC2f7En7K/I5iY0HaAebJ0pXIiAdC66K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bBVHOh/btrC2f7En7K/I5iY0HaAebJ0pXIiAdC66K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bBVHOh/btrC2f7En7K/I5iY0HaAebJ0pXIiAdC66K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbBVHOh%2FbtrC2f7En7K%2FI5iY0HaAebJ0pXIiAdC66K%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;537&quot; height=&quot;778&quot; data-filename=&quot;스크린샷 2022-05-23 오후 11.52.13.png&quot; data-origin-width=&quot;1306&quot; data-origin-height=&quot;1892&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;&lt;b&gt;4. 이제 파일을 생성할때 새로 만든 템플릿이 목록에 추가되어있습니다. &lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;해당 템플릿으로 클래스를 만들어 보겠습니다. 템플릿을 선택합니다.&lt;/b&gt;&lt;/blockquote&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2022-05-23 오후 11.52.40.png&quot; data-origin-width=&quot;1116&quot; data-origin-height=&quot;1450&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ldpyL/btrC179qUgL/3Tk28erF3Vkz9SmU4X3Zv1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ldpyL/btrC179qUgL/3Tk28erF3Vkz9SmU4X3Zv1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ldpyL/btrC179qUgL/3Tk28erF3Vkz9SmU4X3Zv1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FldpyL%2FbtrC179qUgL%2F3Tk28erF3Vkz9SmU4X3Zv1%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;485&quot; height=&quot;630&quot; data-filename=&quot;스크린샷 2022-05-23 오후 11.52.40.png&quot; data-origin-width=&quot;1116&quot; data-origin-height=&quot;1450&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;blockquote data-ke-style=&quot;style2&quot;&gt;&lt;b&gt;5. 새로 만들 Class명을 입력합니다.&lt;/b&gt;&lt;/blockquote&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2022-05-23 오후 11.53.04.png&quot; data-origin-width=&quot;810&quot; data-origin-height=&quot;248&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bpCtjV/btrC1iwXFfC/TUsNNzayLX2F5wywmlKnuK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bpCtjV/btrC1iwXFfC/TUsNNzayLX2F5wywmlKnuK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bpCtjV/btrC1iwXFfC/TUsNNzayLX2F5wywmlKnuK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbpCtjV%2FbtrC1iwXFfC%2FTUsNNzayLX2F5wywmlKnuK%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;175&quot; data-filename=&quot;스크린샷 2022-05-23 오후 11.53.04.png&quot; data-origin-width=&quot;810&quot; data-origin-height=&quot;248&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;blockquote data-ke-style=&quot;style2&quot;&gt;&lt;b&gt;6. Test 클래스가 새로 만든 템플릿으로 만들어지고, @Entity 등의 어노테이션들이 같이 생성됩니다.&lt;/b&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-filename=&quot;스크린샷 2022-05-23 오후 11.53.16.png&quot; data-origin-width=&quot;424&quot; data-origin-height=&quot;558&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b7dEDr/btrC0PBdwDw/9aHjJB8lZk0nSS1yqv4Mq1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b7dEDr/btrC0PBdwDw/9aHjJB8lZk0nSS1yqv4Mq1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b7dEDr/btrC0PBdwDw/9aHjJB8lZk0nSS1yqv4Mq1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb7dEDr%2FbtrC0PBdwDw%2F9aHjJB8lZk0nSS1yqv4Mq1%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;424&quot; height=&quot;558&quot; data-filename=&quot;스크린샷 2022-05-23 오후 11.53.16.png&quot; data-origin-width=&quot;424&quot; data-origin-height=&quot;558&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;</description>
      <category>Tools/Intellij</category>
      <category>custom</category>
      <category>Entity</category>
      <category>IntelliJ</category>
      <category>Spring</category>
      <category>template</category>
      <author>나아가는중</author>
      <guid isPermaLink="true">https://dlee0129.tistory.com/252</guid>
      <comments>https://dlee0129.tistory.com/252#entry252comment</comments>
      <pubDate>Tue, 24 May 2022 22:45:20 +0900</pubDate>
    </item>
    <item>
      <title>[SpringJPA] @Embeddable &amp;amp; @Embedded (Value Type)</title>
      <link>https://dlee0129.tistory.com/251</link>
      <description>&lt;h3&gt;@Embeddable &amp;amp; @Embedded&lt;/h3&gt;
&lt;p&gt;&lt;b&gt;Spring JPA 에서 제공하는 기능&lt;/b&gt;으로, 다양한 값 타입(value type)으로 구성된 엔티티(Entity) 클래스를 더 나은 &lt;b&gt;추상화 및 재사용성을 위해 사용&lt;/b&gt;됩니다.&lt;/p&gt;
&lt;h5&gt;User&lt;/h5&gt;
&lt;pre&gt;&lt;code&gt;@Entity
public class User {
    @Id @GeneratedValue
    private Long id;

    private String firstName;
    private String middleName;
    private String LastName;

    private String city;
    private String street;
    private String zipcode;
}&lt;/code&gt;&lt;/pre&gt;&lt;p&gt; 테이블의 구조는 괜찮지만  &lt;span style='background-color:#f6f9fa'&gt;Name&lt;/span&gt;과  &lt;span style='background-color:#f6f9fa'&gt;Address&lt;/span&gt;를 재사용하고 여러 엔티티에 사용하기에는 부적절합니다.&lt;br&gt;&lt;br&gt;&lt;br&gt;Name과 Address 클래스를 만들고 &lt;b&gt;@Embeddable&lt;/b&gt;을 사용하여 클래스가 다른 엔티티에 포함되어야 함을 선언합니다.&lt;/p&gt;
&lt;h5&gt;Name&lt;/h5&gt;
&lt;pre&gt;&lt;code&gt;@Embeddable
public class Name {
    private String firstName;
    private String middleName;
    private String LastName;
}&lt;/code&gt;&lt;/pre&gt;&lt;h5&gt;Address&lt;/h5&gt;
&lt;pre&gt;&lt;code&gt;@Embeddable
public class Address {
    private String city;
    private String street;
    private String zipcode;
}&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;이제 User 모델을 설게할때 Name과 Address 타입을 포함하여 생성합니다.&lt;/p&gt;
&lt;h5&gt;User&lt;/h5&gt;
&lt;pre&gt;&lt;code&gt;@Entity
public class User {
    @Id @GeneratedValue
    private Long id;

    @Embedded
    private Name name;

    @Embedded
    private Address address;
}&lt;/code&gt;&lt;/pre&gt;</description>
      <category>웹, 앱 개발/Spring</category>
      <category>@Embeddable</category>
      <category>@Embedded</category>
      <category>JPA</category>
      <category>Spring</category>
      <category>Value Type</category>
      <author>나아가는중</author>
      <guid isPermaLink="true">https://dlee0129.tistory.com/251</guid>
      <comments>https://dlee0129.tistory.com/251#entry251comment</comments>
      <pubDate>Mon, 23 May 2022 23:28:34 +0900</pubDate>
    </item>
    <item>
      <title>[Github] DS.Store 파일이란? 삭제 방법</title>
      <link>https://dlee0129.tistory.com/250</link>
      <description>&lt;h3&gt;.DS_Store 파일이란?&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;DS.Store 파일은 Desktop Services Store의 약자로, macOS 운영체제에서 Finder로 폴더를 볼 때마다 자동으로 생성됩니다.&lt;/li&gt;
&lt;li&gt;숨김 파일로 존재하며, 이 파일은 해당 폴더를 공유하는 모든 곳에서 따라 다닙니다.&lt;/li&gt;
&lt;li&gt;폴더의 사용자 정의 속성/메터데이터 등의 정보를 저장합니다.&lt;/li&gt;
&lt;li&gt;이 파일을 통해 보안 침해가 발생할 수 있습니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;br&gt;

&lt;h3&gt;.DS_Store 파일 확인하기&lt;/h3&gt;
&lt;p&gt;확인할 경로에서 터미널에 다음의 명령어를 실행합니다.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;ls -a | grep .DS_Store&lt;/code&gt;&lt;/pre&gt;&lt;br&gt;
git의 경우에는 별도의 설정을 하지 않으면 자동으로 .DS_Store 파일이 올라갑니다.  
&lt;br&gt;&lt;br&gt;
git에 들어가서 .DS_Store 파일이 있는지 확인해보세요.

&lt;br&gt;

&lt;h3&gt;.DS_Store 파일 제거하기&lt;/h3&gt;
&lt;p&gt;삭제할 경로에서 터미널의 다음의 명령어를 실행합니다.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;rm .DS_Store&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;하지만, 모든 .DS_Store 파일을 위와 같은 방법으로 제거하기는 너무 많은 비용이 발생합니다.&lt;br&gt;&lt;br&gt;&lt;br&gt;근본적인 해결방법은 아래에 소개하겠습니다.&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;b&gt;git에서 .DS_Store 파일을 제거&lt;/b&gt;하는 방법은 다음과 같습니다.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;.DS_Store 파일을 제거합니다.&lt;ul&gt;
&lt;li&gt;위의 명령어들을 사용합니다.&lt;/li&gt;
&lt;li&gt;git에 올라가있는 .DS_Store 파일이 없는 경우 1번은 생략하면 됩니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;.gitignore 파일에 .DS_Store를 추가합니다.&lt;ul&gt;
&lt;li&gt;gitignore 파일이 존재하지 않다면 아래의 명령어를 실행하시면 됩니다. &lt;ul&gt;
&lt;li&gt;echo .DS_Store &amp;gt;&amp;gt; .gitignore&lt;ul&gt;
&lt;li&gt;gitignore 파일의 경로는 repository의 최상위에 위치합니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;git push를 하여 gitignore 파일을 추가해줍니다.&lt;/li&gt;
&lt;/ol&gt;
&lt;br&gt;

&lt;h3&gt;.DS_Store 생성하지 않도록 하는 방법&lt;/h3&gt;
&lt;p&gt;터미널을 열어 아래 명령어를 수행합니다.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;com.apple.desktopservices DSDontWriteNetworkStores true&lt;/code&gt;&lt;/pre&gt;&lt;br&gt;
추후에 설정을 바꾸시고 싶다면 마지막 true 값을 false로 변경하시면 됩니다.</description>
      <category>Github</category>
      <category>.DS_Store</category>
      <category>Git</category>
      <category>GitHub</category>
      <category>gitignore</category>
      <author>나아가는중</author>
      <guid isPermaLink="true">https://dlee0129.tistory.com/250</guid>
      <comments>https://dlee0129.tistory.com/250#entry250comment</comments>
      <pubDate>Thu, 19 May 2022 23:54:43 +0900</pubDate>
    </item>
    <item>
      <title>[SpringBoot] Query Parameter Log (쿼리 파라미터 로그) 남기기</title>
      <link>https://dlee0129.tistory.com/249</link>
      <description>&lt;pre&gt;&lt;code&gt;insert 
    into
        member
        (username, id) 
    values
        (?, ?)&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;위의 로그처럼 SpringBoot 개발을 하면서 실행시킨 &lt;b&gt;쿼리의 파라미터가 &amp;#39;?&amp;#39; 로 표시&lt;/b&gt;되어 어떤 값인지 확인이 불가능합니다.&lt;br&gt;&lt;br&gt;&lt;br&gt;다음의 설정을 통해 쿼리 파라미터 값을 확인할 수 있습니다.&lt;/p&gt;
&lt;h4&gt;yml 파일 속성 추가&lt;/h4&gt;
&lt;pre&gt;&lt;code&gt;# application.yml

logging:
  level:
    org.hibernate.type: trace&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;application.yml 파일에 위의 속성을 추가하면 쿼리 아래에 다음과 같이 파라미터 값 로그가 남습니다.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;... : binding parameter [1] as [VARCHAR] - [memberA]
... : binding parameter [2] as [BIGINT] - [1]&lt;/code&gt;&lt;/pre&gt;&lt;br&gt;

&lt;h4&gt;P6Spy 라이브러리 사용&lt;/h4&gt;
&lt;p&gt; Git: &lt;a href=&quot;https://github.com/gavlyukovskiy/spring-boot-data-source-decorator&quot;&gt;https://github.com/gavlyukovskiy/spring-boot-data-source-decorator&lt;/a&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;# build.gradle

implementation &amp;quot;com.github.gavlyukovskiy:p6spy-spring-boot-starter:1.8.0&amp;quot;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;build.gradel 파일에 라이브러리를 추가하면 쿼리 아래에 p6spy 로그와 원본 쿼리와 파라미터가 보이는 쿼리 로그가 남습니다.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;insert into member (username, id) values (?, ?)
insert into member (username, id) values (&amp;#39;memberA&amp;#39;, 1);&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;P6Ssy에서 제공하는 설정들을 사용하여 다듬을 수 있습니다.&lt;/p&gt;</description>
      <category>웹, 앱 개발/Spring</category>
      <category>P6SPY</category>
      <category>Trace</category>
      <category>로그</category>
      <category>쿼리</category>
      <category>파라미터</category>
      <author>나아가는중</author>
      <guid isPermaLink="true">https://dlee0129.tistory.com/249</guid>
      <comments>https://dlee0129.tistory.com/249#entry249comment</comments>
      <pubDate>Thu, 19 May 2022 19:58:57 +0900</pubDate>
    </item>
    <item>
      <title>[LeetCode] 5. Longest Palindromic Substring (Java)</title>
      <link>https://dlee0129.tistory.com/248</link>
      <description>&lt;h2&gt;문제&lt;/h2&gt;
&lt;p&gt;Given a string s, return the longest palindromic substring in s.&lt;br&gt;문자열 s가 주어지면, s에서 가장 긴 회문(palindromic) 부분 문자열을 반환하세요.&lt;/p&gt;
&lt;br&gt;

&lt;pre&gt;&lt;code&gt;회문이란?

회문(回文) 또는 팰린드롬(palindrome)은 거꾸로 읽어도 제대로 읽는 것과 같은 문장이나 낱말, 숫자, 문자열(sequence of characters) 등이다. 보통 낱말 사이에 있는 띄어쓰기나 문장 부호는 무시한다.

출처: 회문 - 위키백과&lt;/code&gt;&lt;/pre&gt;&lt;br&gt;

&lt;h3&gt;Example 1:&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;Input: s = &amp;quot;babad&amp;quot;
Output: &amp;quot;bab&amp;quot;
Explanation: &amp;quot;aba&amp;quot; is also a valid answer.&lt;/code&gt;&lt;/pre&gt;&lt;h3&gt;Example 2:&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;Input: s = &amp;quot;cbbd&amp;quot;
Output: &amp;quot;bb&amp;quot;&lt;/code&gt;&lt;/pre&gt;&lt;h3&gt;제약 사항:&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;1 &amp;lt;= s.length &amp;lt;= 1000&lt;/li&gt;
&lt;li&gt;s consist of only digits and English letters. (s는 숫자와 영문자로만 포함합니다.)&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;문제 풀이&lt;/h2&gt;
&lt;p&gt;!&lt;del&gt;~ 제가 푼 방법은 빠른 방법은 아닙니다... DP를 사용해서 푸는 방법도 있지만, 워낙 유명한 방법이고 비슷한 문제가 많으므로 다른 방식으로 접근해봤습니다. ~&lt;/del&gt;!&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;문자열의 길이부터 1이상까지 회문을 찾습니다.&lt;ul&gt;
&lt;li&gt;예제의 babad의 경우&lt;ul&gt;
&lt;li&gt;b(0) ~ d(4) 길이 5&lt;/li&gt;
&lt;li&gt;b(0) ~ a(3) 길이 4&lt;/li&gt;
&lt;li&gt;a(1) ~ d(4) 길이 4&lt;/li&gt;
&lt;li&gt;b(0) ~ b(2) 길이 3&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;최대길이 부터 하나씩 줄여가며 회문을 찾아 리턴하는 방식입니다.&lt;/li&gt;
&lt;/ol&gt;
&lt;h2&gt;소스 코드&lt;/h2&gt;
&lt;pre&gt;&lt;code&gt;class Solution {
    public String longestPalindrome(String s) {
        for (int len = s.length(); len &amp;gt; 1; len--) {
            for (int idx = 0; idx + len &amp;lt;= s.length(); idx++) {
                boolean isValid = true;

                for (int i = 0; i &amp;lt; len / 2; i++) {
                    if (s.charAt(idx + i) != s.charAt(idx + len - i - 1)) {
                        isValid = false;
                        break;
                    }
                }

                if (isValid) {
                    return s.substring(idx, idx + len);
                }
            }
        }

        return s.substring(0, 1);
    }
}&lt;/code&gt;&lt;/pre&gt;</description>
      <category>알고리즘(Algorithm)/LeetCode</category>
      <category>Java</category>
      <category>leetcode</category>
      <category>Longest Palindromic Substring</category>
      <category>가장 긴 회문</category>
      <category>릿코드</category>
      <category>자바</category>
      <author>나아가는중</author>
      <guid isPermaLink="true">https://dlee0129.tistory.com/248</guid>
      <comments>https://dlee0129.tistory.com/248#entry248comment</comments>
      <pubDate>Wed, 18 May 2022 22:26:01 +0900</pubDate>
    </item>
    <item>
      <title>[LeetCode] 4. Median of Two Sorted Arrays (Java)</title>
      <link>https://dlee0129.tistory.com/247</link>
      <description>&lt;h2&gt;문제&lt;/h2&gt;
&lt;p&gt;Given two sorted arrays nums1 and nums2 of size m and n respectively, return the median of the two sorted arrays.&lt;br&gt;크기가 각각 m 및 n인 두 개의 정렬된 배열 nums1 및 num2가 주어질 때, 두 개의 정렬된 배열의 중간값을 반환합니다.&lt;br&gt;&lt;br&gt;&lt;br&gt;The overall run time complexity should be O(log (m+n)).&lt;br&gt;전체 시간복잡도는 O(log(m+n))이어야 합니다.&lt;/p&gt;
&lt;br&gt;
&lt;br&gt;

&lt;h3&gt;Example 1:&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;Input: nums1 = [1,3], nums2 = [2]
Output: 2.00000
Explanation: merged array = [1,2,3] and median is 2.&lt;/code&gt;&lt;/pre&gt;&lt;h3&gt;Example 2:&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;Input: nums1 = [1,2], nums2 = [3,4]
Output: 2.50000
Explanation: merged array = [1,2,3,4] and median is (2 + 3) / 2 = 2.5.&lt;/code&gt;&lt;/pre&gt;&lt;h3&gt;제약 사항:&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;nums1.length == m&lt;/li&gt;
&lt;li&gt;nums2.length == n&lt;/li&gt;
&lt;li&gt;0 &amp;lt;= m &amp;lt;= 1000&lt;/li&gt;
&lt;li&gt;0 &amp;lt;= n &amp;lt;= 1000&lt;/li&gt;
&lt;li&gt;1 &amp;lt;= m + n &amp;lt;= 2000&lt;/li&gt;
&lt;li&gt;-106 &amp;lt;= nums1[i], nums2[i] &amp;lt;= 106&lt;/li&gt;
&lt;/ul&gt;
&lt;br&gt;

&lt;h2&gt;문제 풀이&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;각 배열의 인덱스를 저장하는 변수를 설정합니다.&lt;/li&gt;
&lt;li&gt;중간값을 찾을때까지 값들을 저장할 배열을 만듭니다.&lt;ul&gt;
&lt;li&gt;배열을 안만들고도 할 수 있지만, 편의상 배열을 만들고 저장하도록 하였습니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;인덱스의 합이 중간값일 때까지 값을 비교하며 저장합니다.&lt;/li&gt;
&lt;li&gt;리턴부분의 식을 적용하면 홀수인 경우와 짝수인 경우 모두 커버할 수 있습니다.&lt;/li&gt;
&lt;/ol&gt;
&lt;h2&gt;소스 코드&lt;/h2&gt;
&lt;pre&gt;&lt;code&gt;class Solution {
    public double findMedianSortedArrays(int[] nums1, int[] nums2) {
        int n = nums1.length, m = nums2.length;
        int i1 = 0, i2 = 0;
        int[] sum = new int[(n + m) / 2 + 1];

        while (i1 + i2 != sum.length) {
            if (i1 == n) {
                sum[i1 + i2] = nums2[i2++];
            } else if (i2 == m) {
                sum[i1 + i2] = nums1[i1++];
            } else {
                sum[i1 + i2] = nums1[i1] &amp;lt; nums2[i2] ? nums1[i1++] : nums2[i2++];   
            }
        }

        return (sum[(n + m) / 2] + sum[(n + m - 1) / 2]) / 2.0;
    }
}&lt;/code&gt;&lt;/pre&gt;</description>
      <category>알고리즘(Algorithm)/LeetCode</category>
      <category>Java</category>
      <category>leetcode</category>
      <category>Median of Two Sorted Arrays</category>
      <category>릿코드</category>
      <category>자바</category>
      <author>나아가는중</author>
      <guid isPermaLink="true">https://dlee0129.tistory.com/247</guid>
      <comments>https://dlee0129.tistory.com/247#entry247comment</comments>
      <pubDate>Mon, 16 May 2022 19:28:29 +0900</pubDate>
    </item>
    <item>
      <title>[LeetCode] 3. Longest Substring Without Repeating Characters (Java)</title>
      <link>https://dlee0129.tistory.com/246</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;문제&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Given a string s, find the length of the longest substring without repeating characters.&lt;br /&gt;문자열 s가 주어지면, 반복되는 문자가 없는 가장 긴 부분 문자열의 길이를 찾으세요.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;Example 1:&lt;/h3&gt;
&lt;pre class=&quot;applescript&quot;&gt;&lt;code&gt;Input: s = &quot;abcabcbb&quot;
Output: 3
Explanation: The answer is &quot;abc&quot;, with the length of 3.&lt;/code&gt;&lt;/pre&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;Example 2:&lt;/h3&gt;
&lt;pre class=&quot;applescript&quot;&gt;&lt;code&gt;Input: s = &quot;bbbbb&quot;
Output: 1
Explanation: The answer is &quot;b&quot;, with the length of 1.&lt;/code&gt;&lt;/pre&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;Example 3:&lt;/h3&gt;
&lt;pre class=&quot;livecodeserver&quot;&gt;&lt;code&gt;Input: s = &quot;pwwkew&quot;
Output: 3
Explanation: The answer is &quot;wke&quot;, with the length of 3.
Notice that the answer must be a substring, &quot;pwke&quot; is a subsequence and not a substring.&lt;/code&gt;&lt;/pre&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;제약 사항:&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;0 &amp;lt;= s.length &amp;lt;= 5 * 104&lt;/li&gt;
&lt;li&gt;s consists of English letters, digits, symbols and spaces. (s는 영문자, 숫자, 기호 및 공백으로 구성됩니다.)&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;문제 풀이&lt;/h2&gt;
&lt;ol style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;반복되는 문자가 없는지 Map을 사용하여 검사합니다.
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;key: s의 i번째 문자, value: i&lt;/li&gt;
&lt;li&gt;Map에 있는 경우 반복되는지 확인합니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;가장 긴 부분 문자열의 길이의 시작 부분을 front에 저장 합니다.
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;반복되는 문자가 발생하고, 해당 문자가 문자열의 시작부분 보다 뒤에 있는 경우, front를 반복 문자열의 다음 위치로 조정합니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;가장 긴 부분 문자열은 front와 i || s의 길이로 구해집니다.
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;반복되는 문자가 발생할 경우, 현재 부분 문자열의 길이를 구하고 가장 긴 부분 문자열인 경우 answer를 갱신합니다.&lt;/li&gt;
&lt;li&gt;반복되는 문자가 발생하지 않는 경우에 마지막에 s의 길이와 front를 통해 구합니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;소스 코드&lt;/h2&gt;
&lt;pre class=&quot;arduino&quot;&gt;&lt;code&gt;import java.util.*;

class Solution {
    public int lengthOfLongestSubstring(String s) {
        int answer = s.length() == 0 ? 0 : 1, front = 0;
        Map&amp;lt;Character, Integer&amp;gt; map = new HashMap&amp;lt;&amp;gt;();

        for (int i = 0; i &amp;lt; s.length(); i++) {
            char c = s.charAt(i);

            if (map.containsKey(c) &amp;amp;&amp;amp; map.get(c) &amp;gt;= front) {
                answer = Math.max(i - front, answer);
                front = map.get(c) + 1;
            }

            map.put(c, i);
        }
        answer = Math.max(s.length() - front, answer);

        return answer;
    }
}&lt;/code&gt;&lt;/pre&gt;</description>
      <category>알고리즘(Algorithm)/LeetCode</category>
      <category>Java</category>
      <category>leetcode</category>
      <category>longest substring without repeating characters</category>
      <category>릿코드</category>
      <category>자바</category>
      <author>나아가는중</author>
      <guid isPermaLink="true">https://dlee0129.tistory.com/246</guid>
      <comments>https://dlee0129.tistory.com/246#entry246comment</comments>
      <pubDate>Sun, 15 May 2022 17:59:58 +0900</pubDate>
    </item>
    <item>
      <title>[Intellij] Extract code to a variable 변수 자동 생성</title>
      <link>https://dlee0129.tistory.com/245</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;'Extract code to a variable' 코드에서 변수 추출(?), 변수 자동 생성(?), 코드에서 변수 생성(?) 한글로 어떻게 번역하면 좋을지 잘 모르겠다...&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Intellij에서 제공하는 아주 편한 기능으로 리턴값 변수를 자동으로 생성해주는 기능입니다.&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;Window/Linux: Ctrl+Alt+V&lt;/h4&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;Mac: ⌥(option)+⌘(comand)+V&lt;/h4&gt;</description>
      <category>Tools/Intellij</category>
      <category>Extract code to a variable</category>
      <category>IntelliJ</category>
      <author>나아가는중</author>
      <guid isPermaLink="true">https://dlee0129.tistory.com/245</guid>
      <comments>https://dlee0129.tistory.com/245#entry245comment</comments>
      <pubDate>Sat, 14 May 2022 00:24:06 +0900</pubDate>
    </item>
    <item>
      <title>[Spring Boot] Junit5 - @RunWith(SpringRunner.class)</title>
      <link>https://dlee0129.tistory.com/244</link>
      <description>&lt;p&gt;Junit4를 사용하다 Junit5로 테스트를 만들고 @Runwith(SpringRunner.class)를 작성하면, Cannot resolve symbol &amp;#39;RunWith&amp;#39; 에러가 나타난다.&lt;br&gt;&lt;br&gt;&lt;br&gt;@RunWith(SpringRunner.class)는 Junit4에서만 사용이 가능하고, Junit5에서는 사라졌다.&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;b&gt;Junit5&lt;/b&gt;에서는 대신 &lt;b&gt;@ExtendWith(SpringExtension.class)를 사용&lt;/b&gt;해야 한다.&lt;br&gt;&lt;br&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;// Junit4
@RunWith(SpringRunner.class)

// Junit5
@ExtendWIth(SpringExtension.class)&lt;/code&gt;&lt;/pre&gt;</description>
      <category>웹, 앱 개발/Spring</category>
      <category>ExtendWith</category>
      <category>Junit4</category>
      <category>Junit5</category>
      <category>runwith</category>
      <category>springboot</category>
      <category>Test</category>
      <author>나아가는중</author>
      <guid isPermaLink="true">https://dlee0129.tistory.com/244</guid>
      <comments>https://dlee0129.tistory.com/244#entry244comment</comments>
      <pubDate>Fri, 13 May 2022 00:14:37 +0900</pubDate>
    </item>
    <item>
      <title>H2 Database Table 삭제</title>
      <link>https://dlee0129.tistory.com/243</link>
      <description>&lt;p&gt;콘솔에 다음의 명령어를 입력하면 H2 DB의 모든 테이블이 삭제(drop) 됩니다.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;drop all objects&lt;/code&gt;&lt;/pre&gt;</description>
      <category>IT 지식/데이터베이스(DB Database)</category>
      <category>database</category>
      <category>db</category>
      <category>drop</category>
      <category>H2</category>
      <category>table</category>
      <author>나아가는중</author>
      <guid isPermaLink="true">https://dlee0129.tistory.com/243</guid>
      <comments>https://dlee0129.tistory.com/243#entry243comment</comments>
      <pubDate>Thu, 12 May 2022 22:48:31 +0900</pubDate>
    </item>
    <item>
      <title>[LeetCode] 2. Add Two Numbers (Java)</title>
      <link>https://dlee0129.tistory.com/242</link>
      <description>&lt;h2&gt;문제&lt;/h2&gt;
&lt;p&gt;You are given two &lt;b&gt;non-empty&lt;/b&gt; linked lists representing two non-negative integers.&lt;br&gt;두 개의 음이 아닌 정수를 나타내는 두 개의 비어 있지 않은 링크드리스트가 제공됩니다.&lt;br&gt;&lt;br&gt;&lt;br&gt;The digits are stored in &lt;b&gt;reverse order&lt;/b&gt;, and each of their nodes contains a single digit.&lt;br&gt;숫자는 역순으로 저장되어 있으며, 각 노드에는 단일 숫자가 포함되어 있습니다.&lt;br&gt;&lt;br&gt;&lt;br&gt;Add the two numbers and return the sum as a linked list.&lt;br&gt;두 숫자를 더하고 합을 링크드리스트로 반환합니다.&lt;/p&gt;
&lt;p&gt;You may assume the two numbers do not contain any leading zero, except the number 0 itself.&lt;br&gt;두 숫자에는 숫자 0 자체를 제외하고는, 앞에 0이 포함되어 있지 않다고 가정할 수 있습니다.  &lt;/p&gt;
&lt;br&gt;
&lt;br&gt;

&lt;h3&gt;Example 1:&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;Input: l1 = [2,4,3], l2 = [5,6,4]
Output: [7,0,8]
Explanation: 342 + 465 = 807.&lt;/code&gt;&lt;/pre&gt;&lt;h3&gt;Example 2:&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;Input: l1 = [0], l2 = [0]
Output: [0]  &lt;/code&gt;&lt;/pre&gt;&lt;h3&gt;Example 3:&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;Input: l1 = [9,9,9,9,9,9,9], l2 = [9,9,9,9]
Output: [8,9,9,9,0,0,0,1]&lt;/code&gt;&lt;/pre&gt;&lt;h3&gt;제약조건:&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;The number of nodes in each linked list is in the range [1, 100]. (각 링크드리스트의 노드 숫자는 [1, 100] 범위입니다.)&lt;/li&gt;
&lt;li&gt;0 &amp;lt;= Node.val &amp;lt;= 9&lt;/li&gt;
&lt;li&gt;It is guaranteed that the list represents a number that does not have leading zeros. (목록은 앞에 0이 없는 숫자를 나태내는 것을 보장합니다.)&lt;/li&gt;
&lt;/ul&gt;
&lt;br&gt;

&lt;h2&gt;문제 풀이&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;문제에 주어진 ListNode를 사용해야 합니다.&lt;ul&gt;
&lt;li&gt;ListNode에는 값과 다음 ListNode 객체 참조 변수가 있습니다.&lt;/li&gt;
&lt;li&gt;자료구조의 링크드 리스트와 유사합니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;ListNode의 시작 위치를 저장해둬야 합니다.&lt;ul&gt;
&lt;li&gt;탐색 시 시작 위치를 저장해둬야 탐색이 가능합니다.&lt;/li&gt;
&lt;li&gt;iterator가 없으며, ListNode는 이전 객체 참조가 불가능 합니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;li과 l2가 모두 탐색될때까지 반복하며, 두 값을 더해 answer ListNode에 저장합니다.&lt;ul&gt;
&lt;li&gt;한 자리의 숫자만 저장할 수 있으므로 10을 초과하는 값은 저장해두었다가 다음 자리수에 합산해줍니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h2&gt;소스 코드&lt;/h2&gt;
&lt;pre&gt;&lt;code&gt;class Solution {
    public ListNode addTwoNumbers(ListNode l1, ListNode l2) {
        ListNode listNode = new ListNode();
        ListNode answer = listNode;
        int roundUp = 0;

        while (l1 != null || l2 != null) {
            int sum = roundUp;

            if (l1 != null) {
                sum += l1.val;
                l1 = l1.next;
            }

            if (l2 != null) {
                sum += l2.val;
                l2 = l2.next;
            }

            roundUp = sum / 10;
            sum %= 10;

            listNode.next = new ListNode(sum);
            listNode = listNode.next;
        }

        if (roundUp &amp;gt; 0) {
            listNode.next = new ListNode(roundUp);
        }

        return answer.next;
    }

}&lt;/code&gt;&lt;/pre&gt;</description>
      <category>알고리즘(Algorithm)/LeetCode</category>
      <author>나아가는중</author>
      <guid isPermaLink="true">https://dlee0129.tistory.com/242</guid>
      <comments>https://dlee0129.tistory.com/242#entry242comment</comments>
      <pubDate>Thu, 12 May 2022 22:40:55 +0900</pubDate>
    </item>
    <item>
      <title>[LeetCode]  1. Two Sum  (Java)</title>
      <link>https://dlee0129.tistory.com/241</link>
      <description>&lt;h2&gt;문제&lt;/h2&gt;
&lt;p&gt;Given an array of integers &lt;span style='background-color:#f6f9fa'&gt;nums&lt;/span&gt; and an integer &lt;span style='background-color:#f6f9fa'&gt;target&lt;/span&gt;, return indices of the two numbers such that they add up to target.&lt;br&gt;정수 배열 nums와 정수 대상이 주어지면, 대상을 만들수 있는 두 숫자의 인덱스를 반환하세요.&lt;br&gt;&lt;br&gt;&lt;br&gt;You may assume that each input would have &lt;b&gt;exactly one solution&lt;/b&gt;, and you may not use the same element twice.&lt;br&gt;각 입력에는 정확히 하나의 솔루션이 있다고 가정하고, 동일한 요소를 두 번 사용할 수 없습니다.&lt;br&gt;&lt;br&gt;&lt;br&gt;You can return the answer in any order.&lt;br&gt;어떤 순서로든 정답을 반환할 수 있습니다.&lt;/p&gt;
&lt;br&gt;
&lt;br&gt;

&lt;h3&gt;Example 1:&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;Input: nums = [2,7,11,15], target = 9
Output: [0,1]
Explanation: Because nums[0] + nums[1] == 9, we return [0, 1].&lt;/code&gt;&lt;/pre&gt;&lt;h3&gt;Example 2:&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;Input: nums = [3,2,4], target = 6
Output: [1,2]&lt;/code&gt;&lt;/pre&gt;&lt;h3&gt;Example 3:&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;Input: nums = [3,3], target = 6
Output: [0,1]&lt;/code&gt;&lt;/pre&gt;&lt;br&gt;

&lt;h3&gt;제약조건:&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;2 &amp;lt;= nums.length &amp;lt;= 104&lt;/li&gt;
&lt;li&gt;-109 &amp;lt;= nums[i] &amp;lt;= 109&lt;/li&gt;
&lt;li&gt;-109 &amp;lt;= target &amp;lt;= 109&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Only one valid answer exists.&lt;/b&gt; (하나의 유효한 답변만 존재합니다.)&lt;/li&gt;
&lt;/ul&gt;
&lt;br&gt;

&lt;p&gt;&lt;b&gt;Follow-up&lt;/b&gt;: Can you come up with an algorithm that is less than O(n2) time complexity?&lt;br&gt;시간 복잡도를 O(n2)보다 작은 알고리즘을 생각해낼 수 있습니까?&lt;/p&gt;
&lt;br&gt;


&lt;h2&gt;문제 풀이 (시간복잡도 O(n))&lt;/h2&gt;
&lt;p&gt;Map을 사용해서 &lt;b&gt;시간복잡도 O(n)&lt;/b&gt;으로 해결하는 방법입니다.  &lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;nums 배열을 순회하며 map에 nums 배열의 요소들을 저장합니다.&lt;ul&gt;
&lt;li&gt;key: nums 배열의 요소(정수), value: index &lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;map에서 &amp;#39;target - 요소&amp;#39;의 요소를 찾습니다.&lt;ul&gt;
&lt;li&gt;요소가 존재한다면, 두 요소로 타겟을 만들 수 있습니다.&lt;/li&gt;
&lt;li&gt;현재 요소의 index와 map에서 찾은 요소의 index를 반환합니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h2&gt;소스코드&lt;/h2&gt;
&lt;pre&gt;&lt;code&gt;import java.util.*;

class Solution {
    public int[] twoSum(int[] nums, int target) {
        Map&amp;lt;Integer, Integer&amp;gt; map = new HashMap&amp;lt;&amp;gt;();

        for (int i = 0; i &amp;lt; nums.length; i++) {
            if (map.containsKey(target - nums[i])) {
                return new int[]{map.get(target - nums[i]), i};
            }

            map.put(nums[i], i);
        }

        return null;
    }
}&lt;/code&gt;&lt;/pre&gt;&lt;br&gt;

&lt;h2&gt;문제 풀이 (시간복잡도 O(n2))&lt;/h2&gt;
&lt;p&gt;&lt;b&gt;시간복잡도 O(n2)&lt;/b&gt;로 푸는 방법은 쉽게 생각해볼 수 있습니다.  &lt;/p&gt;
&lt;p&gt;nums의 두 개의 정수를 더하는 모든 경우의 수를 탐색하여 대상을 찾는 경우 리턴하면 됩니다.&lt;/p&gt;
&lt;h2&gt;소스 코드&lt;/h2&gt;
&lt;pre&gt;&lt;code&gt;class Solution {
    public int[] twoSum(int[] nums, int target) {
        for (int i = 0; i &amp;lt; nums.length; i++) {
            for (int j = i + 1; j &amp;lt; nums.length; j++) {
                if (nums[i] + nums[j] == target) {
                    return new int[]{i, j};
                }
            }
        }

        return null;
    }
}&lt;/code&gt;&lt;/pre&gt;</description>
      <category>알고리즘(Algorithm)/LeetCode</category>
      <author>나아가는중</author>
      <guid isPermaLink="true">https://dlee0129.tistory.com/241</guid>
      <comments>https://dlee0129.tistory.com/241#entry241comment</comments>
      <pubDate>Wed, 11 May 2022 19:22:25 +0900</pubDate>
    </item>
    <item>
      <title>[백준 Baekjoon] 1153번 네 개의 소수 - JAVA</title>
      <link>https://dlee0129.tistory.com/240</link>
      <description>&lt;pre class=&quot;html xml&quot; data-ke-language=&quot;html&quot;&gt;&lt;code&gt;import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.List;

public class Main {
    public static boolean[] isPrime = new boolean[1_000_001];
    public static List&amp;lt;Integer&amp;gt; list = new ArrayList&amp;lt;&amp;gt;();

    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

        int N = Integer.parseInt(br.readLine());

        if (N &amp;lt; 8) {
            System.out.println(-1);

            return;
        }

        eratosthenes();
        list.add(2);

        if (N % 2 == 0) {
            list.add(2);

            getGoldBach(N - 4);
        } else {
            list.add(3);

            getGoldBach(N - 5);
        }

        StringBuilder answer = new StringBuilder();
        for (int n : list) {
            answer.append(n).append(&quot; &quot;);
        }
        System.out.println(answer);
    }

    public static void getGoldBach(int remain) {
        for (int i = 2; i &amp;lt;= remain / 2; i++) {
            if (!isPrime[i] &amp;amp;&amp;amp; !isPrime[remain - i]) {
                list.add(i);
                list.add(remain - i);

                break;
            }
        }
    }

    public static void eratosthenes() {
        isPrime[0] = isPrime[1] = true;

        for (int i = 2; i * i &amp;lt;= 1_000_000; i++) {
            if (!isPrime[i]) {
                for (int j = i * i; j &amp;lt;= 1_000_000; j += i) {
                    isPrime[j] = true;
                }
            }
        }
    }
}&lt;/code&gt;&lt;/pre&gt;</description>
      <category>알고리즘(Algorithm)/백준(Baekjoon)</category>
      <author>나아가는중</author>
      <guid isPermaLink="true">https://dlee0129.tistory.com/240</guid>
      <comments>https://dlee0129.tistory.com/240#entry240comment</comments>
      <pubDate>Tue, 25 Jan 2022 22:26:15 +0900</pubDate>
    </item>
    <item>
      <title>라이브러리(Library) &amp;amp; 프레임워크(Framework)</title>
      <link>https://dlee0129.tistory.com/239</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;라이브러리(Library)&amp;nbsp;&amp;amp;&amp;nbsp;프레임워크(Framework)&lt;/b&gt;&lt;/h2&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;b&gt;라이브러리(Library)란?&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;라이브러리란 재사용 가능한 최소 단위 기능 또는 기능들의 집합입니다. 재사용이 필요한 기능을 클래스나 함수로 만들어 언제든지 필요한 곳에서 호출하여 사용할 수 있도록 합니다. 또한, 기능을 사용하기 위해 다른 기능을 필요하지 않아야 합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;직접 모든 기능들을 구현하여 사용하기는 어려움이 따르며 미리 만들어진 라이브러리를 사용함으로 개발 시간을 단축시킬 수 있습니다. 직접 구현하기 어려운 기능을 라이브러리를 사용하여 쉽게 구현할 수 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;라이브러리를 호출하는 것으로 반복적인 코드 작성을 지향할 수 있습니다. 또한, 라이브러리를 사용하여 작성된 코드는 다른 개발자가 보고 이해하기 쉬운 장점이 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;개인 혹은 회사는 표준 라이브러리를 사용하여 직접 라이브러리를 만들어 사용할 수 있으며 기능을 확장시킬 수 있습니다. 새로운 라이브러리를 만드는데에는 규칙이 존재하지 않으며 원하는 기능을 만들어 사용하면 됩니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;프레임워크(Framework)란?&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;프레임워크란 개발을 쉬게 하도록 도와주는 라이브러리와 다른 프레임워크의 집합체입니다. 프로그램을 개발하는데 필요한 기능들을 갖추고 있어 개발자는 개발에만 집중할 수 있도록 해줍니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;개발자는 개발과 실행 플랫폼을 신경쓰지 않아도 되어 편리하며 프로그램 개발 시간을 단축시켜줍니다. 많은 라이브러리들을 제공하여 재사용이 간편하며 전문적인 개발자들이 개발하여 노하우가 있어 오류가 적습니다. 또한 유지보수의 장점이 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;프레임워크는 원하는 기능만을 가진 것이 아니라 여러 케이스의 조건들과 불필요한 리소스들도 포함되어 있어, 느리고 무거운 단점이 존재합니다. 또한 원하는 기능을 제공하지 않을 수 있으며, 오류가 존재할 수 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다른 사람이 개발하여 제공하는 것이므로 학습하기 어려울 수 있습니다. 어떤 프레임워크를 사용해야 하는지 선택하는 것에도 어려움이 따릅니다. 따라서 너무 프레임워크에 의존하지 않고 필요하다면 직접 개발 또는 수정하는 것이 좋습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;라이브러리와 프레임워크의 큰 차이점은 제어권의 차이입니다. 라이브러리는 클래스나 함수를 개발자가 직접 호출하여 사용하지만, 프레임워크는 개발자가 구현한 함수가 프레임워크에 의해 호출되는 제어의 역전(IoC)이 일어납니다.&lt;/p&gt;</description>
      <category>IT 지식/기타</category>
      <category>framework</category>
      <category>Library</category>
      <category>라이브러리</category>
      <category>프레임워크</category>
      <author>나아가는중</author>
      <guid isPermaLink="true">https://dlee0129.tistory.com/239</guid>
      <comments>https://dlee0129.tistory.com/239#entry239comment</comments>
      <pubDate>Mon, 24 Jan 2022 23:06:39 +0900</pubDate>
    </item>
    <item>
      <title>자바(JAVA) - Scanner &amp;amp; BufferedReader</title>
      <link>https://dlee0129.tistory.com/238</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;자바(JAVA)&amp;nbsp;-&amp;nbsp;Scanner&amp;nbsp;&amp;amp;&amp;nbsp;BufferedReader&lt;/b&gt;&lt;/h2&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;자바를 처음 배울 때 &lt;b&gt;사용자(키보드) 입력&lt;/b&gt;받기 위해 보통 Scanner 클래스를 사용합니다. 하지만 알고리즘을 풀기 시작하면서 백준에서 Scanner를 사용하여 입력을 받으면 시간초과가 발생하는 경험을 하게 됩니다. 그래서 다른 방법을 찾다 보면 BufferedReader를 접하게 됩니다.&lt;/p&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와 BufferedReader 클래스는 둘 다 사용자(키보드) 입력을 받을 수 있는 기능을 제공합니다. 두 클래스가 가지고 있는 함수들에도 많은 차이가 있지만 &lt;b&gt;가장 큰 차이는 속도&lt;/b&gt;입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Scanner와 BufferedReader의 사용법&lt;/p&gt;
&lt;pre class=&quot;arduino&quot;&gt;&lt;code&gt;import java.util.Scanner;

public class Input {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);

        String input = sc.nextLine();
    }
}&lt;/code&gt;&lt;/pre&gt;
&lt;pre class=&quot;processing&quot;&gt;&lt;code&gt;import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class Input {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

        String input = br.readLine();
    }
}&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;b&gt;BufferedReader&lt;/b&gt; 사용시에 &lt;b&gt;0.6585&lt;/b&gt;, &lt;b&gt;Scanner&lt;/b&gt; 사용시에 &lt;b&gt;4.8448&lt;/b&gt; 초가 걸리는 차이가 있습니다. 적은 양의 데이터인 경우 문제가 없겠지만, 데이터 양이 많아질수록 성능 차이는 큽니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://www.acmicpc.net/blog/search/%EC%9E%85%EB%A0%A5+%EC%86%8D%EB%8F%84&quot;&gt;https://www.acmicpc.net/blog/search/%EC%9E%85%EB%A0%A5+%EC%86%8D%EB%8F%84&lt;/a&gt;&amp;nbsp;&lt;/p&gt;
&lt;figure id=&quot;og_1642931024316&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;여러가지 언어와 입력 방법을 이용해서 시간이 얼마나 걸리는지 비교해 보았습니다. 방법: 첫째 줄에 정수의 개수 N (= 10,000,000), 둘째 줄부터 N개의 줄에 한 개의 자연수(10,000 이하)가 적힌 파일&quot; data-og-host=&quot;www.acmicpc.net&quot; data-og-source-url=&quot;https://www.acmicpc.net/blog/search/%EC%9E%85%EB%A0%A5+%EC%86%8D%EB%8F%84&quot; data-og-url=&quot;https://www.acmicpc.net/blog/search/%EC%9E%85%EB%A0%A5+%EC%86%8D%EB%8F%84&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/s0Jqt/hyNaqKUdsy/aA8VZ3GvnGPa6HgsBOKOzk/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630&quot;&gt;&lt;a href=&quot;https://www.acmicpc.net/blog/search/%EC%9E%85%EB%A0%A5+%EC%86%8D%EB%8F%84&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://www.acmicpc.net/blog/search/%EC%9E%85%EB%A0%A5+%EC%86%8D%EB%8F%84&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/s0Jqt/hyNaqKUdsy/aA8VZ3GvnGPa6HgsBOKOzk/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;여러가지 언어와 입력 방법을 이용해서 시간이 얼마나 걸리는지 비교해 보았습니다. 방법: 첫째 줄에 정수의 개수 N (= 10,000,000), 둘째 줄부터 N개의 줄에 한 개의 자연수(10,000 이하)가 적힌 파일&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;www.acmicpc.net&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;BufferedReader를 사용할때와 Scanner의 속도가 차이가 나는 이유는 buffer 사용 여부의 차이입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Scanner는 1KB 크기의 버퍼&lt;/b&gt;를 갖기 때문에 입력이 바로 전달되는 반면 &lt;b&gt;BufferedReader는 8KB 크기의 버퍼&lt;/b&gt;를 가져 buffer에 입력들을 저장하였다 한 번에 전송하기 때문에 속도가 더 빠릅니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;860&quot; data-origin-height=&quot;427&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cXUZr1/btrrpouXTcM/EjKE8VmUMigwNW1Qaf0ZC0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cXUZr1/btrrpouXTcM/EjKE8VmUMigwNW1Qaf0ZC0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cXUZr1/btrrpouXTcM/EjKE8VmUMigwNW1Qaf0ZC0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcXUZr1%2FbtrrpouXTcM%2FEjKE8VmUMigwNW1Qaf0ZC0%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;427&quot; data-origin-width=&quot;860&quot; data-origin-height=&quot;427&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;또한, Scanner는 입력을 읽는 과정에서 내부에서 정규 표현식 적용, 입력값 분할, 파싱 과정 등을 거치기 때문에 속도가 느립니다.&lt;/p&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;b&gt;System.in&lt;/b&gt;을 매개변수로 받는 것을 볼 수 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;System.in은 java.lang 패키지의 System 클래스이며, System클래스의 in은 정적(static) 변수입니다.&lt;/p&gt;
&lt;pre id=&quot;code_1642929803062&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;public final class System {
    public static final InputStream in = null;
    
    ...
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;in&lt;/b&gt;은 &lt;b&gt;InputStream&lt;/b&gt; 타입의 변수임을 볼 수 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;InputStream은 java.io 패키지의 바이트 단위 입력을 위한 &lt;b&gt;최상위 입력 스트림 클래스&lt;/b&gt;입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;System.in을 매개변수로 사용하기 때문에 사용자(키보드) 입력을 받을 수 있다고 생각하시면 됩니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다음과 같이&lt;b&gt; System.in만을 사용하여 입력을 받는 것이 가능&lt;/b&gt;합니다.&lt;/p&gt;
&lt;pre class=&quot;arduino&quot;&gt;&lt;code&gt;import java.io.IOException;

public class Input {
    public static void main(String[] args) throws IOException {
        int input = System.in.read();
    }
}&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;System.in과 BufferedReader 클래스를 사용할 때는 main 옆에 &lt;b&gt;throws IOException&lt;/b&gt;이 붙습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;사용자의 입력은 여러 다양한 타입으로 들어올 수 있는데, 잘못된 값이 들어올 경우 에러가 나지 않도록 예외처리를 해줘야합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Scanner는 System.in을 생성시에 내부에서 try-catch를 사용하여 예외처리를 하기때문에 예외처리를 하지 않아도 됩니다.&lt;/p&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와 달리 BufferedReader는 생성시에 매개변수로 &lt;b&gt;InputStreamReader&lt;/b&gt;를 사용합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Scanner 또한 클래스 생성자에서 InputStreamReader를 생성하여 사용합니다.&lt;/p&gt;
&lt;pre id=&quot;code_1642930764955&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;public final class System {
    public Scanner(InputStream source) {
        this(new InputStreamReader(source), WHITESPACE_PATTERN);
    }    
    ...
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;따라서 다음과 같이 InputStreamReader를 생성하여 매개변수로 전달하는것도 가능합니다.&lt;/p&gt;
&lt;pre class=&quot;arduino&quot;&gt;&lt;code&gt;import java.io.InputStreamReader;
import java.util.Scanner;

public class Input {
    public static void main(String[] args) {
        Scanner sc = new Scanner(new InputStreamReader(System.in));
        
        String input = sc.nextLine();
    }
}&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;InputStreamReader란 문자 입력 스트림의 한 종류로 &lt;span style=&quot;color: #555555;&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;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://dlee0129.tistory.com/216?category=981263&quot;&gt;https://dlee0129.tistory.com/216?category=981263&lt;/a&gt;&amp;nbsp;&lt;/p&gt;
&lt;figure id=&quot;og_1642931315817&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;자바(JAVA)&amp;nbsp;-&amp;nbsp;입출력&amp;nbsp;스트림 입출력 스트림이란? 스트림(Stream)을 한글로 번역하면 개울, 시내, 줄기, 줄줄 흐르다로 번역됩니다. 입출력 스트림에서 스트림은 순서가 있는 데이터의 연속적인 흐&quot; data-og-host=&quot;dlee0129.tistory.com&quot; data-og-source-url=&quot;https://dlee0129.tistory.com/216?category=981263&quot; data-og-url=&quot;https://dlee0129.tistory.com/216&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/eeFp5h/hyNb5kOEeA/wOegpy7PvtSslzXqOaK910/img.png?width=800&amp;amp;height=800&amp;amp;face=0_0_800_800,https://scrap.kakaocdn.net/dn/daSHMv/hyNbZdPxyD/BBT3qwnKyAlTFqxvfObjqk/img.png?width=800&amp;amp;height=800&amp;amp;face=0_0_800_800&quot;&gt;&lt;a href=&quot;https://dlee0129.tistory.com/216?category=981263&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://dlee0129.tistory.com/216?category=981263&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/eeFp5h/hyNb5kOEeA/wOegpy7PvtSslzXqOaK910/img.png?width=800&amp;amp;height=800&amp;amp;face=0_0_800_800,https://scrap.kakaocdn.net/dn/daSHMv/hyNbZdPxyD/BBT3qwnKyAlTFqxvfObjqk/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;자바(JAVA)&amp;nbsp;-&amp;nbsp;입출력&amp;nbsp;스트림 입출력 스트림이란? 스트림(Stream)을 한글로 번역하면 개울, 시내, 줄기, 줄줄 흐르다로 번역됩니다. 입출력 스트림에서 스트림은 순서가 있는 데이터의 연속적인 흐&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;dlee0129.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>프로그래밍 언어/자바(JAVA)</category>
      <category>Buffer</category>
      <category>BufferedReader</category>
      <category>InputStreamReader</category>
      <category>Java</category>
      <category>Scanner</category>
      <category>System.in</category>
      <category>속도</category>
      <category>이유</category>
      <category>자바</category>
      <category>차이</category>
      <author>나아가는중</author>
      <guid isPermaLink="true">https://dlee0129.tistory.com/238</guid>
      <comments>https://dlee0129.tistory.com/238#entry238comment</comments>
      <pubDate>Sun, 23 Jan 2022 19:02:38 +0900</pubDate>
    </item>
    <item>
      <title>자바(JAVA) - Interface default &amp;amp; static method</title>
      <link>https://dlee0129.tistory.com/237</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&amp;nbsp;jdk 1.8(java 8)부터 인터페이스에 &lt;b&gt;default method&lt;/b&gt;와&amp;nbsp;&lt;b&gt;static method가 추가&lt;/b&gt;&lt;/b&gt;되었습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이전 버전에서는 인터페이스는 오직 추상 메서드만 가질 수 있었습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;default method&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;인터페이스에 새로운 메서드를 추가하거나 변경하게 되면 해당 인터페이스를 구현하는 모든 클래스들이 해당 메서드를 새로 구현해야 하는 불편함이 존재하였습니다. 그래서 이를 해결하기 위해 인터페이스에 default 메서드 기능을 추가하였습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;인터페이스는 추상 메서드만을 갖는 원칙이 있었습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;여러 인터페이스들간의 충돌을 방지하기 위해 추상 메서드만을 사용하도록 하였습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;하지만 default 메서드는 추상 메서드가 아닌 인스턴스 메서드로 '{ }' 바디를 가질 수 있습니다(구현될 수 있다).&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;default 매서드는 바디를 갖기 때문에 다른 인터페이스의 default 매서드, 부모 클래스의 메서드와 충돌이 발생할 수 있습니다.&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;b&gt;다른 인터페이스의 default 메서드 간의 충돌 시 인터페이스를 구현한 클래스에서 default 매서드를 오바라이딩해서 해결합니다.&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;default 매서드를 구현하는 클래스는 default 메서드를 오버라이딩 할 수 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;부모 클래스의 메서드와 default 메서드가 충돌시 인터페이스의 default 메서드는 무시되며, 부모 클래스의 메서드가 상속됩니다.&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;static method&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;인터페이스가 아닌 다른 클래스에서는 static 매서드가 존재하였습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;jadk1.8 부터 static 메서드를 사용하여 간단한 기능을 갖는 유틸리티성 인터페이스를 만들 수 있게 되었습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;static 메서드는 &lt;b&gt;객체 생성없이 '인터페이스이름.메서드이름()'으로 호출&lt;/b&gt;해야 합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;default 메서드와 마찬가지로 추상 메서드와 달리 구현을 해야합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;하지만, 인터페이스를 구현하는 클래스에서 &lt;b&gt;오버라이딩은 불가&lt;/b&gt;합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>프로그래밍 언어/자바(JAVA)</category>
      <category>default</category>
      <category>Interface</category>
      <category>Java</category>
      <category>java 8</category>
      <category>JDK 1.8</category>
      <category>method</category>
      <category>static</category>
      <category>메서드</category>
      <category>인터페이스</category>
      <category>자바</category>
      <author>나아가는중</author>
      <guid isPermaLink="true">https://dlee0129.tistory.com/237</guid>
      <comments>https://dlee0129.tistory.com/237#entry237comment</comments>
      <pubDate>Sun, 23 Jan 2022 17:44:02 +0900</pubDate>
    </item>
  </channel>
</rss>