<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>Dev by chea-young</title>
    <link>https://chea-young.tistory.com/</link>
    <description></description>
    <language>ko</language>
    <pubDate>Sun, 5 Jul 2026 14:18:21 +0900</pubDate>
    <generator>TISTORY</generator>
    <ttl>100</ttl>
    <managingEditor>chea-young</managingEditor>
    <item>
      <title>[Springboot] 외부 라이브러리 jar 추가하기</title>
      <link>https://chea-young.tistory.com/46</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;프로젝트에서 Nice 본인인증 API 구현을 담당하게 되었다. Nice 담당자님으로부터 승인을 받은 후, 이메일로 jar 파일을 전달 받았다. Springboot에서 외부 jar을 추가해서 사용할 수 있는 방법을 정리하고자 한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;u&gt;&lt;b&gt;Springboot 버전&lt;/b&gt;&lt;/u&gt;&lt;br /&gt;- Java 17&lt;br /&gt;- Springboot 3.2.0&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- gradle &amp;nbsp;8.6&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;u&gt;&lt;b&gt;개발 순서&lt;/b&gt;&lt;/u&gt;&lt;/p&gt;
&lt;p style=&quot;color: #555555; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;1. 프로젝트 파일 내부에 jar 파일 추가&lt;/p&gt;
&lt;p style=&quot;color: #555555; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;2. gradle에 추가한 파일 명시하기&lt;/p&gt;
&lt;p style=&quot;color: #555555; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;background-color: #9feec3;&quot;&gt;1.&amp;nbsp;프로젝트&amp;nbsp;파일&amp;nbsp;내부에&amp;nbsp;jar&amp;nbsp;파일&amp;nbsp;추가&lt;/span&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- ./libs 폴더를 생성 후, libs 폴더 내부에 추가하고자 하는 외부 jar 파일을 넣어 줍니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;그림1.png&quot; data-origin-width=&quot;1237&quot; data-origin-height=&quot;1232&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/LmPiR/btsKM0mGD5j/Bkk1nKw53ceOShY1uqhDb1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/LmPiR/btsKM0mGD5j/Bkk1nKw53ceOShY1uqhDb1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/LmPiR/btsKM0mGD5j/Bkk1nKw53ceOShY1uqhDb1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FLmPiR%2FbtsKM0mGD5j%2FBkk1nKw53ceOShY1uqhDb1%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;319&quot; height=&quot;318&quot; data-filename=&quot;그림1.png&quot; data-origin-width=&quot;1237&quot; data-origin-height=&quot;1232&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h3 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;background-color: #9feec3;&quot;&gt;2.&amp;nbsp;gradle에&amp;nbsp;추가한&amp;nbsp;파일&amp;nbsp;명시하기&lt;/span&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아래와 같이 수정하고, build를 해주면 코드 내부에서 외주 jar 사용이 가능한 것을 확인하실 수 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- gradle 7.0 보다 낮은 경우&lt;/p&gt;
&lt;div class=&quot;colorscripter-code&quot; style=&quot;color: #f0f0f0; font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; position: relative !important; overflow: auto;&quot;&gt;
&lt;table class=&quot;colorscripter-code-table&quot; style=&quot;margin: 0px; padding: 0px; border: none; background-color: #272727; border-radius: 4px; height: 80px;&quot; width=&quot;847&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 6px; border-right: 2px solid #4f4f4f;&quot;&gt;
&lt;div style=&quot;margin: 0; padding: 0; word-break: normal; text-align: right; color: #aaa; font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height: 130%;&quot;&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;1&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;2&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;3&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;4&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/td&gt;
&lt;td style=&quot;padding: 6px 0; text-align: left;&quot;&gt;
&lt;div style=&quot;margin: 0; padding: 0; color: #f0f0f0; font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height: 130%;&quot;&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;dependencies&amp;nbsp;{dependencies&amp;nbsp;{&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;compile&amp;nbsp;fileTree(dir:&amp;nbsp;'libs',&amp;nbsp;include:&amp;nbsp;['*.jar'])&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;}&lt;/div&gt;
&lt;/div&gt;
&lt;div style=&quot;text-align: right; margin-top: -13px; margin-right: 5px; font-size: 9px; font-style: italic;&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;/td&gt;
&lt;td style=&quot;vertical-align: bottom; padding: 0 2px 4px 0;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&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;- gradle 7.0 이상인 경우&lt;/p&gt;
&lt;div class=&quot;colorscripter-code&quot; style=&quot;color: #f0f0f0; font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; position: relative !important; overflow: auto;&quot;&gt;
&lt;table class=&quot;colorscripter-code-table&quot; style=&quot;margin: 0px; padding: 0px; border: none; background-color: #272727; border-radius: 4px; height: 77px;&quot; width=&quot;889&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 5px; border-right: 2px solid #4f4f4f;&quot;&gt;
&lt;div style=&quot;margin: 0; padding: 0; word-break: normal; text-align: right; color: #aaa; font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height: 130%;&quot;&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;1&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;2&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;3&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;4&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/td&gt;
&lt;td style=&quot;padding: 5px 0; text-align: left;&quot;&gt;
&lt;div style=&quot;margin: 0; padding: 0; color: #f0f0f0; font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height: 130%;&quot;&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;dependencies&amp;nbsp;{dependencies&amp;nbsp;{&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;implementation&amp;nbsp;fileTree(dir:&amp;nbsp;'libs',&amp;nbsp;include:&amp;nbsp;['*.jar'])&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;}&lt;/div&gt;
&lt;/div&gt;
&lt;/td&gt;
&lt;td style=&quot;vertical-align: bottom; padding: 0 2px 4px 0;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;hr data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style7&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;참고 사이트&lt;/p&gt;
&lt;p style=&quot;color: #555555; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;-&lt;span&gt;&lt;span&gt; &lt;a href=&quot;https://jyami.tistory.com/44&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://jyami.tistory.com/44&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;hr data-ke-style=&quot;style7&quot; data-ke-type=&quot;horizontalRule&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;추후 Nice 본인인증 및 사용자 회원가입에 대한 설계 후 개발할 예정이다.&lt;/p&gt;</description>
      <category>Develop/SpringBoot</category>
      <category>springboot</category>
      <author>chea-young</author>
      <guid isPermaLink="true">https://chea-young.tistory.com/46</guid>
      <comments>https://chea-young.tistory.com/46#entry46comment</comments>
      <pubDate>Sun, 17 Nov 2024 21:51:40 +0900</pubDate>
    </item>
    <item>
      <title>[Springboot] Google calendar API 이용해서 공휴일 데이터 받기</title>
      <link>https://chea-young.tistory.com/45</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;일정 관리 앱을 만들어주는 프로젝트 진행 중, Google calendar API 연동 및 테스트 담당을 맡게 되었다. Google canledar API를 이용하여 공휴일 데이터를 받는 부분을 정리하고자 한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #555555;&quot;&gt;&lt;/span&gt;&lt;br /&gt;&lt;u&gt;&lt;b&gt;Springboot 버전&lt;/b&gt;&lt;/u&gt;&lt;br /&gt;&lt;span style=&quot;color: #333333;&quot;&gt;- Java 17&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #333333;&quot;&gt;- Springboot 3.2.0&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;u&gt;&lt;b&gt;Gradle&amp;nbsp;&lt;/b&gt;&lt;/u&gt;&lt;/p&gt;
&lt;div class=&quot;colorscripter-code&quot; style=&quot;color: #d7d7d7; font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; position: relative !important; overflow: auto;&quot;&gt;
&lt;table class=&quot;colorscripter-code-table&quot; style=&quot;margin: 0px; padding: 0px; border: none; background-color: #0f111a; border-radius: 4px; height: 374px;&quot; width=&quot;869&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 6px; border-right: 2px solid #4f4f4f;&quot;&gt;
&lt;div style=&quot;margin: 0; padding: 0; word-break: normal; text-align: right; color: #aaa; font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height: 130%;&quot;&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;1&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;2&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;3&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;4&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;5&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;6&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;7&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;8&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;9&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;10&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;11&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;12&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;13&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;14&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;15&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;16&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;17&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;18&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;19&lt;/div&gt;
&lt;/div&gt;
&lt;/td&gt;
&lt;td style=&quot;padding: 6px 0; text-align: left;&quot;&gt;
&lt;div style=&quot;margin: 0; padding: 0; color: #d7d7d7; font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height: 130%;&quot;&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;implementation&amp;nbsp;'org.springframework.boot:spring-boot-starter-data-jpa'&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;implementation&amp;nbsp;'org.springframework.boot:spring-boot-starter-security'&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;implementation&amp;nbsp;'org.springframework.boot:spring-boot-starter-validation'&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;implementation&amp;nbsp;'org.springframework.boot:spring-boot-starter-web'&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;compileOnly&amp;nbsp;'org.projectlombok:lombok'&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;annotationProcessor&amp;nbsp;'org.projectlombok:lombok'&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;developmentOnly&amp;nbsp;'org.springframework.boot:spring-boot-devtools'&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;runtimeOnly&amp;nbsp;'com.h2database:h2'&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;testImplementation&amp;nbsp;'org.springframework.boot:spring-boot-starter-test'&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;testImplementation&amp;nbsp;'org.springframework.restdocs:spring-restdocs-mockmvc'&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;testImplementation&amp;nbsp;'org.springframework.security:spring-security-test'&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//&amp;nbsp;google&amp;nbsp;api&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;implementation&amp;nbsp;'com.google.apis:google-api-services-calendar:v3-rev20231123-2.0.0'&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;implementation&amp;nbsp;'com.google.api-client:google-api-client:1.31.3'&lt;/div&gt;
&lt;/div&gt;
&lt;/td&gt;
&lt;td style=&quot;vertical-align: bottom; padding: 0 2px 4px 0;&quot;&gt;&lt;a style=&quot;text-decoration: none; color: white;&quot; href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;&lt;span style=&quot;font-size: 9px; word-break: normal; background-color: #4f4f4f; color: white; border-radius: 10px; padding: 1px;&quot;&gt;cs&lt;/span&gt;&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;&lt;u&gt;&lt;b&gt;&lt;u&gt;&lt;b&gt;application.yml&lt;/b&gt;&lt;/u&gt;&lt;br /&gt;&lt;/b&gt;&lt;/u&gt;&lt;/p&gt;
&lt;div class=&quot;colorscripter-code&quot; style=&quot;color: #f9f6f6; font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; position: relative !important; overflow: auto;&quot;&gt;
&lt;table class=&quot;colorscripter-code-table&quot; style=&quot;margin: 0px; padding: 0px; border: none; background-color: #0f111a; border-radius: 4px; height: 172px;&quot; width=&quot;863&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 6px; border-right: 2px solid #4f4f4f;&quot;&gt;
&lt;div style=&quot;margin: 0; padding: 0; word-break: normal; text-align: right; color: #aaa; font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height: 130%;&quot;&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;1&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;2&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;3&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;4&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;5&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;6&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;7&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;8&lt;/div&gt;
&lt;/div&gt;
&lt;/td&gt;
&lt;td style=&quot;padding: 6px 0; text-align: left;&quot;&gt;
&lt;div style=&quot;margin: 0; padding: 0; color: #f9f6f6; font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height: 130%;&quot;&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;spring:&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;profiles:&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;active:&amp;nbsp;&lt;span style=&quot;color: #82aaff;&quot;&gt;local&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;api&lt;span style=&quot;color: #c792ea;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #82aaff;&quot;&gt;-&lt;/span&gt;key:&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;google:&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;google&lt;span style=&quot;color: #c792ea;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #82aaff;&quot;&gt;-&lt;/span&gt;calendar&lt;span style=&quot;color: #c792ea;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #82aaff;&quot;&gt;-&lt;/span&gt;api:&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;key:&amp;nbsp;[Your&amp;nbsp;API&amp;nbsp;Key]&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/td&gt;
&lt;td style=&quot;vertical-align: bottom; padding: 0 2px 4px 0;&quot;&gt;&lt;a style=&quot;text-decoration: none; color: white;&quot; href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;&lt;span style=&quot;font-size: 9px; word-break: normal; background-color: #4f4f4f; color: white; border-radius: 10px; padding: 1px;&quot;&gt;cs&lt;/span&gt;&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;u&gt;&lt;b&gt;개발 순서&lt;/b&gt;&lt;/u&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1. Google calendar API key 발급 및 설정 (추후 추가될 예정)&lt;br /&gt;&lt;span style=&quot;color: #333333;&quot;&gt;2. 공휴일 데이터 받는 부분 개발&lt;/span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;3. 받은 공휴일 데이터의 날짜 정보를 LocalDataTime으로 변경&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;4. 받은 데이터 controller에 연결 및 테스트&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;u&gt;&lt;b&gt;개발 폴더 구조&lt;/b&gt;&lt;/u&gt;&lt;/p&gt;
&lt;div class=&quot;colorscripter-code&quot; style=&quot;color: #d7d7d7; font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; position: relative !important; overflow: auto;&quot;&gt;
&lt;table class=&quot;colorscripter-code-table&quot; style=&quot;margin: 0px; padding: 0px; border: none; background-color: #0f111a; border-radius: 4px; height: 301px;&quot; width=&quot;900&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 6px; border-right: 2px solid #4f4f4f; width: 57px;&quot;&gt;
&lt;div style=&quot;margin: 0; padding: 0; word-break: normal; text-align: right; color: #aaa; font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height: 130%;&quot;&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;1&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;2&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;3&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;4&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;5&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;6&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;7&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;8&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;9&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;10&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;11&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;12&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;13&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;14&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;15&lt;/div&gt;
&lt;/div&gt;
&lt;/td&gt;
&lt;td style=&quot;padding: 6px 0px; text-align: left; width: 810px;&quot;&gt;
&lt;div style=&quot;margin: 0; padding: 0; color: #d7d7d7; font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height: 130%;&quot;&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;├──&amp;nbsp;common&lt;br /&gt;│&amp;nbsp;&amp;nbsp;&amp;nbsp;├──&amp;nbsp;dto&lt;br /&gt;│&amp;nbsp;&amp;nbsp;&amp;nbsp;│&amp;nbsp;&amp;nbsp;&amp;nbsp;└──&amp;nbsp;error&lt;br /&gt;│&amp;nbsp;&amp;nbsp;&amp;nbsp;│&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;├──&amp;nbsp;request&lt;br /&gt;│&amp;nbsp;&amp;nbsp;&amp;nbsp;│&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;└──&amp;nbsp;response&lt;br /&gt;│&amp;nbsp;&amp;nbsp;&amp;nbsp;├──&amp;nbsp;enumType&lt;br /&gt;│&amp;nbsp;&amp;nbsp;&amp;nbsp;├──&amp;nbsp;exception&lt;br /&gt;│&amp;nbsp;&amp;nbsp;&amp;nbsp;├──&amp;nbsp;handler&lt;br /&gt;│&amp;nbsp;&amp;nbsp;&amp;nbsp;└──&amp;nbsp;utils&lt;br /&gt;├──&amp;nbsp;config&lt;br /&gt;└──&amp;nbsp;develop&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;├──&amp;nbsp;controller&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;│&amp;nbsp;&amp;nbsp;&amp;nbsp;└──&amp;nbsp;Google&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;└──&amp;nbsp;service&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;└──&amp;nbsp;Google&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;div style=&quot;text-align: right; margin-top: -13px; margin-right: 5px; font-size: 9px; font-style: italic;&quot;&gt;&lt;a style=&quot;color: #4f4f4ftext-decoration:none;&quot; href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Co&lt;/a&gt;&lt;/div&gt;
&lt;/td&gt;
&lt;td style=&quot;vertical-align: bottom; padding: 0px 2px 4px 0px; width: 33px;&quot;&gt;&lt;a style=&quot;text-decoration: none; color: white;&quot; href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;&lt;span style=&quot;font-size: 9px; word-break: normal; background-color: #4f4f4f; color: white; border-radius: 10px; padding: 1px;&quot;&gt;cs&lt;/span&gt;&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style7&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;background-color: #9feec3;&quot;&gt;&lt;b&gt;2. 공휴일 데이터 받기&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Google에서 제공하는 calendar 패키지를 이용하면 따로 Rest API 요청을 하지 않고서도 API 연동이 가능하다. 공휴일 데이터를 받는 API는 사용자 인증 정보가 선택 사항이기 때문에 구현 코드에서는 사용자 인증 정보를 보내주지 않고 있다.&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #4d5156; text-align: start;&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;- 생성 위치: package com.lchy.develop.develop.service.Google;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #4d5156; text-align: start;&quot;&gt;- 코드 설명&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #4d5156; text-align: start;&quot;&gt;&amp;nbsp; - createGoogleCalendarService: 공휴일 데이터를 받기 위해 Calendar API 를 사용하기 위한 Calendar 객체를 생성하는 함수. 함수 내부에서 CalendarRequestInitializer를 이용해 API key를 저장함.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #4d5156; text-align: start;&quot;&gt;&amp;nbsp; - findHolidayFromGoogleCalendar: Calendar API를 이용해 공휴일 데이터를 받는 함수. Calendar API의 event의 리스트를 받는 API를 사용. Events 의 형태로 response 를 받음&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #4d5156; text-align: start;&quot;&gt;&amp;nbsp; &amp;nbsp; - `service.events().list([calendarId]).execute();`: API를 요청하는 부분으로 &lt;span style=&quot;background-color: #ffffff; color: #4d5156; text-align: start;&quot;&gt;[calendarId]는 한국의 공휴일 데이터를 요청함으로 구글에서 제공하고 있는 캘린더 Id를 넣어줌. 만약 다른 나라의 공휴일을 가져오고 싶은 경우 &lt;a href=&quot;https://gist.github.com/dhoeric/76bd1c15168ee0ee61ad3bf1730dcb65&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;링크&lt;/a&gt;를 클릭하여 원하는 정보를 넣어주고, 사용자의 캘린더에 등록된 데이터를 받아오고 싶은 경우 사용자의 calendarId를 넣어주면 됨.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;div class=&quot;colorscripter-code&quot; style=&quot;color: #f9f6f6; font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; position: relative !important; overflow: auto;&quot;&gt;
&lt;table class=&quot;colorscripter-code-table&quot; style=&quot;margin: 0; padding: 0; border: none; background-color: #0f111a; border-radius: 4px;&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 6px; border-right: 2px solid #4f4f4f;&quot;&gt;
&lt;div style=&quot;margin: 0; padding: 0; word-break: normal; text-align: right; color: #aaa; font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height: 130%;&quot;&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;1&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;2&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;3&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;4&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;5&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;6&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;7&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;8&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;9&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;10&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;11&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;12&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;13&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;14&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;15&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;16&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;17&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;18&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;19&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;20&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;21&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;22&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;23&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;24&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;25&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;26&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;27&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;28&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;29&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;30&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;31&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;32&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;33&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;34&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;35&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;36&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;37&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;38&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;39&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;40&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;41&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;42&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;43&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;44&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;45&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;46&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;47&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;48&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;49&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;50&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;51&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;52&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;53&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;54&lt;/div&gt;
&lt;/div&gt;
&lt;/td&gt;
&lt;td style=&quot;padding: 6px 0; text-align: left;&quot;&gt;
&lt;div style=&quot;margin: 0; padding: 0; color: #f9f6f6; font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height: 130%;&quot;&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&lt;span style=&quot;color: #82aaff;&quot;&gt;import&lt;/span&gt;&amp;nbsp;com.google.api.client.googleapis.javanet.GoogleNetHttpTransport;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&lt;span style=&quot;color: #82aaff;&quot;&gt;import&lt;/span&gt;&amp;nbsp;com.google.api.client.http.javanet.NetHttpTransport;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&lt;span style=&quot;color: #82aaff;&quot;&gt;import&lt;/span&gt;&amp;nbsp;com.google.api.client.json.JsonFactory;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&lt;span style=&quot;color: #82aaff;&quot;&gt;import&lt;/span&gt;&amp;nbsp;com.google.api.client.json.gson.GsonFactory;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&lt;span style=&quot;color: #82aaff;&quot;&gt;import&lt;/span&gt;&amp;nbsp;com.google.api.services.calendar.Calendar;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&lt;span style=&quot;color: #82aaff;&quot;&gt;import&lt;/span&gt;&amp;nbsp;com.google.api.services.calendar.CalendarRequestInitializer;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&lt;span style=&quot;color: #82aaff;&quot;&gt;import&lt;/span&gt;&amp;nbsp;com.google.api.services.calendar.model.Events;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&lt;span style=&quot;color: #82aaff;&quot;&gt;import&lt;/span&gt;&amp;nbsp;java.io.IOException;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&lt;span style=&quot;color: #82aaff;&quot;&gt;import&lt;/span&gt;&amp;nbsp;java.security.GeneralSecurityException;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&lt;span style=&quot;color: #82aaff;&quot;&gt;import&lt;/span&gt;&amp;nbsp;lombok.RequiredArgsConstructor;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&lt;span style=&quot;color: #82aaff;&quot;&gt;import&lt;/span&gt;&amp;nbsp;org.springframework.beans.factory.annotation.Value;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&lt;span style=&quot;color: #82aaff;&quot;&gt;import&lt;/span&gt;&amp;nbsp;org.springframework.stereotype.Service;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&lt;span style=&quot;color: #82aaff;&quot;&gt;import&lt;/span&gt;&amp;nbsp;org.springframework.transaction.annotation.Transactional;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;@Service&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;@RequiredArgsConstructor&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;@Transactional(readOnly&amp;nbsp;&lt;span style=&quot;color: #c792ea;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #82aaff;&quot;&gt;=&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: #f78c6c;&quot;&gt;true&lt;/span&gt;)&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&lt;span style=&quot;color: #82aaff;&quot;&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: #82aaff;&quot;&gt;class&lt;/span&gt;&amp;nbsp;GoogleCalendarService&amp;nbsp;{&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;@Value(&lt;span style=&quot;color: #c3e88d;&quot;&gt;&quot;${spring.api-key.google.google-calendar-api.key}&quot;&lt;/span&gt;)&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #82aaff;&quot;&gt;private&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: #89ddff;&quot;&gt;String&lt;/span&gt;&amp;nbsp;GOOGLE_CALENDAR_API_KEY;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #82aaff;&quot;&gt;private&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: #82aaff;&quot;&gt;final&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: #82aaff;&quot;&gt;static&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: #89ddff;&quot;&gt;String&lt;/span&gt;&amp;nbsp;GOOGLE_KOREA_HOLIDAY_CALENDAR_ID&amp;nbsp;&lt;span style=&quot;color: #c792ea;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #82aaff;&quot;&gt;=&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: #c3e88d;&quot;&gt;&quot;en.south_korea#holiday@group.v.calendar.google.com&quot;&lt;/span&gt;;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #82aaff;&quot;&gt;private&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: #82aaff;&quot;&gt;final&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: #82aaff;&quot;&gt;static&lt;/span&gt;&amp;nbsp;JsonFactory&amp;nbsp;JSON_FACTORY&amp;nbsp;&lt;span style=&quot;color: #c792ea;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #82aaff;&quot;&gt;=&lt;/span&gt;&amp;nbsp;GsonFactory.getDefaultInstance();&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #6e7a96;&quot;&gt;/**&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&lt;span style=&quot;color: #6e7a96;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;*&amp;nbsp;Google&amp;nbsp;calendar&amp;nbsp;API를&amp;nbsp;사용하기&amp;nbsp;위한&amp;nbsp;Calendar&amp;nbsp;서비스를&amp;nbsp;생성해서&amp;nbsp;반환하는&amp;nbsp;함수&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&lt;span style=&quot;color: #6e7a96;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;*&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&lt;span style=&quot;color: #6e7a96;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;*&amp;nbsp;@return&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&lt;span style=&quot;color: #6e7a96;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;*&amp;nbsp;@throws&amp;nbsp;GeneralSecurityException&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&lt;span style=&quot;color: #6e7a96;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;*&amp;nbsp;@throws&amp;nbsp;IOException&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&lt;span style=&quot;color: #6e7a96;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;*/&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #82aaff;&quot;&gt;private&lt;/span&gt;&amp;nbsp;Calendar&amp;nbsp;createGoogleCalendarService()&amp;nbsp;&lt;span style=&quot;color: #82aaff;&quot;&gt;throws&lt;/span&gt;&amp;nbsp;GeneralSecurityException,&amp;nbsp;IOException&amp;nbsp;{&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;NetHttpTransport&amp;nbsp;httpTransport&amp;nbsp;&lt;span style=&quot;color: #c792ea;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #82aaff;&quot;&gt;=&lt;/span&gt;&amp;nbsp;GoogleNetHttpTransport.newTrustedTransport();&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #82aaff;&quot;&gt;return&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: #82aaff;&quot;&gt;new&lt;/span&gt;&amp;nbsp;Calendar.Builder(httpTransport,&amp;nbsp;JSON_FACTORY,&amp;nbsp;&lt;span style=&quot;color: #89ddff;&quot;&gt;null&lt;/span&gt;)&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;.setCalendarRequestInitializer(&lt;span style=&quot;color: #82aaff;&quot;&gt;new&lt;/span&gt;&amp;nbsp;CalendarRequestInitializer(GOOGLE_CALENDAR_API_KEY))&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;.build();&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #6e7a96;&quot;&gt;/**&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&lt;span style=&quot;color: #6e7a96;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;*&amp;nbsp;공휴일&amp;nbsp;데이터를&amp;nbsp;가져오는&amp;nbsp;API&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&lt;span style=&quot;color: #6e7a96;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;*&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&lt;span style=&quot;color: #6e7a96;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;*&amp;nbsp;@return&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&lt;span style=&quot;color: #6e7a96;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;*&amp;nbsp;@throws&amp;nbsp;IOException&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&lt;span style=&quot;color: #6e7a96;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;*&amp;nbsp;@throws&amp;nbsp;GeneralSecurityException&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&lt;span style=&quot;color: #6e7a96;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;*/&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #82aaff;&quot;&gt;public&lt;/span&gt;&amp;nbsp;Events&amp;nbsp;findHolidayFromGoogleCalendar()&amp;nbsp;&lt;span style=&quot;color: #82aaff;&quot;&gt;throws&lt;/span&gt;&amp;nbsp;IOException,&amp;nbsp;GeneralSecurityException&amp;nbsp;{&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Calendar&amp;nbsp;service&amp;nbsp;&lt;span style=&quot;color: #c792ea;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #82aaff;&quot;&gt;=&lt;/span&gt;&amp;nbsp;createGoogleCalendarService();&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #82aaff;&quot;&gt;return&lt;/span&gt;&amp;nbsp;service.events().list(GOOGLE_KOREA_HOLIDAY_CALENDAR_ID).execute();&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;}&lt;/div&gt;
&lt;/div&gt;
&lt;div style=&quot;text-align: right; margin-top: -13px; margin-right: 5px; font-size: 9px; font-style: italic;&quot;&gt;&lt;a style=&quot;color: #4f4f4ftext-decoration:none;&quot; href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Colored by Color Scripter&lt;/a&gt;&lt;/div&gt;
&lt;/td&gt;
&lt;td style=&quot;vertical-align: bottom; padding: 0 2px 4px 0;&quot;&gt;&lt;a style=&quot;text-decoration: none; color: white;&quot; href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;&lt;span style=&quot;font-size: 9px; word-break: normal; background-color: #4f4f4f; color: white; border-radius: 10px; padding: 1px;&quot;&gt;cs&lt;/span&gt;&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;div class=&quot;colorscripter-code&quot; style=&quot;color: #f9f6f6; font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; position: relative !important; overflow: auto;&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;div style=&quot;color: #ffffff; font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; position: relative !important; overflow: auto;&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;background-color: #9feec3;&quot;&gt;&lt;b&gt;3 EventDateTime을 LocalDateTime으로 변경하기&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #4d5156;&quot;&gt;&lt;span style=&quot;background-color: #ffffff;&quot;&gt;Google calendar API는 모든 날짜 데이터를 EventDateTime으로 전달해준다. 그래서 DB에 저장하거나 해당 값을 이용하기 위해서 LocalDateTime으로 변경하주는 과정이 필요하였다. 만약, 해당 과정이 필요한 경우에만 사용하면 된다.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #4d5156; text-align: start;&quot;&gt;- 생성 위치: package com.lchy.develop.common. utils&lt;/span&gt;&lt;/p&gt;
&lt;div class=&quot;colorscripter-code&quot; style=&quot;color: #f9f6f6; font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; position: relative !important; overflow: auto;&quot;&gt;
&lt;table class=&quot;colorscripter-code-table&quot; style=&quot;margin: 0; padding: 0; border: none; background-color: #0f111a; border-radius: 4px;&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 6px; border-right: 2px solid #4f4f4f;&quot;&gt;
&lt;div style=&quot;margin: 0; padding: 0; word-break: normal; text-align: right; color: #aaa; font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height: 130%;&quot;&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;1&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;2&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;3&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;4&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;5&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;6&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;7&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;8&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;9&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;10&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;11&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;12&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;13&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;14&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;15&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;16&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;17&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;18&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;19&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;20&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;21&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;22&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;23&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;24&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;25&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;26&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;27&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;28&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;29&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;30&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;31&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;32&lt;/div&gt;
&lt;/div&gt;
&lt;/td&gt;
&lt;td style=&quot;padding: 6px 0; text-align: left;&quot;&gt;
&lt;div style=&quot;margin: 0; padding: 0; color: #f9f6f6; font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height: 130%;&quot;&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&lt;span style=&quot;color: #82aaff;&quot;&gt;import&lt;/span&gt;&amp;nbsp;com.google.api.services.calendar.model.EventDateTime;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&lt;span style=&quot;color: #82aaff;&quot;&gt;import&lt;/span&gt;&amp;nbsp;java.time.Instant;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&lt;span style=&quot;color: #82aaff;&quot;&gt;import&lt;/span&gt;&amp;nbsp;java.time.LocalDateTime;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&lt;span style=&quot;color: #82aaff;&quot;&gt;import&lt;/span&gt;&amp;nbsp;java.time.ZoneId;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&lt;span style=&quot;color: #82aaff;&quot;&gt;import&lt;/span&gt;&amp;nbsp;org.springframework.http.HttpStatus;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&lt;span style=&quot;color: #82aaff;&quot;&gt;import&lt;/span&gt;&amp;nbsp;org.springframework.stereotype.Component;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;@Component&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&lt;span style=&quot;color: #82aaff;&quot;&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: #82aaff;&quot;&gt;class&lt;/span&gt;&amp;nbsp;DateUtils&amp;nbsp;{&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #6e7a96;&quot;&gt;/**&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&lt;span style=&quot;color: #6e7a96;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;*&amp;nbsp;EventDateTime&amp;nbsp;에서&amp;nbsp;LocalDateTime으로&amp;nbsp;변환하는&amp;nbsp;함수&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&lt;span style=&quot;color: #6e7a96;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;*&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&lt;span style=&quot;color: #6e7a96;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;*&amp;nbsp;@param&amp;nbsp;eventDateTime&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&lt;span style=&quot;color: #6e7a96;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;*&amp;nbsp;@return&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&lt;span style=&quot;color: #6e7a96;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;*/&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #82aaff;&quot;&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: #82aaff;&quot;&gt;static&lt;/span&gt;&amp;nbsp;LocalDateTime&amp;nbsp;convertEventDateTimeToLocalDateTime(EventDateTime&amp;nbsp;eventDateTime)&amp;nbsp;{&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #82aaff;&quot;&gt;if&lt;/span&gt;&amp;nbsp;(eventDateTime.getDateTime()&amp;nbsp;&lt;span style=&quot;color: #c792ea;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #82aaff;&quot;&gt;!&lt;/span&gt;&lt;span style=&quot;color: #c792ea;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #82aaff;&quot;&gt;=&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: #89ddff;&quot;&gt;null&lt;/span&gt;)&amp;nbsp;{&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #82aaff;&quot;&gt;return&lt;/span&gt;&amp;nbsp;LocalDateTime.ofInstant(&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Instant.ofEpochMilli(eventDateTime.getDateTime().getValue()),&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ZoneId.systemDefault()&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;);&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&amp;nbsp;&lt;span style=&quot;color: #82aaff;&quot;&gt;else&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: #82aaff;&quot;&gt;if&lt;/span&gt;&amp;nbsp;(eventDateTime.getDate()&amp;nbsp;&lt;span style=&quot;color: #c792ea;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #82aaff;&quot;&gt;!&lt;/span&gt;&lt;span style=&quot;color: #c792ea;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #82aaff;&quot;&gt;=&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: #89ddff;&quot;&gt;null&lt;/span&gt;)&amp;nbsp;{&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #82aaff;&quot;&gt;return&lt;/span&gt;&amp;nbsp;LocalDateTime.ofInstant(&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Instant.ofEpochMilli(eventDateTime.getDate().getValue()),&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ZoneId.systemDefault()&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;).withHour(&lt;span style=&quot;color: #f78c6c;&quot;&gt;0&lt;/span&gt;).withMinute(&lt;span style=&quot;color: #f78c6c;&quot;&gt;0&lt;/span&gt;).withSecond(&lt;span style=&quot;color: #f78c6c;&quot;&gt;0&lt;/span&gt;).withNano(&lt;span style=&quot;color: #f78c6c;&quot;&gt;0&lt;/span&gt;);&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&amp;nbsp;&lt;span style=&quot;color: #82aaff;&quot;&gt;else&lt;/span&gt;&amp;nbsp;{&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #82aaff;&quot;&gt;throw&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: #82aaff;&quot;&gt;new&lt;/span&gt;&amp;nbsp;CustomException(HttpStatus.BAD_REQUEST,&amp;nbsp;ErrorCode.INVALID_EVENTDATETIME);&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;}&lt;/div&gt;
&lt;/div&gt;
&lt;div style=&quot;text-align: right; margin-top: -13px; margin-right: 5px; font-size: 9px; font-style: italic;&quot;&gt;&lt;a style=&quot;color: #4f4f4ftext-decoration:none;&quot; href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Colored by Color Scripter&lt;/a&gt;&lt;/div&gt;
&lt;/td&gt;
&lt;td style=&quot;vertical-align: bottom; padding: 0 2px 4px 0;&quot;&gt;&lt;a style=&quot;text-decoration: none; color: white;&quot; href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;&lt;span style=&quot;font-size: 9px; word-break: normal; background-color: #4f4f4f; color: white; border-radius: 10px; padding: 1px;&quot;&gt;cs&lt;/span&gt;&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;hr data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;background-color: #9feec3;&quot;&gt;&lt;b&gt;3. API test&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;위에서 작성한 코드에서 API 요청 시, Event 값을 받아오는지 확인한다.&lt;br /&gt;&lt;br /&gt;&lt;u&gt;&lt;b&gt;1.&lt;span style=&quot;color: #000000;&quot;&gt;Controlle 생성&lt;/span&gt;&lt;/b&gt;&lt;/u&gt;&lt;br /&gt;&lt;span style=&quot;background-color: #ffffff; color: #4d5156; text-align: start;&quot;&gt;- 생성 위치: package com.lchy.develop.controller&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #4d5156; text-align: start;&quot;&gt;- 코드 설명&lt;/span&gt;&lt;/p&gt;
&lt;div class=&quot;colorscripter-code&quot; style=&quot;color: #f9f6f6; font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; position: relative !important; overflow: auto;&quot;&gt;
&lt;table class=&quot;colorscripter-code-table&quot; style=&quot;margin: 0; padding: 0; border: none; background-color: #0f111a; border-radius: 4px;&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 6px; border-right: 2px solid #4f4f4f;&quot;&gt;
&lt;div style=&quot;margin: 0; padding: 0; word-break: normal; text-align: right; color: #aaa; font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height: 130%;&quot;&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;1&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;2&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;3&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;4&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;5&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;6&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;7&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;8&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;9&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;10&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;11&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;12&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;13&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;14&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;15&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;16&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;17&lt;/div&gt;
&lt;/div&gt;
&lt;/td&gt;
&lt;td style=&quot;padding: 6px 0; text-align: left;&quot;&gt;
&lt;div style=&quot;margin: 0; padding: 0; color: #f9f6f6; font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height: 130%;&quot;&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;@RestController&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;@RequiredArgsConstructor&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;@RequestMapping(&lt;span style=&quot;color: #c3e88d;&quot;&gt;&quot;api/develop/&quot;&lt;/span&gt;)&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&lt;span style=&quot;color: #82aaff;&quot;&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: #82aaff;&quot;&gt;class&lt;/span&gt;&amp;nbsp;GoogleCalendarController&amp;nbsp;{&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #82aaff;&quot;&gt;private&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: #82aaff;&quot;&gt;final&lt;/span&gt;&amp;nbsp;GoogleCalendarService&amp;nbsp;googleCalendarService;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;@GetMapping(&lt;span style=&quot;color: #c3e88d;&quot;&gt;&quot;v1/holiday&quot;&lt;/span&gt;)&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #82aaff;&quot;&gt;public&lt;/span&gt;&amp;nbsp;ResponseEntity&lt;span style=&quot;color: #c792ea;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #82aaff;&quot;&gt;&amp;lt;&lt;/span&gt;Object&lt;span style=&quot;color: #c792ea;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #82aaff;&quot;&gt;&amp;gt;&lt;/span&gt;&amp;nbsp;getHoliday()&amp;nbsp;{&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #82aaff;&quot;&gt;try&lt;/span&gt;&amp;nbsp;{&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Events&amp;nbsp;events&amp;nbsp;&lt;span style=&quot;color: #c792ea;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #82aaff;&quot;&gt;=&lt;/span&gt;&amp;nbsp;googleCalendarService.findHolidayFromGoogleCalendar();&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #82aaff;&quot;&gt;return&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: #82aaff;&quot;&gt;new&lt;/span&gt;&amp;nbsp;ResponseEntity&lt;span style=&quot;color: #c792ea;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #82aaff;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #c792ea;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #82aaff;&quot;&gt;&amp;gt;&lt;/span&gt;(events,&amp;nbsp;HttpStatus.OK);&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&amp;nbsp;&lt;span style=&quot;color: #82aaff;&quot;&gt;catch&lt;/span&gt;&amp;nbsp;(Exception&amp;nbsp;ex)&amp;nbsp;{&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #82aaff;&quot;&gt;throw&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: #82aaff;&quot;&gt;new&lt;/span&gt;&amp;nbsp;CustomException(ex);&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;}&lt;/div&gt;
&lt;/div&gt;
&lt;div style=&quot;text-align: right; margin-top: -13px; margin-right: 5px; font-size: 9px; font-style: italic;&quot;&gt;&lt;a href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Colored by Color Scripter&lt;/a&gt;&lt;/div&gt;
&lt;/td&gt;
&lt;td style=&quot;vertical-align: bottom; padding: 0 2px 4px 0;&quot;&gt;&lt;a style=&quot;text-decoration: none; color: white;&quot; href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;&lt;span style=&quot;font-size: 9px; word-break: normal; background-color: #4f4f4f; color: white; border-radius: 10px; padding: 1px;&quot;&gt;cs&lt;/span&gt;&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;div style=&quot;color: #333333; text-align: start;&quot;&gt;&lt;u&gt;&lt;b&gt;2.&lt;span&gt; Postman 테스트&lt;/span&gt;&lt;/b&gt;&lt;/u&gt;&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;의도한 Response가 전달된 것을 확인 가능&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 전체 내용: GetHoliday.json&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;fileblock&quot; data-ke-align=&quot;alignCenter&quot;&gt;&lt;a href=&quot;https://blog.kakaocdn.net/dn/xA7YT/btsCg3zntt3/g2K18tAIp2YAHR5M6Yu301/GetHoliday.json?attach=1&amp;amp;knm=tfile.json&quot; class=&quot;&quot;&gt;
    &lt;div class=&quot;image&quot;&gt;&lt;/div&gt;
    &lt;div class=&quot;desc&quot;&gt;&lt;div class=&quot;filename&quot;&gt;&lt;span class=&quot;name&quot;&gt;GetHoliday.json&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;size&quot;&gt;0.00MB&lt;/div&gt;
&lt;/div&gt;
  &lt;/a&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1598&quot; data-origin-height=&quot;1208&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/POPdM/btsCfCibVrg/MJjUon2F4uRkYi4nKrlchK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/POPdM/btsCfCibVrg/MJjUon2F4uRkYi4nKrlchK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/POPdM/btsCfCibVrg/MJjUon2F4uRkYi4nKrlchK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FPOPdM%2FbtsCfCibVrg%2FMJjUon2F4uRkYi4nKrlchK%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;1598&quot; height=&quot;1208&quot; data-origin-width=&quot;1598&quot; data-origin-height=&quot;1208&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;u&gt;&lt;b&gt;3.&lt;span&gt;&lt;span&gt; Response 설명&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/u&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc; background-color: #ffffff; color: #1f2328; text-align: start;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Google calendar API 사용 시, 시간에 대한 데이터는 EventDateTime으로 전달 (EventDateTiem을 LocalDateTime으로 변경하는 DateUtils.convertEventDateTimeToLocalDateTime 함수 추가)&lt;/li&gt;
&lt;li&gt;Google calendar API - Event list 설명
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;updated: 한국 공휴일 캘린더 수정 최종 수정 시간 (RFC 3339 타임 스탬프)&lt;/li&gt;
&lt;li&gt;item: 요청한 캘린더의 일정 목록&lt;/li&gt;
&lt;li&gt;nextSyncToken: 결과가 반환된 이후 변경된 항목만 검색하는 데 나중에 사용되는 토큰&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Google calendar API - Event list 설명
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;attachments: 일정 첨부파일 파일 리스트 (일정당 최대 25개 첨부파일 포함 가능)
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;fileUrl: 첨부파일 대한 URL 링크&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;attendees: 이벤트 참석자 리스트&lt;/li&gt;
&lt;li&gt;colorId: 이벤트의 색상&lt;/li&gt;
&lt;li&gt;created: 이벤트 생성 시간 (RFC 3339 타임 스탬프)&lt;/li&gt;
&lt;li&gt;creator: 이벤트 만든 사람 정보&lt;/li&gt;
&lt;li&gt;end: 이벤트 종료 시간&lt;/li&gt;
&lt;li&gt;location: 지리적 위치&lt;/li&gt;
&lt;li&gt;summary: 이벤트 제목&lt;/li&gt;
&lt;li&gt;visibility: 이벤트 공개 상태&lt;/li&gt;
&lt;li&gt;start: 이벤트 시작 시간&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;hr data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style7&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;받은 공휴일 데이터를 가지고 각 국가별 공휴일 데이터를 저장하는 Table을 생성하여 일정 주기마다 &lt;span style=&quot;background-color: #ffffff; color: #1f2328; text-align: left;&quot;&gt;update가 현재를 넘어갔다면 Table을 업데이트 해주는 기능을 개발하여 프로젝트에서 공휴일 데이터를 관리할 수 있도록 구현할 예정이다.&lt;/span&gt;&lt;/p&gt;</description>
      <category>Develop/SpringBoot</category>
      <category>Google calendar API</category>
      <category>springboot</category>
      <author>chea-young</author>
      <guid isPermaLink="true">https://chea-young.tistory.com/45</guid>
      <comments>https://chea-young.tistory.com/45#entry45comment</comments>
      <pubDate>Sun, 17 Dec 2023 14:27:51 +0900</pubDate>
    </item>
    <item>
      <title>[Springboot] Custom exception 설정하기</title>
      <link>https://chea-young.tistory.com/44</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #555555;&quot;&gt;Springboot 개발 시, 프런트앤드로 보내주는 예외 상황에 대해서 관리하고, 예외 발생 시, 전달해주는 데이터를 통일해주기 위해 Custom exception 설정을 사용한다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #555555;&quot;&gt;본문 글에서는 ErrorCode를 string으로 지정하였지만 편의에 따라 int로 지정해도 문제없다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #555555;&quot;&gt;&lt;/span&gt;&lt;br /&gt;&lt;u&gt;&lt;b&gt;Springboot 버전&lt;/b&gt;&lt;/u&gt;&lt;br /&gt;&lt;span style=&quot;color: #333333;&quot;&gt;- Java 17&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #333333;&quot;&gt;- Springboot 3.2.0&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;u&gt;&lt;b&gt;Gradle&amp;nbsp;&lt;/b&gt;&lt;/u&gt;&lt;/p&gt;
&lt;div class=&quot;colorscripter-code&quot; style=&quot;color: #d7d7d7; font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; position: relative !important; overflow: auto;&quot;&gt;
&lt;table class=&quot;colorscripter-code-table&quot; style=&quot;margin: 0px; padding: 0px; border: none; background-color: #0f111a; border-radius: 4px; height: 335px;&quot; width=&quot;883&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 6px; border-right: 2px solid #4f4f4f; width: 32px;&quot;&gt;
&lt;div style=&quot;margin: 0; padding: 0; word-break: normal; text-align: right; color: #aaa; font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height: 130%;&quot;&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;1&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;2&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;3&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;4&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;5&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;6&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;7&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;8&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;9&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;10&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;11&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;12&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;13&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;14&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;15&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;16&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;17&lt;/div&gt;
&lt;/div&gt;
&lt;/td&gt;
&lt;td style=&quot;padding: 6px 0px; text-align: left; width: 708px;&quot;&gt;
&lt;div style=&quot;margin: 0; padding: 0; color: #d7d7d7; font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height: 130%;&quot;&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;dependencies&amp;nbsp;{&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;implementation&amp;nbsp;'org.springframework.boot:spring-boot-starter-data-jpa'&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;implementation&amp;nbsp;'org.springframework.boot:spring-boot-starter-security'&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;implementation&amp;nbsp;'org.springframework.boot:spring-boot-starter-validation'&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;implementation&amp;nbsp;'org.springframework.boot:spring-boot-starter-web'&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;compileOnly&amp;nbsp;'org.projectlombok:lombok'&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;annotationProcessor&amp;nbsp;'org.projectlombok:lombok'&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;developmentOnly&amp;nbsp;'org.springframework.boot:spring-boot-devtools'&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;runtimeOnly&amp;nbsp;'com.h2database:h2'&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;testImplementation&amp;nbsp;'org.springframework.boot:spring-boot-starter-test'&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;testImplementation&amp;nbsp;'org.springframework.restdocs:spring-restdocs-mockmvc'&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;testImplementation&amp;nbsp;'org.springframework.security:spring-security-test'&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;}&lt;/div&gt;
&lt;/div&gt;
&lt;div style=&quot;text-align: right; margin-top: -13px; margin-right: 5px; font-size: 9px; font-style: italic;&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;/td&gt;
&lt;td style=&quot;vertical-align: bottom; padding: 0px 2px 4px 0px; width: 14px;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;&lt;u&gt;&lt;b&gt;개발 순서&lt;/b&gt;&lt;/u&gt;&lt;br /&gt;&lt;span style=&quot;color: #333333;&quot;&gt;1. E&lt;span style=&quot;background-color: #ffffff; color: #1f2328; text-align: left;&quot;&gt;rrorCode enum 생성 및 설정&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #333333;&quot;&gt;2. &lt;span style=&quot;background-color: #ffffff; color: #1f2328; text-align: left;&quot;&gt;custom exception 생성 및 설정&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #333333;&quot;&gt;3. &lt;span style=&quot;background-color: #ffffff; color: #1f2328; text-align: left;&quot;&gt;custom handler 생성 및 설정&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #333333;&quot;&gt;4. &lt;span style=&quot;color: #1f2328; text-align: left;&quot;&gt;springConfig 설정&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;5. exception 테스트&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;u&gt;&lt;b&gt;개발 폴더 구조&lt;/b&gt;&lt;/u&gt;&lt;/p&gt;
&lt;div class=&quot;colorscripter-code&quot; style=&quot;color: #d7d7d7; font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; position: relative !important; overflow: auto;&quot;&gt;
&lt;table class=&quot;colorscripter-code-table&quot; style=&quot;margin: 0px; padding: 0px; border: none; background-color: #0f111a; border-radius: 4px; height: 301px;&quot; width=&quot;900&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 6px; border-right: 2px solid #4f4f4f; width: 57px;&quot;&gt;
&lt;div style=&quot;margin: 0; padding: 0; word-break: normal; text-align: right; color: #aaa; font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height: 130%;&quot;&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;1&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;2&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;3&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;4&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;5&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;6&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;7&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;8&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;9&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;10&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;11&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;12&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;13&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;14&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;15&lt;/div&gt;
&lt;/div&gt;
&lt;/td&gt;
&lt;td style=&quot;padding: 6px 0px; text-align: left; width: 810px;&quot;&gt;
&lt;div style=&quot;margin: 0; padding: 0; color: #d7d7d7; font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height: 130%;&quot;&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;├──&amp;nbsp;common&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;│&amp;nbsp;&amp;nbsp;&amp;nbsp;├──&amp;nbsp;dto&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;│&amp;nbsp;&amp;nbsp;&amp;nbsp;│&amp;nbsp;&amp;nbsp;&amp;nbsp;└──&amp;nbsp;ErrorDTO.java&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;│&amp;nbsp;&amp;nbsp;&amp;nbsp;├──&amp;nbsp;enumType&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;│&amp;nbsp;&amp;nbsp;&amp;nbsp;│&amp;nbsp;&amp;nbsp;&amp;nbsp;└──&amp;nbsp;ErrorCode.java&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;│&amp;nbsp;&amp;nbsp;&amp;nbsp;├──&amp;nbsp;exception&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;│&amp;nbsp;&amp;nbsp;&amp;nbsp;│&amp;nbsp;&amp;nbsp;&amp;nbsp;└──&amp;nbsp;CustomException.java&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;│&amp;nbsp;&amp;nbsp;&amp;nbsp;└──&amp;nbsp;handler&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;│&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;└──&amp;nbsp;CustomExceptionHandler.java&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;├──&amp;nbsp;config&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;│&amp;nbsp;&amp;nbsp;&amp;nbsp;└──&amp;nbsp;SecurityConfig.java&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;└──&amp;nbsp;develop&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;├──&amp;nbsp;controller&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;│&amp;nbsp;&amp;nbsp;&amp;nbsp;└──&amp;nbsp;DevelopController.java&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;div style=&quot;text-align: right; margin-top: -13px; margin-right: 5px; font-size: 9px; font-style: italic;&quot;&gt;&lt;a style=&quot;color: #4f4f4ftext-decoration:none;&quot; href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Co&lt;/a&gt;&lt;/div&gt;
&lt;/td&gt;
&lt;td style=&quot;vertical-align: bottom; padding: 0px 2px 4px 0px; width: 33px;&quot;&gt;&lt;a style=&quot;text-decoration: none; color: white;&quot; href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;&lt;span style=&quot;font-size: 9px; word-break: normal; background-color: #4f4f4f; color: white; border-radius: 10px; padding: 1px;&quot;&gt;cs&lt;/span&gt;&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style7&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;background-color: #9feec3;&quot;&gt;&lt;b&gt;1. ErrorCode enum 생성 및 설정&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;springboot 에서 에러를 발생시켰을 떄, 전달할 에러 코드를 관리하는 enum 생성.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;프런트앤드에서는 errorCode를 보고, 어떤 action을 할 지 케이스를 나눌 수 있음.&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #4d5156; text-align: start;&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;- 생성 위치: package com.lchy.develop.common.enumType&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #4d5156; text-align: start;&quot;&gt;- 코드 설명&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #4d5156; text-align: start;&quot;&gt;&amp;nbsp; - code: 프런트앤드로 전달되는 데이터로, 전달받은 코드를 통해 해당 에러를 받았을 때, 어떠한 조치를 취해야할 지 구현하는 것을 도움&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #4d5156; text-align: start;&quot;&gt;&amp;nbsp; - msg: 전달 받은 에러 코드에 대한 설명으로, 해당 에러가 어떠한 상황에 발생한 에러인지 알 수 있도록 도움&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #4d5156; text-align: start;&quot;&gt;&amp;nbsp; - UNKNOWN(&quot;000_UNKNOWN&quot;, &quot;알 수 없는 에러가 발생했습니다.&quot;): 의도하지 않은 에러 발생한 상황 시, 추후 logging 시스템에서 확인 후, 코드 수정을 돕기 위해 생성한 에러 코드&lt;/span&gt;&lt;/p&gt;
&lt;div class=&quot;colorscripter-code&quot; style=&quot;color: #f9f6f6; font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; position: relative !important; overflow: auto;&quot;&gt;
&lt;table class=&quot;colorscripter-code-table&quot; style=&quot;margin: 0; padding: 0; border: none; background-color: #0f111a; border-radius: 4px;&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 6px; border-right: 2px solid #4f4f4f; width: 32px;&quot;&gt;
&lt;div style=&quot;margin: 0; padding: 0; word-break: normal; text-align: right; color: #aaa; font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height: 130%;&quot;&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;1&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;2&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;3&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;4&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;5&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;6&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;7&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;8&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;9&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;10&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;11&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;12&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;13&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;14&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;15&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;16&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;17&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;18&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;19&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;20&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;21&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;22&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;23&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;24&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;25&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;26&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;27&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;28&lt;/div&gt;
&lt;/div&gt;
&lt;/td&gt;
&lt;td style=&quot;padding: 6px 0px; text-align: left; width: 872px;&quot;&gt;
&lt;div style=&quot;margin: 0; padding: 0; color: #f9f6f6; font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height: 130%;&quot;&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&lt;span style=&quot;color: #82aaff;&quot;&gt;import&lt;/span&gt;&amp;nbsp;lombok.Getter;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&lt;span style=&quot;color: #82aaff;&quot;&gt;import&lt;/span&gt;&amp;nbsp;lombok.RequiredArgsConstructor;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;@Getter&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;@RequiredArgsConstructor&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&lt;span style=&quot;color: #82aaff;&quot;&gt;public&lt;/span&gt;&amp;nbsp;enum&amp;nbsp;ErrorCode&amp;nbsp;{&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #6e7a96;&quot;&gt;//&amp;nbsp;400&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;UNKNOWN(&lt;span style=&quot;color: #c3e88d;&quot;&gt;&quot;000_UNKNOWN&quot;&lt;/span&gt;,&amp;nbsp;&lt;span style=&quot;color: #c3e88d;&quot;&gt;&quot;알&amp;nbsp;수&amp;nbsp;없는&amp;nbsp;에러가&amp;nbsp;발생했습니다.&quot;&lt;/span&gt;),&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ENCRYPTION_FAILED(&lt;span style=&quot;color: #c3e88d;&quot;&gt;&quot;001_ENCRYPTION_FAILED&quot;&lt;/span&gt;,&amp;nbsp;&lt;span style=&quot;color: #c3e88d;&quot;&gt;&quot;암호화에&amp;nbsp;실패하셨습니다.&quot;&lt;/span&gt;),&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;DECRYPTION_FAILED(&lt;span style=&quot;color: #c3e88d;&quot;&gt;&quot;002_DECRYPTION_FAILED&quot;&lt;/span&gt;,&amp;nbsp;&lt;span style=&quot;color: #c3e88d;&quot;&gt;&quot;복호화에&amp;nbsp;실패하셨습니다.&quot;&lt;/span&gt;),&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;DUPLICATED_EMAIL(&lt;span style=&quot;color: #c3e88d;&quot;&gt;&quot;003_DUPLICATED_EMAIL&quot;&lt;/span&gt;,&amp;nbsp;&lt;span style=&quot;color: #c3e88d;&quot;&gt;&quot;이미&amp;nbsp;등록되어&amp;nbsp;있는&amp;nbsp;이메일입니다.&quot;&lt;/span&gt;),&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;REGISTERED_EMAIL_FOR_THE_OTHER(&lt;span style=&quot;color: #c3e88d;&quot;&gt;&quot;004_REGISTERED_EMAIL_FOR_THE_OTHER&quot;&lt;/span&gt;,&amp;nbsp;&lt;span style=&quot;color: #c3e88d;&quot;&gt;&quot;다른&amp;nbsp;서비스로&amp;nbsp;등록되어&amp;nbsp;있는&amp;nbsp;이메일입니다.&quot;&lt;/span&gt;),&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;INVALID_PASSWORD(&lt;span style=&quot;color: #c3e88d;&quot;&gt;&quot;005_INVALID_PASSWORD&quot;&lt;/span&gt;,&amp;nbsp;&lt;span style=&quot;color: #c3e88d;&quot;&gt;&quot;유효하지&amp;nbsp;않은&amp;nbsp;비밀번호&amp;nbsp;입니다.&quot;&lt;/span&gt;),&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;NOT_EXISTED_EMAIL(&lt;span style=&quot;color: #c3e88d;&quot;&gt;&quot;006_NOT_EXISTED_EMAIL&quot;&lt;/span&gt;,&amp;nbsp;&lt;span style=&quot;color: #c3e88d;&quot;&gt;&quot;존재하지&amp;nbsp;않는&amp;nbsp;회원입니다.&quot;&lt;/span&gt;),&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;BLOCKED_EMAIL(&lt;span style=&quot;color: #c3e88d;&quot;&gt;&quot;007_BLOCKED_EMAIL&quot;&lt;/span&gt;,&amp;nbsp;&lt;span style=&quot;color: #c3e88d;&quot;&gt;&quot;차단된&amp;nbsp;사용자&amp;nbsp;입니다.&quot;&lt;/span&gt;),&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;WRONG_PASSWORD(&lt;span style=&quot;color: #c3e88d;&quot;&gt;&quot;008_WRONG_PASSWORD&quot;&lt;/span&gt;,&amp;nbsp;&lt;span style=&quot;color: #c3e88d;&quot;&gt;&quot;틀린&amp;nbsp;비밀번호&amp;nbsp;입니다.&quot;&lt;/span&gt;),&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;NOT_ALLOW_EMAIL(&lt;span style=&quot;color: #c3e88d;&quot;&gt;&quot;009_NOT_ALLOW_EMAIL&quot;&lt;/span&gt;,&amp;nbsp;&lt;span style=&quot;color: #c3e88d;&quot;&gt;&quot;이메일&amp;nbsp;사용이&amp;nbsp;허용이&amp;nbsp;되지&amp;nbsp;않은&amp;nbsp;사용자입니다.&quot;&lt;/span&gt;),&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #6e7a96;&quot;&gt;//&amp;nbsp;401&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;INVALID_TOKEN(&lt;span style=&quot;color: #c3e88d;&quot;&gt;&quot;101_INVALID_TOKEN&quot;&lt;/span&gt;,&amp;nbsp;&lt;span style=&quot;color: #c3e88d;&quot;&gt;&quot;유효하지&amp;nbsp;않은&amp;nbsp;토큰입니다.&quot;&lt;/span&gt;),&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;EXPIRED_TOKEN(&lt;span style=&quot;color: #c3e88d;&quot;&gt;&quot;102_EXPIRED_TOKEN&quot;&lt;/span&gt;,&amp;nbsp;&lt;span style=&quot;color: #c3e88d;&quot;&gt;&quot;만료된&amp;nbsp;토큰입니다.&quot;&lt;/span&gt;),&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #6e7a96;&quot;&gt;//&amp;nbsp;403&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ACESS_DENIED_EMAIL(&lt;span style=&quot;color: #c3e88d;&quot;&gt;&quot;301_ACESS_DENIED_EMAIL&quot;&lt;/span&gt;,&amp;nbsp;&lt;span style=&quot;color: #c3e88d;&quot;&gt;&quot;접근&amp;nbsp;권한이&amp;nbsp;없는&amp;nbsp;사용자&amp;nbsp;요청입니다.&quot;&lt;/span&gt;);&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #82aaff;&quot;&gt;private&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: #82aaff;&quot;&gt;final&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: #89ddff;&quot;&gt;String&lt;/span&gt;&amp;nbsp;code;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #82aaff;&quot;&gt;private&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: #82aaff;&quot;&gt;final&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: #89ddff;&quot;&gt;String&lt;/span&gt;&amp;nbsp;msg;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;}&lt;/div&gt;
&lt;/div&gt;
&lt;div style=&quot;text-align: right; margin-top: -13px; margin-right: 5px; font-size: 9px; font-style: italic;&quot;&gt;&lt;a style=&quot;color: #4f4f4ftext-decoration:none;&quot; href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Colored by Color Scripter&lt;/a&gt;&lt;/div&gt;
&lt;/td&gt;
&lt;td style=&quot;vertical-align: bottom; padding: 0px 2px 4px 0px; width: 129px;&quot;&gt;&lt;a style=&quot;text-decoration: none; color: white;&quot; href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;&lt;span style=&quot;font-size: 9px; word-break: normal; background-color: #4f4f4f; color: white; border-radius: 10px; padding: 1px;&quot;&gt;cs&lt;/span&gt;&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;div style=&quot;color: #ffffff; font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; position: relative !important; overflow: auto;&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;background-color: #9feec3;&quot;&gt;&lt;b&gt;2. Custom Exception 생성 및 설정&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff;&quot;&gt;&lt;span style=&quot;color: #4d5156;&quot;&gt;exception을 예외를 전달할 때, 상세한 정보를 전달하기 위한 Exception을 생성&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;u&gt;&lt;b&gt;&lt;/b&gt;&lt;/u&gt;&lt;span style=&quot;background-color: #ffffff;&quot;&gt;&lt;span style=&quot;color: #4d5156;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #4d5156; text-align: start;&quot;&gt;- 생성 위치: package com.lchy.develop.common.exception&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #4d5156; text-align: start;&quot;&gt;- 코드 설명&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #4d5156; text-align: start;&quot;&gt;&amp;nbsp; - private final HttpStatus status: 원하는 HttpStatus로 에러 전달하기 위한 데이터&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #4d5156; text-align: start;&quot;&gt;&amp;nbsp; - private final ErrorCode errorCode: 발생한 에러 상황에 대해서 프런트로 코드와 하여 전달하기 위한 데이터&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #4d5156; text-align: start;&quot;&gt;&amp;nbsp; - private final String detail: 만약, 명세화하지 않은 에러가 발생한 경우, 발생한 에러에 대한 원인을 전달하기 위한 데이터&lt;/span&gt;&lt;/p&gt;
&lt;div class=&quot;colorscripter-code&quot; style=&quot;color: #f9f6f6; font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; position: relative !important; overflow: auto;&quot;&gt;
&lt;table class=&quot;colorscripter-code-table&quot; style=&quot;margin: 0; padding: 0; border: none; background-color: #0f111a; border-radius: 4px;&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 6px; border-right: 2px solid #4f4f4f;&quot;&gt;
&lt;div style=&quot;margin: 0; padding: 0; word-break: normal; text-align: right; color: #aaa; font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height: 130%;&quot;&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;1&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;2&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;3&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;4&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;5&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;6&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;7&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;8&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;9&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;10&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;11&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;12&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;13&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;14&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;15&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;16&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;17&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;18&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;19&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;20&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;21&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;22&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;23&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;24&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;25&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;26&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;27&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;28&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;29&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;30&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;31&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;32&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;33&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;34&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;35&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;36&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;37&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;38&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;39&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;40&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;41&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;42&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;43&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;44&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;45&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;46&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;47&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;48&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;49&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;50&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;51&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;52&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;53&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;54&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;55&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;56&lt;/div&gt;
&lt;/div&gt;
&lt;/td&gt;
&lt;td style=&quot;padding: 6px 0; text-align: left;&quot;&gt;
&lt;div style=&quot;margin: 0; padding: 0; color: #f9f6f6; font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height: 130%;&quot;&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&lt;span style=&quot;color: #82aaff;&quot;&gt;package&lt;/span&gt;&amp;nbsp;com.compono.ibackend.common.exception;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&lt;span style=&quot;color: #82aaff;&quot;&gt;import&lt;/span&gt;&amp;nbsp;com.compono.ibackend.common.enumType.ErrorCode;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&lt;span style=&quot;color: #82aaff;&quot;&gt;import&lt;/span&gt;&amp;nbsp;lombok.Getter;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&lt;span style=&quot;color: #82aaff;&quot;&gt;import&lt;/span&gt;&amp;nbsp;org.springframework.http.HttpStatus;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;@Getter&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&lt;span style=&quot;color: #82aaff;&quot;&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: #82aaff;&quot;&gt;class&lt;/span&gt;&amp;nbsp;CustomException&amp;nbsp;&lt;span style=&quot;color: #82aaff;&quot;&gt;extends&lt;/span&gt;&amp;nbsp;RuntimeException&amp;nbsp;{&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #82aaff;&quot;&gt;private&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: #82aaff;&quot;&gt;final&lt;/span&gt;&amp;nbsp;HttpStatus&amp;nbsp;status;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #82aaff;&quot;&gt;private&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: #82aaff;&quot;&gt;final&lt;/span&gt;&amp;nbsp;ErrorCode&amp;nbsp;errorCode;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #82aaff;&quot;&gt;private&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: #82aaff;&quot;&gt;final&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: #89ddff;&quot;&gt;String&lt;/span&gt;&amp;nbsp;detail;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #82aaff;&quot;&gt;public&lt;/span&gt;&amp;nbsp;CustomException(HttpStatus&amp;nbsp;status,&amp;nbsp;ErrorCode&amp;nbsp;errorCode)&amp;nbsp;{&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #82aaff;&quot;&gt;this&lt;/span&gt;.status&amp;nbsp;&lt;span style=&quot;color: #c792ea;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #82aaff;&quot;&gt;=&lt;/span&gt;&amp;nbsp;status;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #82aaff;&quot;&gt;this&lt;/span&gt;.errorCode&amp;nbsp;&lt;span style=&quot;color: #c792ea;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #82aaff;&quot;&gt;=&lt;/span&gt;&amp;nbsp;errorCode;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #82aaff;&quot;&gt;this&lt;/span&gt;.detail&amp;nbsp;&lt;span style=&quot;color: #c792ea;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #82aaff;&quot;&gt;=&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: #c3e88d;&quot;&gt;&quot;&quot;&lt;/span&gt;;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #82aaff;&quot;&gt;public&lt;/span&gt;&amp;nbsp;CustomException(HttpStatus&amp;nbsp;status,&amp;nbsp;ErrorCode&amp;nbsp;errorCode,&amp;nbsp;&lt;span style=&quot;color: #89ddff;&quot;&gt;String&lt;/span&gt;&amp;nbsp;detail)&amp;nbsp;{&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #82aaff;&quot;&gt;this&lt;/span&gt;.status&amp;nbsp;&lt;span style=&quot;color: #c792ea;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #82aaff;&quot;&gt;=&lt;/span&gt;&amp;nbsp;status;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #82aaff;&quot;&gt;this&lt;/span&gt;.errorCode&amp;nbsp;&lt;span style=&quot;color: #c792ea;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #82aaff;&quot;&gt;=&lt;/span&gt;&amp;nbsp;errorCode;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #82aaff;&quot;&gt;this&lt;/span&gt;.detail&amp;nbsp;&lt;span style=&quot;color: #c792ea;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #82aaff;&quot;&gt;=&lt;/span&gt;&amp;nbsp;detail;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #82aaff;&quot;&gt;public&lt;/span&gt;&amp;nbsp;CustomException(HttpStatus&amp;nbsp;status,&amp;nbsp;ErrorCode&amp;nbsp;errorCode,&amp;nbsp;Throwable&amp;nbsp;cause)&amp;nbsp;{&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #82aaff;&quot;&gt;this&lt;/span&gt;.status&amp;nbsp;&lt;span style=&quot;color: #c792ea;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #82aaff;&quot;&gt;=&lt;/span&gt;&amp;nbsp;status;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #82aaff;&quot;&gt;this&lt;/span&gt;.errorCode&amp;nbsp;&lt;span style=&quot;color: #c792ea;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #82aaff;&quot;&gt;=&lt;/span&gt;&amp;nbsp;errorCode;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #82aaff;&quot;&gt;this&lt;/span&gt;.detail&amp;nbsp;&lt;span style=&quot;color: #c792ea;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #82aaff;&quot;&gt;=&lt;/span&gt;&amp;nbsp;cause.getMessage();&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #82aaff;&quot;&gt;public&lt;/span&gt;&amp;nbsp;CustomException(HttpStatus&amp;nbsp;status,&amp;nbsp;CustomException&amp;nbsp;customException)&amp;nbsp;{&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #82aaff;&quot;&gt;this&lt;/span&gt;.status&amp;nbsp;&lt;span style=&quot;color: #c792ea;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #82aaff;&quot;&gt;=&lt;/span&gt;&amp;nbsp;status;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #82aaff;&quot;&gt;this&lt;/span&gt;.errorCode&amp;nbsp;&lt;span style=&quot;color: #c792ea;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #82aaff;&quot;&gt;=&lt;/span&gt;&amp;nbsp;customException.getErrorCode();&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #82aaff;&quot;&gt;this&lt;/span&gt;.detail&amp;nbsp;&lt;span style=&quot;color: #c792ea;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #82aaff;&quot;&gt;=&lt;/span&gt;&amp;nbsp;customException.getDetail();&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #82aaff;&quot;&gt;public&lt;/span&gt;&amp;nbsp;CustomException(HttpStatus&amp;nbsp;status,&amp;nbsp;Throwable&amp;nbsp;cause)&amp;nbsp;{&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #82aaff;&quot;&gt;this&lt;/span&gt;.status&amp;nbsp;&lt;span style=&quot;color: #c792ea;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #82aaff;&quot;&gt;=&lt;/span&gt;&amp;nbsp;status;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #82aaff;&quot;&gt;this&lt;/span&gt;.errorCode&amp;nbsp;&lt;span style=&quot;color: #c792ea;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #82aaff;&quot;&gt;=&lt;/span&gt;&amp;nbsp;ErrorCode.UNKNOWN;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #82aaff;&quot;&gt;this&lt;/span&gt;.detail&amp;nbsp;&lt;span style=&quot;color: #c792ea;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #82aaff;&quot;&gt;=&lt;/span&gt;&amp;nbsp;cause.getMessage();&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #82aaff;&quot;&gt;public&lt;/span&gt;&amp;nbsp;CustomException(Exception&amp;nbsp;exception)&amp;nbsp;{&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #82aaff;&quot;&gt;if&lt;/span&gt;&amp;nbsp;(exception.&lt;span style=&quot;color: #89ddff;&quot;&gt;getClass&lt;/span&gt;()&amp;nbsp;&lt;span style=&quot;color: #c792ea;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #82aaff;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #c792ea;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #82aaff;&quot;&gt;=&lt;/span&gt;&amp;nbsp;CustomException.&lt;span style=&quot;color: #82aaff;&quot;&gt;class&lt;/span&gt;)&amp;nbsp;{&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;CustomException&amp;nbsp;customException&amp;nbsp;&lt;span style=&quot;color: #c792ea;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #82aaff;&quot;&gt;=&lt;/span&gt;&amp;nbsp;(CustomException)&amp;nbsp;exception;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #82aaff;&quot;&gt;this&lt;/span&gt;.status&amp;nbsp;&lt;span style=&quot;color: #c792ea;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #82aaff;&quot;&gt;=&lt;/span&gt;&amp;nbsp;customException.getStatus();&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #82aaff;&quot;&gt;this&lt;/span&gt;.errorCode&amp;nbsp;&lt;span style=&quot;color: #c792ea;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #82aaff;&quot;&gt;=&lt;/span&gt;&amp;nbsp;customException.getErrorCode();&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #82aaff;&quot;&gt;this&lt;/span&gt;.detail&amp;nbsp;&lt;span style=&quot;color: #c792ea;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #82aaff;&quot;&gt;=&lt;/span&gt;&amp;nbsp;customException.getMessage();&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&amp;nbsp;&lt;span style=&quot;color: #82aaff;&quot;&gt;else&lt;/span&gt;&amp;nbsp;{&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #82aaff;&quot;&gt;this&lt;/span&gt;.status&amp;nbsp;&lt;span style=&quot;color: #c792ea;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #82aaff;&quot;&gt;=&lt;/span&gt;&amp;nbsp;HttpStatus.BAD_REQUEST;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #82aaff;&quot;&gt;this&lt;/span&gt;.errorCode&amp;nbsp;&lt;span style=&quot;color: #c792ea;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #82aaff;&quot;&gt;=&lt;/span&gt;&amp;nbsp;ErrorCode.UNKNOWN;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #82aaff;&quot;&gt;this&lt;/span&gt;.detail&amp;nbsp;&lt;span style=&quot;color: #c792ea;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #82aaff;&quot;&gt;=&lt;/span&gt;&amp;nbsp;exception.getMessage();&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;}&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;div style=&quot;text-align: right; margin-top: -13px; margin-right: 5px; font-size: 9px; font-style: italic;&quot;&gt;&lt;a style=&quot;color: #4f4f4ftext-decoration:none;&quot; href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Colored by Color Scripter&lt;/a&gt;&lt;/div&gt;
&lt;/td&gt;
&lt;td style=&quot;vertical-align: bottom; padding: 0 2px 4px 0;&quot;&gt;&lt;a style=&quot;text-decoration: none; color: white;&quot; href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;&lt;span style=&quot;font-size: 9px; word-break: normal; background-color: #4f4f4f; color: white; border-radius: 10px; padding: 1px;&quot;&gt;cs&lt;/span&gt;&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;background-color: #9feec3;&quot;&gt;&lt;b&gt;3. Custom&amp;nbsp;handler&amp;nbsp;생성&amp;nbsp;및&amp;nbsp;설정&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;CutomException 발생 시, 프런트로 보낼 ErrorDTO 를 생성하고, ErrorDTO를 전달하는 handler를 생성&lt;br /&gt;&lt;br /&gt;&lt;u&gt;&lt;b&gt;1.&lt;span style=&quot;color: #000000;&quot;&gt;Custom handler 생성&lt;/span&gt;&lt;/b&gt;&lt;/u&gt;&lt;br /&gt;&lt;span style=&quot;background-color: #ffffff; color: #4d5156; text-align: start;&quot;&gt;- 생성 위치: package com.lchy.develop.common.handler&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #4d5156; text-align: start;&quot;&gt;- 코드 설명&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #4d5156; text-align: start;&quot;&gt;&amp;nbsp; - CustomException 생성 시, ErrorDTO에 구현된 데이터 구조로 프런트앤드로 데이터가 보내지게 됨.&lt;/span&gt;&lt;span style=&quot;background-color: #ffffff; color: #4d5156; text-align: start;&quot;&gt;&lt;/span&gt;&lt;/p&gt;
&lt;div class=&quot;colorscripter-code&quot; style=&quot;color: #f9f6f6; font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; position: relative !important; overflow: auto;&quot;&gt;
&lt;table class=&quot;colorscripter-code-table&quot; style=&quot;margin: 0px; padding: 0px; border: none; background-color: #0f111a; border-radius: 4px; height: 265px;&quot; width=&quot;937&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 6px; border-right: 2px solid #4f4f4f;&quot;&gt;
&lt;div style=&quot;margin: 0; padding: 0; word-break: normal; text-align: right; color: #aaa; font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height: 130%;&quot;&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;1&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;2&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;3&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;4&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;5&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;6&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;7&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;8&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;9&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;10&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;11&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;12&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;13&lt;/div&gt;
&lt;/div&gt;
&lt;/td&gt;
&lt;td style=&quot;padding: 6px 0; text-align: left;&quot;&gt;
&lt;div style=&quot;margin: 0; padding: 0; color: #f9f6f6; font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height: 130%;&quot;&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&lt;span style=&quot;color: #82aaff;&quot;&gt;import&lt;/span&gt;&amp;nbsp;com.compono.ibackend.common.exception.CustomException;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&lt;span style=&quot;color: #82aaff;&quot;&gt;import&lt;/span&gt;&amp;nbsp;org.springframework.http.ResponseEntity;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&lt;span style=&quot;color: #82aaff;&quot;&gt;import&lt;/span&gt;&amp;nbsp;org.springframework.web.bind.annotation.ControllerAdvice;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&lt;span style=&quot;color: #82aaff;&quot;&gt;import&lt;/span&gt;&amp;nbsp;org.springframework.web.bind.annotation.ExceptionHandler;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;@ControllerAdvice&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&lt;span style=&quot;color: #82aaff;&quot;&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: #82aaff;&quot;&gt;class&lt;/span&gt;&amp;nbsp;CustomExceptionHandler&amp;nbsp;{&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;@ExceptionHandler(CustomException.&lt;span style=&quot;color: #82aaff;&quot;&gt;class&lt;/span&gt;)&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #82aaff;&quot;&gt;protected&lt;/span&gt;&amp;nbsp;ResponseEntity&lt;span style=&quot;color: #c792ea;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #82aaff;&quot;&gt;&amp;lt;&lt;/span&gt;ErrorDTO&lt;span style=&quot;color: #c792ea;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #82aaff;&quot;&gt;&amp;gt;&lt;/span&gt;&amp;nbsp;handleCustom400Exception(CustomException&amp;nbsp;ex)&amp;nbsp;{&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #82aaff;&quot;&gt;return&lt;/span&gt;&amp;nbsp;ErrorDTO.toResponseEntity(ex);&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;}&lt;/div&gt;
&lt;/div&gt;
&lt;div style=&quot;text-align: right; margin-top: -13px; margin-right: 5px; font-size: 9px; font-style: italic;&quot;&gt;&lt;a style=&quot;color: #4f4f4ftext-decoration:none;&quot; href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;r&lt;/a&gt;&lt;/div&gt;
&lt;/td&gt;
&lt;td style=&quot;vertical-align: bottom; padding: 0 2px 4px 0;&quot;&gt;&lt;a style=&quot;text-decoration: none; color: white;&quot; href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;&lt;span style=&quot;font-size: 9px; word-break: normal; background-color: #4f4f4f; color: white; border-radius: 10px; padding: 1px;&quot;&gt;s&lt;/span&gt;&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&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;u&gt;&lt;b&gt;2.&lt;span style=&quot;color: #000000;&quot;&gt;ErrorDTO 생성&lt;/span&gt;&lt;/b&gt;&lt;/u&gt;&lt;br /&gt;&lt;span style=&quot;background-color: #ffffff; color: #4d5156; text-align: start;&quot;&gt;- 생성 위치: package com.lchy.develop.common.dto&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #4d5156; text-align: start;&quot;&gt;- 코드 설명&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #4d5156; text-align: start;&quot;&gt;&amp;nbsp; - CustomException에 저장된 HttpStatus와 ErrorCode를 통해 ErrorDTO를 생성하여 하나의 파일로 여러가지 HttpStatus와 ErrorCode에 대한 상황을 관리할 수 있도록 함.&lt;/span&gt;&lt;/p&gt;
&lt;div class=&quot;colorscripter-code&quot; style=&quot;color: #f9f6f6; font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; position: relative !important; overflow: auto;&quot;&gt;
&lt;table class=&quot;colorscripter-code-table&quot; style=&quot;margin: 0px; padding: 0px; border: none; background-color: #0f111a; border-radius: 4px; height: 507px;&quot; width=&quot;864&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 6px; border-right: 2px solid #4f4f4f;&quot;&gt;
&lt;div style=&quot;margin: 0; padding: 0; word-break: normal; text-align: right; color: #aaa; font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height: 130%;&quot;&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;1&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;2&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;3&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;4&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;5&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;6&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;7&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;8&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;9&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;10&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;11&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;12&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;13&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;14&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;15&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;16&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;17&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;18&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;19&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;20&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;21&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;22&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;23&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;24&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;25&lt;/div&gt;
&lt;/div&gt;
&lt;/td&gt;
&lt;td style=&quot;padding: 6px 0; text-align: left;&quot;&gt;
&lt;div style=&quot;margin: 0; padding: 0; color: #f9f6f6; font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height: 130%;&quot;&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&lt;span style=&quot;color: #82aaff;&quot;&gt;import&lt;/span&gt;&amp;nbsp;lombok.Builder;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&lt;span style=&quot;color: #82aaff;&quot;&gt;import&lt;/span&gt;&amp;nbsp;lombok.Data;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&lt;span style=&quot;color: #82aaff;&quot;&gt;import&lt;/span&gt;&amp;nbsp;org.springframework.http.ResponseEntity;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;@Data&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;@Builder&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&lt;span style=&quot;color: #82aaff;&quot;&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: #82aaff;&quot;&gt;class&lt;/span&gt;&amp;nbsp;ErrorDTO&amp;nbsp;{&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #82aaff;&quot;&gt;private&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: #89ddff;&quot;&gt;String&lt;/span&gt;&amp;nbsp;code;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #82aaff;&quot;&gt;private&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: #89ddff;&quot;&gt;String&lt;/span&gt;&amp;nbsp;msg;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #82aaff;&quot;&gt;private&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: #89ddff;&quot;&gt;String&lt;/span&gt;&amp;nbsp;detail;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #82aaff;&quot;&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: #82aaff;&quot;&gt;static&lt;/span&gt;&amp;nbsp;ResponseEntity&lt;span style=&quot;color: #c792ea;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #82aaff;&quot;&gt;&amp;lt;&lt;/span&gt;ErrorDTO&lt;span style=&quot;color: #c792ea;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #82aaff;&quot;&gt;&amp;gt;&lt;/span&gt;&amp;nbsp;toResponseEntity(CustomException&amp;nbsp;ex)&amp;nbsp;{&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ErrorCode&amp;nbsp;errorType&amp;nbsp;&lt;span style=&quot;color: #c792ea;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #82aaff;&quot;&gt;=&lt;/span&gt;&amp;nbsp;ex.getErrorCode();&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #89ddff;&quot;&gt;String&lt;/span&gt;&amp;nbsp;detail&amp;nbsp;&lt;span style=&quot;color: #c792ea;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #82aaff;&quot;&gt;=&lt;/span&gt;&amp;nbsp;ex.getDetail();&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #82aaff;&quot;&gt;return&lt;/span&gt;&amp;nbsp;ResponseEntity&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;.status(ex.getStatus())&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;.body(ErrorDTO.builder()&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;.code(errorType.getCode())&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;.msg(errorType.getMsg())&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;.detail(detail)&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;.build());&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;}&lt;/div&gt;
&lt;/div&gt;
&lt;div style=&quot;text-align: right; margin-top: -13px; margin-right: 5px; font-size: 9px; font-style: italic;&quot;&gt;&lt;a style=&quot;color: #4f4f4ftext-decoration:none;&quot; href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Colored by Color Scripter&lt;/a&gt;&lt;/div&gt;
&lt;/td&gt;
&lt;td style=&quot;vertical-align: bottom; padding: 0 2px 4px 0;&quot;&gt;&lt;a style=&quot;text-decoration: none; color: white;&quot; href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;&lt;span style=&quot;font-size: 9px; word-break: normal; background-color: #4f4f4f; color: white; border-radius: 10px; padding: 1px;&quot;&gt;cs&lt;/span&gt;&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;background-color: #9feec3;&quot;&gt;&lt;b&gt;4.&amp;nbsp; springConfig&amp;nbsp;설정&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;div&gt;&lt;span&gt;&lt;span&gt;Spring security가 설정되어 있는 경우, Custom exception은 모두 &quot;/error/**&quot; 라우팅되어 프런트앤드로 전달되기 때문에 &quot;/error/**&quot; path 허용 설정이 필요.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;background-color: #ffffff; color: #4d5156; text-align: start;&quot;&gt;- 생성 위치: package com.lchy.develop.config&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;colorscripter-code&quot; style=&quot;color: #f9f6f6; font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; position: relative !important; overflow: auto;&quot;&gt;
&lt;table class=&quot;colorscripter-code-table&quot; style=&quot;margin: 0px; padding: 0px; border: none; background-color: #0f111a; border-radius: 4px; height: 479px;&quot; width=&quot;966&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 6px; border-right: 2px solid #4f4f4f;&quot;&gt;
&lt;div style=&quot;margin: 0; padding: 0; word-break: normal; text-align: right; color: #aaa; font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height: 130%;&quot;&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;1&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;2&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;3&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;4&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;5&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;6&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;7&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;8&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;9&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;10&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;11&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;12&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;13&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;14&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;15&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;16&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;17&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;18&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;19&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;20&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;21&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;22&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;23&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;24&lt;/div&gt;
&lt;/div&gt;
&lt;/td&gt;
&lt;td style=&quot;padding: 6px 0; text-align: left;&quot;&gt;
&lt;div style=&quot;margin: 0; padding: 0; color: #f9f6f6; font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height: 130%;&quot;&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;@RequiredArgsConstructor&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;@EnableWebSecurity&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;@Configuration&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&lt;span style=&quot;color: #82aaff;&quot;&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: #82aaff;&quot;&gt;class&lt;/span&gt;&amp;nbsp;SecurityConfig&amp;nbsp;{&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #82aaff;&quot;&gt;private&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: #82aaff;&quot;&gt;static&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: #82aaff;&quot;&gt;final&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: #89ddff;&quot;&gt;String&lt;/span&gt;[]&amp;nbsp;DEFAULT_WHITELIST&amp;nbsp;&lt;span style=&quot;color: #c792ea;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #82aaff;&quot;&gt;=&lt;/span&gt;&amp;nbsp;{&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #c3e88d;&quot;&gt;&quot;/status&quot;&lt;/span&gt;,&amp;nbsp;&lt;span style=&quot;color: #c3e88d;&quot;&gt;&quot;/images/**&quot;&lt;/span&gt;,&amp;nbsp;&lt;span style=&quot;color: #c3e88d;&quot;&gt;&quot;/error/**&quot;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;};&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #82aaff;&quot;&gt;private&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: #82aaff;&quot;&gt;static&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: #82aaff;&quot;&gt;final&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: #89ddff;&quot;&gt;String&lt;/span&gt;[]&amp;nbsp;DEVELOP_TEST_PATH&amp;nbsp;&lt;span style=&quot;color: #c792ea;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #82aaff;&quot;&gt;=&lt;/span&gt;&amp;nbsp;{&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #c3e88d;&quot;&gt;&quot;api/develop/**&quot;&lt;/span&gt;,&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;};&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;@Bean&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #82aaff;&quot;&gt;protected&lt;/span&gt;&amp;nbsp;SecurityFilterChain&amp;nbsp;config(HttpSecurity&amp;nbsp;http)&amp;nbsp;&lt;span style=&quot;color: #82aaff;&quot;&gt;throws&lt;/span&gt;&amp;nbsp;Exception&amp;nbsp;{&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;http.authorizeHttpRequests(request&amp;nbsp;&lt;span style=&quot;color: #c792ea;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #82aaff;&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color: #c792ea;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #82aaff;&quot;&gt;&amp;gt;&lt;/span&gt;&amp;nbsp;request&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;.dispatcherTypeMatchers(DispatcherType.FORWARD).permitAll()&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;.requestMatchers(DEFAULT_WHITELIST).permitAll()&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;.requestMatchers(DEVELOP_TEST_PATH).permitAll()&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;.anyRequest().authenticated()&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;);&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #82aaff;&quot;&gt;return&lt;/span&gt;&amp;nbsp;http.build();&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;}&lt;/div&gt;
&lt;/div&gt;
&lt;div style=&quot;text-align: right; margin-top: -13px; margin-right: 5px; font-size: 9px; font-style: italic;&quot;&gt;&lt;a style=&quot;color: #4f4f4ftext-decoration:none;&quot; href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Cr&lt;/a&gt;&lt;/div&gt;
&lt;/td&gt;
&lt;td style=&quot;vertical-align: bottom; padding: 0 2px 4px 0;&quot;&gt;&lt;a style=&quot;text-decoration: none; color: white;&quot; href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;&lt;span style=&quot;font-size: 9px; word-break: normal; background-color: #4f4f4f; color: white; border-radius: 10px; padding: 1px;&quot;&gt;s&lt;/span&gt;&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;background-color: #9feec3;&quot;&gt;&lt;b&gt;5.&amp;nbsp; exception&amp;nbsp;테스트&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;div style=&quot;color: #333333; text-align: start;&quot;&gt;&lt;span&gt;&lt;span&gt;설정한 Custom exception이 의도한 대로 exception 처리를 하는지 확인&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;color: #333333; text-align: start;&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div style=&quot;color: #333333; text-align: start;&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;u&gt;&lt;b&gt;1.&lt;span style=&quot;color: #000000;&quot;&gt; test 용 controller 생성&lt;/span&gt;&lt;/b&gt;&lt;/u&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;div style=&quot;color: #333333; text-align: start;&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #4d5156; text-align: start;&quot;&gt;- 생성 위치: package com.lchy.develop.&lt;/span&gt;&lt;span style=&quot;font-family: -apple-system, BlinkMacSystemFont, 'Helvetica Neue', 'Apple SD Gothic Neo', Arial, sans-serif; letter-spacing: 0px;&quot;&gt;develop.controller&lt;/span&gt;
&lt;div class=&quot;colorscripter-code&quot; style=&quot;color: #f9f6f6; font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; position: relative !important; overflow: auto;&quot;&gt;
&lt;table class=&quot;colorscripter-code-table&quot; style=&quot;margin: 0; padding: 0; border: none; background-color: #0f111a; border-radius: 4px;&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 6px; border-right: 2px solid #4f4f4f;&quot;&gt;
&lt;div style=&quot;margin: 0; padding: 0; word-break: normal; text-align: right; color: #aaa; font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height: 130%;&quot;&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;1&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;2&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;3&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;4&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;5&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;6&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;7&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;8&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;9&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;10&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;11&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;12&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;13&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;14&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;15&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;16&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;17&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;18&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;19&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;20&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;21&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;22&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;23&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;24&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;25&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;26&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;27&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;28&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;29&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;30&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;31&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;32&lt;/div&gt;
&lt;/div&gt;
&lt;/td&gt;
&lt;td style=&quot;padding: 6px 0; text-align: left;&quot;&gt;
&lt;div style=&quot;margin: 0; padding: 0; color: #f9f6f6; font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height: 130%;&quot;&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&lt;span style=&quot;color: #82aaff;&quot;&gt;import&lt;/span&gt;&amp;nbsp;lombok.RequiredArgsConstructor;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&lt;span style=&quot;color: #82aaff;&quot;&gt;import&lt;/span&gt;&amp;nbsp;org.springframework.http.HttpStatus;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&lt;span style=&quot;color: #82aaff;&quot;&gt;import&lt;/span&gt;&amp;nbsp;org.springframework.http.ResponseEntity;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&lt;span style=&quot;color: #82aaff;&quot;&gt;import&lt;/span&gt;&amp;nbsp;org.springframework.web.bind.annotation.GetMapping;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&lt;span style=&quot;color: #82aaff;&quot;&gt;import&lt;/span&gt;&amp;nbsp;org.springframework.web.bind.annotation.RequestMapping;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&lt;span style=&quot;color: #82aaff;&quot;&gt;import&lt;/span&gt;&amp;nbsp;org.springframework.web.bind.annotation.RestController;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;@RestController&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;@RequiredArgsConstructor&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;@RequestMapping(&lt;span style=&quot;color: #c3e88d;&quot;&gt;&quot;api/develop/&quot;&lt;/span&gt;)&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&lt;span style=&quot;color: #82aaff;&quot;&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: #82aaff;&quot;&gt;class&lt;/span&gt;&amp;nbsp;DevelopController&amp;nbsp;{&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;@GetMapping(&lt;span style=&quot;color: #c3e88d;&quot;&gt;&quot;v1/bad-request&quot;&lt;/span&gt;)&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #82aaff;&quot;&gt;public&lt;/span&gt;&amp;nbsp;ResponseEntity&lt;span style=&quot;color: #c792ea;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #82aaff;&quot;&gt;&amp;lt;&lt;/span&gt;Object&lt;span style=&quot;color: #c792ea;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #82aaff;&quot;&gt;&amp;gt;&lt;/span&gt;&amp;nbsp;test400Error()&amp;nbsp;{&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #82aaff;&quot;&gt;try&lt;/span&gt;{&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #82aaff;&quot;&gt;throw&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: #82aaff;&quot;&gt;new&lt;/span&gt;&amp;nbsp;CustomException(HttpStatus.BAD_REQUEST,&amp;nbsp;ErrorCode.INVALID_PASSWORD);&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #82aaff;&quot;&gt;catch&lt;/span&gt;(Exception&amp;nbsp;ex)&amp;nbsp;{&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #82aaff;&quot;&gt;throw&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: #82aaff;&quot;&gt;new&lt;/span&gt;&amp;nbsp;CustomException(ex);&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;@GetMapping(&lt;span style=&quot;color: #c3e88d;&quot;&gt;&quot;v1/unauthorized&quot;&lt;/span&gt;)&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #82aaff;&quot;&gt;public&lt;/span&gt;&amp;nbsp;ResponseEntity&lt;span style=&quot;color: #c792ea;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #82aaff;&quot;&gt;&amp;lt;&lt;/span&gt;Object&lt;span style=&quot;color: #c792ea;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #82aaff;&quot;&gt;&amp;gt;&lt;/span&gt;&amp;nbsp;test401Error()&amp;nbsp;{&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #82aaff;&quot;&gt;try&lt;/span&gt;{&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #82aaff;&quot;&gt;throw&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: #82aaff;&quot;&gt;new&lt;/span&gt;&amp;nbsp;CustomException(HttpStatus.UNAUTHORIZED,&amp;nbsp;ErrorCode.EXPIRED_TOKEN);&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #82aaff;&quot;&gt;catch&lt;/span&gt;(Exception&amp;nbsp;ex)&amp;nbsp;{&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #82aaff;&quot;&gt;throw&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: #82aaff;&quot;&gt;new&lt;/span&gt;&amp;nbsp;CustomException(ex);&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;}&lt;/div&gt;
&lt;/div&gt;
&lt;div style=&quot;text-align: right; margin-top: -13px; margin-right: 5px; font-size: 9px; font-style: italic;&quot;&gt;&lt;a style=&quot;color: #4f4f4ftext-decoration:none;&quot; href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Colored by Color Scripter&lt;/a&gt;&lt;/div&gt;
&lt;/td&gt;
&lt;td style=&quot;vertical-align: bottom; padding: 0 2px 4px 0;&quot;&gt;&lt;a style=&quot;text-decoration: none; color: white;&quot; href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;&lt;span style=&quot;font-size: 9px; word-break: normal; background-color: #4f4f4f; color: white; border-radius: 10px; padding: 1px;&quot;&gt;cs&lt;/span&gt;&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;/div&gt;
&lt;div style=&quot;color: #333333; text-align: start;&quot;&gt;&lt;u&gt;&lt;b&gt;2.&lt;span&gt; Postman 테스트&lt;/span&gt;&lt;/b&gt;&lt;/u&gt;&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;의도한 Response가 전달된 것을 확인 가능&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1478&quot; data-origin-height=&quot;1034&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/H2J0L/btsBGl2vcDT/cDj3cKxIypkMNybEN97V8k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/H2J0L/btsBGl2vcDT/cDj3cKxIypkMNybEN97V8k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/H2J0L/btsBGl2vcDT/cDj3cKxIypkMNybEN97V8k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FH2J0L%2FbtsBGl2vcDT%2FcDj3cKxIypkMNybEN97V8k%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;1478&quot; height=&quot;1034&quot; data-origin-width=&quot;1478&quot; data-origin-height=&quot;1034&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/td&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1464&quot; data-origin-height=&quot;936&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cq1pwz/btsBKeH0Mu1/jH93rzO6GuNkoIO7ISLJnK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cq1pwz/btsBKeH0Mu1/jH93rzO6GuNkoIO7ISLJnK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cq1pwz/btsBKeH0Mu1/jH93rzO6GuNkoIO7ISLJnK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fcq1pwz%2FbtsBKeH0Mu1%2FjH93rzO6GuNkoIO7ISLJnK%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;1464&quot; height=&quot;936&quot; data-origin-width=&quot;1464&quot; data-origin-height=&quot;936&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;div style=&quot;color: #333333; text-align: start;&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;hr data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style7&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;</description>
      <category>Develop/SpringBoot</category>
      <category>ExceptionHandler</category>
      <category>springboot</category>
      <author>chea-young</author>
      <guid isPermaLink="true">https://chea-young.tistory.com/44</guid>
      <comments>https://chea-young.tistory.com/44#entry44comment</comments>
      <pubDate>Mon, 11 Dec 2023 22:50:27 +0900</pubDate>
    </item>
    <item>
      <title>[Springboot - 에러해결] HttpMessageNotWritableException</title>
      <link>https://chea-young.tistory.com/43</link>
      <description>&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;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;background-color: #f6e199; font-family: 'Nanum Gothic';&quot;&gt;&lt;b&gt;1. 에러 메시지&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;converter.HttpMessageNotWritableException: Could not write JSON: JsonObject]&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;background-color: #f6e199; font-family: 'Nanum Gothic';&quot;&gt;&lt;b&gt;2. 원인&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;- DevController&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;div class=&quot;colorscripter-code&quot; style=&quot;color: #f9f6f6; font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; position: relative !important; overflow: auto;&quot;&gt;
&lt;table class=&quot;colorscripter-code-table&quot; style=&quot;margin: 0; padding: 0; border: none; background-color: #0f111a; border-radius: 4px;&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 6px; border-right: 2px solid #4f4f4f;&quot;&gt;
&lt;div style=&quot;margin: 0; padding: 0; word-break: normal; text-align: right; color: #aaa; font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height: 130%;&quot;&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;1&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;2&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;3&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;4&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;5&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;6&lt;/div&gt;
&lt;/div&gt;
&lt;/td&gt;
&lt;td style=&quot;padding: 6px 0; text-align: left;&quot;&gt;
&lt;div style=&quot;margin: 0; padding: 0; color: #f9f6f6; font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height: 130%;&quot;&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;@GetMapping(&lt;span style=&quot;color: #c3e88d;&quot;&gt;&quot;codef/card-list&quot;&lt;/span&gt;)&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #82aaff;&quot;&gt;public&lt;/span&gt;&amp;nbsp;ResponseEntity&lt;span style=&quot;color: #c792ea;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #82aaff;&quot;&gt;&amp;lt;&lt;/span&gt;?&lt;span style=&quot;color: #c792ea;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #82aaff;&quot;&gt;&amp;gt;&lt;/span&gt;&amp;nbsp;sendCardList(@RequestBody&amp;nbsp;CardApproveHistoryDTO&amp;nbsp;approveHistoryDTO)&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #82aaff;&quot;&gt;throws&lt;/span&gt;&amp;nbsp;UnsupportedEncodingException&amp;nbsp;{&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;JsonObject&amp;nbsp;response&amp;nbsp;&lt;span style=&quot;color: #c792ea;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #82aaff;&quot;&gt;=&lt;/span&gt;&amp;nbsp;codefService.getCardList(approveHistoryDTO);&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #82aaff;&quot;&gt;return&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: #82aaff;&quot;&gt;new&lt;/span&gt;&amp;nbsp;ResponseEntity&lt;span style=&quot;color: #c792ea;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #82aaff;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #c792ea;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #82aaff;&quot;&gt;&amp;gt;&lt;/span&gt;(response,&amp;nbsp;HttpStatus.OK);&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/div&gt;
&lt;/div&gt;
&lt;div style=&quot;text-align: right; margin-top: -13px; margin-right: 5px; font-size: 9px; font-style: italic;&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;/td&gt;
&lt;td style=&quot;vertical-align: bottom; padding: 0 2px 4px 0;&quot;&gt;&lt;a style=&quot;text-decoration: none; color: white;&quot; href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;&lt;span style=&quot;font-size: 9px; word-break: normal; background-color: #4f4f4f; color: white; border-radius: 10px; padding: 1px;&quot;&gt;cs&lt;/span&gt;&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;div class=&quot;colorscripter-code&quot; style=&quot;color: #f9f6f6; font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; position: relative !important; overflow: auto;&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- JsonObject 를 ResponseEntity 에 담는 경우, 에러가 뜨는 것을 확인했다.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;background-color: #f6e199; font-family: 'Nanum Gothic';&quot;&gt;&lt;b&gt;3. 해결&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;div class=&quot;colorscripter-code&quot; style=&quot;color: #f9f6f6; font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; position: relative !important; overflow: auto;&quot;&gt;
&lt;table class=&quot;colorscripter-code-table&quot; style=&quot;margin: 0; padding: 0; border: none; background-color: #0f111a; border-radius: 4px;&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 6px; border-right: 2px solid #4f4f4f;&quot;&gt;
&lt;div style=&quot;margin: 0; padding: 0; word-break: normal; text-align: right; color: #aaa; font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height: 130%;&quot;&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;1&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;2&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;3&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;4&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;5&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;6&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;7&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;8&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;9&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;10&lt;/div&gt;
&lt;/div&gt;
&lt;/td&gt;
&lt;td style=&quot;padding: 6px 0; text-align: left;&quot;&gt;
&lt;div style=&quot;margin: 0; padding: 0; color: #f9f6f6; font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height: 130%;&quot;&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&lt;span style=&quot;color: #c792ea;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #82aaff;&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color: #c792ea;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #82aaff;&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color: #c792ea;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #82aaff;&quot;&gt;-&lt;/span&gt;&amp;nbsp;springboot&amp;nbsp;&lt;span style=&quot;color: #f78c6c;&quot;&gt;2.&lt;/span&gt;&lt;span style=&quot;color: #f78c6c;&quot;&gt;4.&lt;/span&gt;&lt;span style=&quot;color: #f78c6c;&quot;&gt;0&lt;/span&gt;&amp;nbsp;이전&amp;nbsp;&lt;span style=&quot;color: #c792ea;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #82aaff;&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color: #c792ea;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #82aaff;&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color: #c792ea;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #82aaff;&quot;&gt;-&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;background-color: #0f111a; padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;sddpring:https:&lt;span style=&quot;color: #c792ea;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #82aaff;&quot;&gt;/&lt;/span&gt;&lt;span style=&quot;color: #c792ea;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #82aaff;&quot;&gt;/&lt;/span&gt;dblog94.tistory.com&lt;span style=&quot;color: #c792ea;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #82aaff;&quot;&gt;/&lt;/span&gt;entry&lt;span style=&quot;color: #c792ea;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #82aaff;&quot;&gt;/&lt;/span&gt;springframeworkhttpconverterHttpMessageNotWritableException&lt;span style=&quot;color: #c792ea;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #82aaff;&quot;&gt;-&lt;/span&gt;Could&lt;span style=&quot;color: #c792ea;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #82aaff;&quot;&gt;-&lt;/span&gt;not&lt;span style=&quot;color: #c792ea;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #82aaff;&quot;&gt;-&lt;/span&gt;write&lt;span style=&quot;color: #c792ea;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #82aaff;&quot;&gt;-&lt;/span&gt;JSON&lt;span style=&quot;color: #c792ea;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #82aaff;&quot;&gt;-&lt;/span&gt;JsonObject&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;http:&lt;/div&gt;
&lt;div style=&quot;background-color: #0f111a; padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;converters:&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;preferred&lt;span style=&quot;color: #c792ea;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #82aaff;&quot;&gt;-&lt;/span&gt;json&lt;span style=&quot;color: #c792ea;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #82aaff;&quot;&gt;-&lt;/span&gt;mapper:&amp;nbsp;gson&lt;/div&gt;
&lt;div style=&quot;background-color: #0f111a; padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&lt;span style=&quot;color: #c792ea;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #82aaff;&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color: #c792ea;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #82aaff;&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color: #c792ea;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #82aaff;&quot;&gt;-&lt;/span&gt;&amp;nbsp;springboot&amp;nbsp;&lt;span style=&quot;color: #f78c6c;&quot;&gt;2.&lt;/span&gt;&lt;span style=&quot;color: #f78c6c;&quot;&gt;4.&lt;/span&gt;&lt;span style=&quot;color: #f78c6c;&quot;&gt;0&lt;/span&gt;&amp;nbsp;이후&amp;nbsp;&lt;span style=&quot;color: #c792ea;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #82aaff;&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color: #c792ea;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #82aaff;&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color: #c792ea;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #82aaff;&quot;&gt;-&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;spring:&lt;/div&gt;
&lt;div style=&quot;background-color: #0f111a; padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;mvc:&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;converters:&lt;/div&gt;
&lt;div style=&quot;background-color: #0f111a; padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;preferred&lt;span style=&quot;color: #c792ea;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #82aaff;&quot;&gt;-&lt;/span&gt;json&lt;span style=&quot;color: #c792ea;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #82aaff;&quot;&gt;-&lt;/span&gt;mapper:&amp;nbsp;gson&lt;/div&gt;
&lt;/div&gt;
&lt;div style=&quot;text-align: right; margin-top: -13px; margin-right: 5px; font-size: 9px; font-style: italic;&quot;&gt;&lt;a style=&quot;color: #4f4f4ftext-decoration:none;&quot; href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Colored by Color Scripter&lt;/a&gt;&lt;/div&gt;
&lt;/td&gt;
&lt;td style=&quot;vertical-align: bottom; padding: 0 2px 4px 0;&quot;&gt;&lt;a style=&quot;text-decoration: none; color: white;&quot; href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;&lt;span style=&quot;font-size: 9px; word-break: normal; background-color: #4f4f4f; color: white; border-radius: 10px; padding: 1px;&quot;&gt;cs&lt;/span&gt;&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1638&quot; data-origin-height=&quot;756&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/LJp4z/btsyTvmbJkp/N83SBnZg5otEnsnnJkGZ6K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/LJp4z/btsyTvmbJkp/N83SBnZg5otEnsnnJkGZ6K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/LJp4z/btsyTvmbJkp/N83SBnZg5otEnsnnJkGZ6K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FLJp4z%2FbtsyTvmbJkp%2FN83SBnZg5otEnsnnJkGZ6K%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;1638&quot; height=&quot;756&quot; data-origin-width=&quot;1638&quot; data-origin-height=&quot;756&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;div class=&quot;colorscripter-code&quot; style=&quot;color: #f9f6f6; font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; position: relative !important; overflow: auto;&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 해당 설정을 application.yml에 추가한 후, 데이터 원활하게 받는 것을 확인했다.&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;참고 사이트&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;-&lt;span&gt; &lt;a href=&quot;https://dblog94.tistory.com/entry/springframeworkhttpconverterHttpMessageNotWritableException-Could-not-write-JSON-JsonObject&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://dblog94.tistory.com/entry/springframeworkhttpconverterHttpMessageNotWritableException-Could-not-write-JSON-JsonObject&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>Error</category>
      <category>springboot</category>
      <author>chea-young</author>
      <guid isPermaLink="true">https://chea-young.tistory.com/43</guid>
      <comments>https://chea-young.tistory.com/43#entry43comment</comments>
      <pubDate>Sun, 22 Oct 2023 13:01:18 +0900</pubDate>
    </item>
    <item>
      <title>[Springboot - 에러해결] ResponseEntity 한국어 데이터 깨짐</title>
      <link>https://chea-young.tistory.com/42</link>
      <description>&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style7&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;background-color: #f6e199; font-family: 'Nanum Gothic';&quot;&gt;&lt;b&gt;1. 에러 메시지&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Resolved&amp;nbsp;[org.springframework.web.HttpMediaTypeNotAcceptableException:&amp;nbsp;Could&amp;nbsp;not&amp;nbsp;find&amp;nbsp;acceptable&amp;nbsp;representation]&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1475&quot; data-origin-height=&quot;28&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bLqGmY/btrLhPeJtGw/gCiFwY6vKCvKr9o801lAk0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bLqGmY/btrLhPeJtGw/gCiFwY6vKCvKr9o801lAk0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bLqGmY/btrLhPeJtGw/gCiFwY6vKCvKr9o801lAk0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbLqGmY%2FbtrLhPeJtGw%2FgCiFwY6vKCvKr9o801lAk0%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;1475&quot; height=&quot;28&quot; data-origin-width=&quot;1475&quot; data-origin-height=&quot;28&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1244&quot; data-origin-height=&quot;417&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/G2oVO/btrLhhijYFF/lPf6v2lq9f2ksBmvOpA0IK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/G2oVO/btrLhhijYFF/lPf6v2lq9f2ksBmvOpA0IK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/G2oVO/btrLhhijYFF/lPf6v2lq9f2ksBmvOpA0IK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FG2oVO%2FbtrLhhijYFF%2FlPf6v2lq9f2ksBmvOpA0IK%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;1244&quot; height=&quot;417&quot; data-origin-width=&quot;1244&quot; data-origin-height=&quot;417&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;background-color: #f6e199; font-family: 'Nanum Gothic';&quot;&gt;&lt;b&gt;2. 원인&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;- PaymentController&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;div class=&quot;colorscripter-code&quot; style=&quot;color: #f9f6f6; font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; position: relative !important; overflow: auto;&quot;&gt;
&lt;table class=&quot;colorscripter-code-table&quot; style=&quot;margin: 0px; padding: 0px; border: none; background-color: #0f111a; border-radius: 4px; width: 867px; height: 266px;&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 6px; border-right: 2px solid #4f4f4f; width: 18.475px;&quot;&gt;
&lt;div style=&quot;margin: 0; padding: 0; word-break: normal; text-align: right; color: #aaa; font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height: 130%;&quot;&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;1&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;2&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;3&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;4&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;5&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;6&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;7&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;8&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;9&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;10&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;11&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;12&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/td&gt;
&lt;td style=&quot;padding: 6px 0px; text-align: left; width: 818.675px;&quot;&gt;
&lt;div style=&quot;margin: 0; padding: 0; color: #f9f6f6; font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height: 130%;&quot;&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;@PostMapping(&lt;span style=&quot;color: #c3e88d;&quot;&gt;&quot;/new&quot;&lt;/span&gt;)&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;@ResponseBody&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #82aaff;&quot;&gt;public&lt;/span&gt;&amp;nbsp;ResponseEntity&lt;span style=&quot;color: #c792ea;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #82aaff;&quot;&gt;&amp;lt;&lt;/span&gt;?&lt;span style=&quot;color: #c792ea;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #82aaff;&quot;&gt;&amp;gt;&lt;/span&gt;&amp;nbsp;savePayment(@RequestBody&amp;nbsp;PaymentRequest&amp;nbsp;paymentRequest)&amp;nbsp;{&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;log.info(&lt;span style=&quot;color: #c3e88d;&quot;&gt;&quot;Payment&amp;nbsp;controller:&amp;nbsp;/api/payment/new&amp;nbsp;---------------------&quot;&lt;/span&gt;);&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #6e7a96;&quot;&gt;//&amp;nbsp;//&amp;nbsp;빌링키&amp;nbsp;발급에&amp;nbsp;실패한&amp;nbsp;경우&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #82aaff;&quot;&gt;if&lt;/span&gt;&amp;nbsp;(billingKeyJson.getCode()&amp;nbsp;&lt;span style=&quot;color: #c792ea;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #82aaff;&quot;&gt;!&lt;/span&gt;&lt;span style=&quot;color: #c792ea;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #82aaff;&quot;&gt;=&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: #f78c6c;&quot;&gt;0&lt;/span&gt;)&amp;nbsp;{&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #82aaff;&quot;&gt;return&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: #82aaff;&quot;&gt;new&lt;/span&gt;&amp;nbsp;ResponseEntity&lt;span style=&quot;color: #c792ea;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #82aaff;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #c792ea;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #82aaff;&quot;&gt;&amp;gt;&lt;/span&gt;(billingKeyJson.getMessage(),&amp;nbsp;HttpStatus.BAD_REQUEST);&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/div&gt;
&lt;/div&gt;
&lt;div style=&quot;text-align: right; margin-top: -13px; margin-right: 5px; font-size: 9px; font-style: italic;&quot;&gt;&lt;a style=&quot;color: #4f4f4ftext-decoration:none;&quot; href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;r&lt;/a&gt;&lt;/div&gt;
&lt;/td&gt;
&lt;td style=&quot;vertical-align: bottom; padding: 0px 2px 4px 0px; width: 13.85px;&quot;&gt;&lt;a style=&quot;text-decoration: none; color: white;&quot; href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;&lt;span style=&quot;font-size: 9px; word-break: normal; background-color: #4f4f4f; color: white; border-radius: 10px; padding: 1px;&quot;&gt;cs&lt;/span&gt;&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 결제API 오류 데이터를 테스트하는 과정에 log에는 한글이 잘 나오지만, Postman 데이터에는 한국어가 깨지는 것을 확인했다.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;background-color: #f6e199; font-family: 'Nanum Gothic';&quot;&gt;&lt;b&gt;3. 해결&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;div class=&quot;colorscripter-code&quot; style=&quot;color: #f9f6f6; font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; position: relative !important; overflow: auto;&quot;&gt;
&lt;table class=&quot;colorscripter-code-table&quot; style=&quot;margin: 0; padding: 0; border: none; background-color: #0f111a; border-radius: 4px;&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 6px; border-right: 2px solid #4f4f4f;&quot;&gt;
&lt;div style=&quot;margin: 0; padding: 0; word-break: normal; text-align: right; color: #aaa; font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height: 130%;&quot;&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;1&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;2&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;3&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;4&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;5&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;6&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;7&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;8&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;9&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;10&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;11&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;12&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;13&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;14&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;15&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;16&lt;/div&gt;
&lt;/div&gt;
&lt;/td&gt;
&lt;td style=&quot;padding: 6px 0; text-align: left;&quot;&gt;
&lt;div style=&quot;margin: 0; padding: 0; color: #f9f6f6; font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height: 130%;&quot;&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;@PostMapping(&lt;span style=&quot;color: #c3e88d;&quot;&gt;&quot;/new&quot;&lt;/span&gt;)&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;@ResponseBody&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #82aaff;&quot;&gt;public&lt;/span&gt;&amp;nbsp;ResponseEntity&lt;span style=&quot;color: #c792ea;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #82aaff;&quot;&gt;&amp;lt;&lt;/span&gt;?&lt;span style=&quot;color: #c792ea;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #82aaff;&quot;&gt;&amp;gt;&lt;/span&gt;&amp;nbsp;savePayment(@RequestBody&amp;nbsp;PaymentRequest&amp;nbsp;paymentRequest)&amp;nbsp;{&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;log.info(&lt;span style=&quot;color: #c3e88d;&quot;&gt;&quot;Payment&amp;nbsp;controller:&amp;nbsp;/api/payment/new&amp;nbsp;---------------------&quot;&lt;/span&gt;);&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #6e7a96;&quot;&gt;// Header 추가 설정&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;HttpHeaders&amp;nbsp;resHeaders&amp;nbsp;&lt;span style=&quot;color: #c792ea;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #82aaff;&quot;&gt;=&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: #82aaff;&quot;&gt;new&lt;/span&gt;&amp;nbsp;HttpHeaders();&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;resHeaders.&lt;span style=&quot;color: #89ddff;&quot;&gt;add&lt;/span&gt;(&lt;span style=&quot;color: #c3e88d;&quot;&gt;&quot;Content-Type&quot;&lt;/span&gt;,&amp;nbsp;&lt;span style=&quot;color: #c3e88d;&quot;&gt;&quot;application/json;charset=UTF-8&quot;&lt;/span&gt;);&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #6e7a96;&quot;&gt;//&amp;nbsp;//&amp;nbsp;빌링키&amp;nbsp;발급에&amp;nbsp;실패한&amp;nbsp;경우&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #82aaff;&quot;&gt;if&lt;/span&gt;&amp;nbsp;(billingKeyJson.getCode()&amp;nbsp;&lt;span style=&quot;color: #c792ea;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #82aaff;&quot;&gt;!&lt;/span&gt;&lt;span style=&quot;color: #c792ea;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #82aaff;&quot;&gt;=&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: #f78c6c;&quot;&gt;0&lt;/span&gt;)&amp;nbsp;{&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #82aaff;&quot;&gt;return&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: #82aaff;&quot;&gt;new&lt;/span&gt;&amp;nbsp;ResponseEntity&lt;span style=&quot;color: #c792ea;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #82aaff;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #c792ea;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #82aaff;&quot;&gt;&amp;gt;&lt;/span&gt;(billingKeyJson.getMessage(),&amp;nbsp;resHeaders,&amp;nbsp;HttpStatus.BAD_REQUEST);&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/div&gt;
&lt;/div&gt;
&lt;div style=&quot;text-align: right; margin-top: -13px; margin-right: 5px; font-size: 9px; font-style: italic;&quot;&gt;&lt;a style=&quot;color: #4f4f4ftext-decoration:none;&quot; href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;or Scripter&lt;/a&gt;&lt;/div&gt;
&lt;/td&gt;
&lt;td style=&quot;vertical-align: bottom; padding: 0 2px 4px 0;&quot;&gt;&lt;a style=&quot;text-decoration: none; color: white;&quot; href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;&lt;span style=&quot;font-size: 9px; word-break: normal; background-color: #4f4f4f; color: white; border-radius: 10px; padding: 1px;&quot;&gt;cs&lt;/span&gt;&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1258&quot; data-origin-height=&quot;294&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dgzBI0/btrLirLaWUZ/nuMu7YNHaqqEol2GPpamL1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dgzBI0/btrLirLaWUZ/nuMu7YNHaqqEol2GPpamL1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dgzBI0/btrLirLaWUZ/nuMu7YNHaqqEol2GPpamL1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdgzBI0%2FbtrLirLaWUZ%2FnuMu7YNHaqqEol2GPpamL1%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;1258&quot; height=&quot;294&quot; data-origin-width=&quot;1258&quot; data-origin-height=&quot;294&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;div class=&quot;colorscripter-code&quot; style=&quot;color: #f9f6f6; font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; position: relative !important; overflow: auto;&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 6-8줄까지의 헤더에 제대로 설정을 하니 한국어가 원활하게 받아지는 것을 확인했다.&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;참고 사이트&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;-&lt;span&gt; &lt;a href=&quot;https://fruitdev.tistory.com/146&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://fruitdev.tistory.com/146&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;</description>
      <category>Error</category>
      <category>Postman</category>
      <category>springboot</category>
      <author>chea-young</author>
      <guid isPermaLink="true">https://chea-young.tistory.com/42</guid>
      <comments>https://chea-young.tistory.com/42#entry42comment</comments>
      <pubDate>Sat, 3 Sep 2022 00:21:52 +0900</pubDate>
    </item>
    <item>
      <title>[Springboot - 에러해결]Resolved [org.springframework.web.HttpMediaTypeNotAcceptableException: Could not find acceptable representation]</title>
      <link>https://chea-young.tistory.com/41</link>
      <description>&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style7&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;background-color: #f6e199; font-family: 'Nanum Gothic';&quot;&gt;&lt;b&gt;1. 에러 메시지&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Resolved&amp;nbsp;[org.springframework.web.HttpMediaTypeNotAcceptableException:&amp;nbsp;Could&amp;nbsp;not&amp;nbsp;find&amp;nbsp;acceptable&amp;nbsp;representation]&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;863&quot; data-origin-height=&quot;294&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/czemde/btrKTpHWgxM/CWNPsLoFzHHPc3XwbuxSrk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/czemde/btrKTpHWgxM/CWNPsLoFzHHPc3XwbuxSrk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/czemde/btrKTpHWgxM/CWNPsLoFzHHPc3XwbuxSrk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fczemde%2FbtrKTpHWgxM%2FCWNPsLoFzHHPc3XwbuxSrk%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;863&quot; height=&quot;294&quot; data-origin-width=&quot;863&quot; data-origin-height=&quot;294&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;background-color: #f6e199; font-family: 'Nanum Gothic';&quot;&gt;&lt;b&gt;2. 원인&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;- ContentsController&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;div class=&quot;colorscripter-code&quot; style=&quot;color: #f9f6f6; font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; position: relative !important; overflow: auto;&quot;&gt;
&lt;table class=&quot;colorscripter-code-table&quot; style=&quot;margin: 0; padding: 0; border: none; background-color: #0f111a; border-radius: 4px;&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 6px; border-right: 2px solid #4f4f4f;&quot;&gt;
&lt;div style=&quot;margin: 0; padding: 0; word-break: normal; text-align: right; color: #aaa; font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height: 130%;&quot;&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;1&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;2&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;3&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;4&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;5&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;6&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;7&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;8&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;9&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;10&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;11&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;12&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;13&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;14&lt;/div&gt;
&lt;/div&gt;
&lt;/td&gt;
&lt;td style=&quot;padding: 6px 0; text-align: left;&quot;&gt;
&lt;div style=&quot;margin: 0; padding: 0; color: #f9f6f6; font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height: 130%;&quot;&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #6e7a96;&quot;&gt;/**&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&lt;span style=&quot;color: #6e7a96;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;*&amp;nbsp;content의&amp;nbsp;이미지&amp;nbsp;저장&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&lt;span style=&quot;color: #6e7a96;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;*/&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;@PostMapping(&lt;span style=&quot;color: #c3e88d;&quot;&gt;&quot;/new/image&quot;&lt;/span&gt;)&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #82aaff;&quot;&gt;public&lt;/span&gt;&amp;nbsp;ResponseEntity&lt;span style=&quot;color: #c792ea;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #82aaff;&quot;&gt;&amp;lt;&lt;/span&gt;?&lt;span style=&quot;color: #c792ea;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #82aaff;&quot;&gt;&amp;gt;&lt;/span&gt;&amp;nbsp;saveImage(@RequestPart(required&amp;nbsp;&lt;span style=&quot;color: #c792ea;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #82aaff;&quot;&gt;=&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: #f78c6c;&quot;&gt;false&lt;/span&gt;)&amp;nbsp;MultipartFile&amp;nbsp;newImage)&amp;nbsp;&lt;span style=&quot;color: #82aaff;&quot;&gt;throws&lt;/span&gt;&amp;nbsp;IOException&amp;nbsp;{&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;log.info(&lt;span style=&quot;color: #c3e88d;&quot;&gt;&quot;Contents&amp;nbsp;controller:&amp;nbsp;api/contents/new/image&amp;nbsp;-----------------------&quot;&lt;/span&gt;);&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #6e7a96;&quot;&gt;//&amp;nbsp;test&amp;nbsp;용&amp;nbsp;contents&amp;nbsp;데이터&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Contents&amp;nbsp;contents&amp;nbsp;&lt;span style=&quot;color: #c792ea;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #82aaff;&quot;&gt;=&lt;/span&gt;&amp;nbsp;contentsService.saveTestContents();&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #6e7a96;&quot;&gt;//&amp;nbsp;이미지&amp;nbsp;저장&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Contentsfile&amp;nbsp;contentsfile&amp;nbsp;&lt;span style=&quot;color: #c792ea;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #82aaff;&quot;&gt;=&lt;/span&gt;&amp;nbsp;s3Uploader.upload(contents,&amp;nbsp;newImage,&amp;nbsp;&lt;span style=&quot;color: #c3e88d;&quot;&gt;&quot;contents&quot;&lt;/span&gt;);&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;log.info(&lt;span style=&quot;color: #c3e88d;&quot;&gt;&quot;Contents&amp;nbsp;controller:&amp;nbsp;api/contents/new/image&amp;nbsp;finish&amp;nbsp;-----------------------&quot;&lt;/span&gt;);&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #82aaff;&quot;&gt;return&lt;/span&gt;&amp;nbsp;ResponseEntity.ok(&lt;span style=&quot;color: #82aaff;&quot;&gt;new&lt;/span&gt;&amp;nbsp;ContentsfileDTO(contentsfile));&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/div&gt;
&lt;/div&gt;
&lt;div style=&quot;text-align: right; margin-top: -13px; margin-right: 5px; font-size: 9px; font-style: italic;&quot;&gt;&lt;a style=&quot;color: #4f4f4ftext-decoration:none;&quot; href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Colored by Color Scripter&lt;/a&gt;&lt;/div&gt;
&lt;/td&gt;
&lt;td style=&quot;vertical-align: bottom; padding: 0 2px 4px 0;&quot;&gt;&lt;a style=&quot;text-decoration: none; color: white;&quot; href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;&lt;span style=&quot;font-size: 9px; word-break: normal; background-color: #4f4f4f; color: white; border-radius: 10px; padding: 1px;&quot;&gt;cs&lt;/span&gt;&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;- ContentsfileDTO&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;div class=&quot;colorscripter-code&quot; style=&quot;color: #f9f6f6; font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; position: relative !important; overflow: auto;&quot;&gt;
&lt;table class=&quot;colorscripter-code-table&quot; style=&quot;margin: 0px; padding: 0px; border: none; background-color: #0f111a; border-radius: 4px; height: 207px;&quot; width=&quot;966&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 6px; border-right: 2px solid #4f4f4f; width: 68.225px;&quot;&gt;
&lt;div style=&quot;margin: 0; padding: 0; word-break: normal; text-align: right; color: #aaa; font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height: 130%;&quot;&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;1&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;2&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;3&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;4&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;5&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;6&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;7&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;8&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;9&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;10&lt;/div&gt;
&lt;/div&gt;
&lt;/td&gt;
&lt;td style=&quot;padding: 6px 0px; text-align: left; width: 850.862px;&quot;&gt;
&lt;div style=&quot;margin: 0; padding: 0; color: #f9f6f6; font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height: 130%;&quot;&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&lt;span style=&quot;color: #82aaff;&quot;&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: #82aaff;&quot;&gt;class&lt;/span&gt;&amp;nbsp;ContentsfileDTO&amp;nbsp;{&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #82aaff;&quot;&gt;private&lt;/span&gt;&amp;nbsp;Long&amp;nbsp;id;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #82aaff;&quot;&gt;private&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: #89ddff;&quot;&gt;String&lt;/span&gt;&amp;nbsp;path;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #82aaff;&quot;&gt;public&lt;/span&gt;&amp;nbsp;ContentsfileDTO(Contentsfile&amp;nbsp;contentsfile)&amp;nbsp;{&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #82aaff;&quot;&gt;this&lt;/span&gt;.id&amp;nbsp;&lt;span style=&quot;color: #c792ea;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #82aaff;&quot;&gt;=&lt;/span&gt;&amp;nbsp;contentsfile.getId();&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #82aaff;&quot;&gt;this&lt;/span&gt;.path&amp;nbsp;&lt;span style=&quot;color: #c792ea;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #82aaff;&quot;&gt;=&lt;/span&gt;&amp;nbsp;contentsfile.getPath();&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;}&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;div style=&quot;text-align: right; margin-top: -13px; margin-right: 5px; font-size: 9px; font-style: italic;&quot;&gt;&lt;a style=&quot;color: #4f4f4ftext-decoration:none;&quot; href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;r&lt;/a&gt;&lt;/div&gt;
&lt;/td&gt;
&lt;td style=&quot;vertical-align: bottom; padding: 0px 2px 4px 0px; width: 30.9125px;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 이미지 올리는 API를 개발하고 테스트하는 과정에서 다음과 같은 오류가 났다&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;background-color: #f6e199; font-family: 'Nanum Gothic';&quot;&gt;&lt;b&gt;3. 해결&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;div class=&quot;colorscripter-code&quot; style=&quot;color: #f9f6f6; font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; position: relative !important; overflow: auto;&quot;&gt;
&lt;table class=&quot;colorscripter-code-table&quot; style=&quot;margin: 0px; padding: 0px; border: none; background-color: #0f111a; border-radius: 4px; height: 243px;&quot; width=&quot;1069&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 6px; border-right: 2px solid #4f4f4f; width: 51.45px;&quot;&gt;
&lt;div style=&quot;margin: 0; padding: 0; word-break: normal; text-align: right; color: #aaa; font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height: 130%;&quot;&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;1&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;2&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;3&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;4&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;5&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;6&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;7&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;8&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;9&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;10&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;11&lt;/div&gt;
&lt;/div&gt;
&lt;/td&gt;
&lt;td style=&quot;padding: 6px 0px; text-align: left; width: 999.25px;&quot;&gt;
&lt;div style=&quot;margin: 0; padding: 0; color: #f9f6f6; font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height: 130%;&quot;&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;@Getter&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&lt;span style=&quot;color: #82aaff;&quot;&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: #82aaff;&quot;&gt;class&lt;/span&gt;&amp;nbsp;ContentsfileDTO&amp;nbsp;{&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #82aaff;&quot;&gt;private&lt;/span&gt;&amp;nbsp;Long&amp;nbsp;id;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #82aaff;&quot;&gt;private&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: #89ddff;&quot;&gt;String&lt;/span&gt;&amp;nbsp;path;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #82aaff;&quot;&gt;public&lt;/span&gt;&amp;nbsp;ContentsfileDTO(Contentsfile&amp;nbsp;contentsfile)&amp;nbsp;{&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #82aaff;&quot;&gt;this&lt;/span&gt;.id&amp;nbsp;&lt;span style=&quot;color: #c792ea;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #82aaff;&quot;&gt;=&lt;/span&gt;&amp;nbsp;contentsfile.getId();&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #82aaff;&quot;&gt;this&lt;/span&gt;.path&amp;nbsp;&lt;span style=&quot;color: #c792ea;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #82aaff;&quot;&gt;=&lt;/span&gt;&amp;nbsp;contentsfile.getPath();&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;}&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;div style=&quot;text-align: right; margin-top: -13px; margin-right: 5px; font-size: 9px; font-style: italic;&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;/td&gt;
&lt;td style=&quot;vertical-align: bottom; padding: 0px 2px 4px 0px; width: 2.3px;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 핸들러가 클라이언트가 요청한 Type으로 응답을 내려줄 수 없어 @Getter를 추가해주었더니 문제를 해결할 수 있었습니다&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;참고 사이트&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;-&lt;span&gt; &lt;a href=&quot;https://taengsw.tistory.com/49&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://taengsw.tistory.com/49&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>Error</category>
      <category>controller</category>
      <category>DTO</category>
      <category>springboot</category>
      <author>chea-young</author>
      <guid isPermaLink="true">https://chea-young.tistory.com/41</guid>
      <comments>https://chea-young.tistory.com/41#entry41comment</comments>
      <pubDate>Tue, 30 Aug 2022 00:21:35 +0900</pubDate>
    </item>
    <item>
      <title>[백준/실버1] [16918] 봄버맨 - python, Pypy 3</title>
      <link>https://chea-young.tistory.com/40</link>
      <description>&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;background-color: #9feec3;&quot;&gt;&lt;b&gt;봄버맨&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&lt;a href=&quot;https://www.acmicpc.net/problem/16918&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://www.acmicpc.net/problem/16918&lt;/a&gt;&lt;/b&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1657808689571&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;16918번: 봄버맨&quot; data-og-description=&quot;첫째 줄에 R, C, N (1 &amp;le; R, C, N &amp;le; 200)이 주어진다. 둘째 줄부터 R개의 줄에 격자판의 초기 상태가 주어진다. 빈 칸은 '.'로, 폭탄은 'O'로 주어진다.&quot; data-og-host=&quot;www.acmicpc.net&quot; data-og-source-url=&quot;https://www.acmicpc.net/problem/16918&quot; data-og-url=&quot;https://www.acmicpc.net/problem/16918&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/bVmgVB/hyO4HKZLat/QfGFCTtmrApkmOmHWaBxZ0/img.png?width=2834&amp;amp;height=1480&amp;amp;face=0_0_2834_1480&quot;&gt;&lt;a href=&quot;https://www.acmicpc.net/problem/16918&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://www.acmicpc.net/problem/16918&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/bVmgVB/hyO4HKZLat/QfGFCTtmrApkmOmHWaBxZ0/img.png?width=2834&amp;amp;height=1480&amp;amp;face=0_0_2834_1480');&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;16918번: 봄버맨&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;첫째 줄에 R, C, N (1 &amp;le; R, C, N &amp;le; 200)이 주어진다. 둘째 줄부터 R개의 줄에 격자판의 초기 상태가 주어진다. 빈 칸은 '.'로, 폭탄은 'O'로 주어진다.&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;table style=&quot;border-collapse: collapse; width: 100%; height: 120px;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr style=&quot;height: 120px;&quot;&gt;
&lt;td style=&quot;width: 100%; height: 120px; text-align: left;&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;br /&gt;&lt;u&gt;&lt;b&gt;문제내용&lt;/b&gt;&lt;br /&gt;&lt;/u&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;a href=&quot;https://en.wikipedia.org/wiki/Bomberman&quot;&gt;봄버맨&lt;/a&gt;은 크기가 R&amp;times;C인 직사각형 격자판 위에서 살고 있다. 격자의 각 칸은 비어있거나 폭탄이 들어있다.&lt;/span&gt;&lt;br /&gt;&lt;span&gt;폭탄이 있는 칸은 3초가 지난 후에 폭발하고, 폭탄이 폭발한 이후에는 폭탄이 있던 칸이 파괴되어 빈 칸이 되며, 인접한 네 칸도&amp;nbsp;함께 파괴된다. 즉, 폭탄이 있던 칸이 (i, j)인 경우에 (i+1, j), (i-1, j), (i, j+1), (i, j-1)도 함께 파괴된다. 만약, 폭탄이 폭발했을 때, 인접한 칸에 폭탄이 있는 경우에는 인접한 폭탄은 폭발 없이 파괴된다. 따라서, 연쇄 반응은 없다.&lt;/span&gt;&lt;br /&gt;&lt;span&gt;봄버맨은 폭탄에 면역력을 가지고 있어서, 격자판의 모든 칸을 자유롭게 이동할 수 있다. 봄버맨은 다음과 같이 행동한다.&lt;/span&gt;&lt;br /&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;가장 처음에 봄버맨은 일부 칸에 폭탄을 설치해 놓는다. 모든 폭탄이 설치된 시간은 같다.&lt;/li&gt;
&lt;li&gt;다음 1초 동안 봄버맨은 아무것도 하지 않는다.&lt;/li&gt;
&lt;li&gt;다음 1초 동안 폭탄이 설치되어 있지 않은 모든 칸에 폭탄을 설치한다. 즉, 모든 칸은 폭탄을 가지고 있게 된다. 폭탄은 모두 동시에 설치했다고 가정한다.&lt;/li&gt;
&lt;li&gt;1초가 지난 후에 3초 전에 설치된 폭탄이 모두 폭발한다.&lt;/li&gt;
&lt;li&gt;3과 4를 반복한다.&lt;/li&gt;
&lt;/ul&gt;
&lt;span&gt;폭탄을 설치해놓은 초기 상태가 주어졌을 때, N초가 흐른 후의 격자판 상태를 구하려고 한다.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;u&gt;입력방식&lt;br /&gt;&lt;/u&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;background-color: #ffffff; color: #555555;&quot;&gt;첫째 줄에 R, C, N (1 &amp;le; R, C, N &amp;le; 200)이 주어진다. 둘째 줄부터 R개의 줄에 격자판의 초기 상태가 주어진다. 빈 칸은 '&lt;/span&gt;.&lt;span style=&quot;background-color: #ffffff; color: #555555;&quot;&gt;'로, 폭탄은 '&lt;/span&gt;O&lt;span style=&quot;background-color: #ffffff; color: #555555;&quot;&gt;'로 주어진다.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&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;u&gt;&lt;b&gt;프로그래밍 순서&lt;/b&gt;&lt;/u&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1. 입력을 받으면서 설치된 폭탄 좌표를 모두 bombs 리스트에 넣기&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2. N초가 만약에 짝수라면 항상 모두 폭탄으로 가득할 것이기 때문에 폭탄으로 꽉찬 리스트 반환&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;3. N초가 만약에 홀수라면 2~N초 동안 for문을 돌면서 홀수 초일 때 폭탄이 터진다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; 3-1. 홀수 초라면 3초 전에 존재했던 폭탄과 그 주위의 폭탄을 터뜨린다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp; 3-1-1. 폭탄을 터뜨리면서 destory라는 set에 상하좌우의 좌표를 넣는다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; 3-2. bombs 리스트의 값은 전체 좌표에서 destory 라는 set을 차집합으로 빼준 값으로 업데이트된다. (왜냐면 그 다음 홀수 초에 터질 폭탄은 전체에서 이번에 터진 폭탄을 제외한 것이기 때문에)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;4. for문에서 빠져나왔다면 bombs에 존재하는 좌표만이 폭탄임으로 '.' 으로 이루어진 미로에서 bombs의 좌표들만 폭탄으로 변경하여 반환한다.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;u&gt;&lt;b&gt;전체코딩&lt;/b&gt;&lt;/u&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;u&gt;&lt;b&gt;- 코드&lt;/b&gt;&lt;/u&gt;&lt;/p&gt;
&lt;div class=&quot;colorscripter-code&quot; style=&quot;color: #f9f6f6; font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; position: relative !important; overflow: auto;&quot;&gt;
&lt;table class=&quot;colorscripter-code-table&quot; style=&quot;margin: 0; padding: 0; border: none; background-color: #0f111a; border-radius: 4px;&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 6px; border-right: 2px solid #4f4f4f;&quot;&gt;
&lt;div style=&quot;margin: 0; padding: 0; word-break: normal; text-align: right; color: #aaa; font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height: 130%;&quot;&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;1&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;2&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;3&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;4&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;5&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;6&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;7&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;8&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;9&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;10&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;11&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;12&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;13&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;14&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;15&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;16&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;17&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;18&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;19&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;20&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;21&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;22&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;23&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;24&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;25&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;26&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;27&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;28&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;29&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;30&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;31&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;32&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;33&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;34&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;35&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;36&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;37&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;38&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;39&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;40&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;41&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;42&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;43&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;44&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;45&lt;/div&gt;
&lt;/div&gt;
&lt;/td&gt;
&lt;td style=&quot;padding: 6px 0; text-align: left;&quot;&gt;
&lt;div style=&quot;margin: 0; padding: 0; color: #f9f6f6; font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height: 130%;&quot;&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&lt;span style=&quot;color: #6e7a96;&quot;&gt;#&amp;nbsp;폭탄을&amp;nbsp;파괴시키는&amp;nbsp;함수&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&lt;span style=&quot;color: #82aaff;&quot;&gt;def&lt;/span&gt;&amp;nbsp;destroy_bomb(bombs,&amp;nbsp;R,&amp;nbsp;C):&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;destory&amp;nbsp;&lt;span style=&quot;color: #c792ea;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #82aaff;&quot;&gt;=&lt;/span&gt;&amp;nbsp;set()&amp;nbsp;&lt;span style=&quot;color: #6e7a96;&quot;&gt;#&amp;nbsp;파괴된&amp;nbsp;폭탄&amp;nbsp;리스트&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;dy&amp;nbsp;&lt;span style=&quot;color: #c792ea;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #82aaff;&quot;&gt;=&lt;/span&gt;&amp;nbsp;[&lt;span style=&quot;color: #f78c6c;&quot;&gt;0&lt;/span&gt;,&amp;nbsp;&lt;span style=&quot;color: #f78c6c;&quot;&gt;0&lt;/span&gt;,&amp;nbsp;&lt;span style=&quot;color: #c792ea;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #82aaff;&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color: #f78c6c;&quot;&gt;1&lt;/span&gt;,&amp;nbsp;&lt;span style=&quot;color: #f78c6c;&quot;&gt;1&lt;/span&gt;]&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;dx&amp;nbsp;&lt;span style=&quot;color: #c792ea;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #82aaff;&quot;&gt;=&lt;/span&gt;&amp;nbsp;[&lt;span style=&quot;color: #c792ea;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #82aaff;&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color: #f78c6c;&quot;&gt;1&lt;/span&gt;,&amp;nbsp;&lt;span style=&quot;color: #f78c6c;&quot;&gt;1&lt;/span&gt;,&amp;nbsp;&lt;span style=&quot;color: #f78c6c;&quot;&gt;0&lt;/span&gt;,&amp;nbsp;&lt;span style=&quot;color: #f78c6c;&quot;&gt;0&lt;/span&gt;]&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #82aaff;&quot;&gt;for&lt;/span&gt;&amp;nbsp;y,&amp;nbsp;x&amp;nbsp;&lt;span style=&quot;color: #82aaff;&quot;&gt;in&lt;/span&gt;&amp;nbsp;bombs:&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;destory.add((y,&amp;nbsp;x))&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #82aaff;&quot;&gt;for&lt;/span&gt;&amp;nbsp;i&amp;nbsp;&lt;span style=&quot;color: #82aaff;&quot;&gt;in&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: #89ddff;&quot;&gt;range&lt;/span&gt;(&lt;span style=&quot;color: #f78c6c;&quot;&gt;4&lt;/span&gt;):&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ny&amp;nbsp;&lt;span style=&quot;color: #c792ea;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #82aaff;&quot;&gt;=&lt;/span&gt;&amp;nbsp;y&lt;span style=&quot;color: #c792ea;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #82aaff;&quot;&gt;+&lt;/span&gt;dy[i]&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;nx&amp;nbsp;&lt;span style=&quot;color: #c792ea;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #82aaff;&quot;&gt;=&lt;/span&gt;&amp;nbsp;x&lt;span style=&quot;color: #c792ea;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #82aaff;&quot;&gt;+&lt;/span&gt;dx[i]&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #82aaff;&quot;&gt;if&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: #f78c6c;&quot;&gt;0&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: #c792ea;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #82aaff;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #c792ea;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #82aaff;&quot;&gt;=&lt;/span&gt;&amp;nbsp;ny&amp;nbsp;&lt;span style=&quot;color: #c792ea;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #82aaff;&quot;&gt;&amp;lt;&lt;/span&gt;&amp;nbsp;R&amp;nbsp;&lt;span style=&quot;color: #82aaff;&quot;&gt;and&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: #f78c6c;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;color: #82aaff;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #c792ea;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #82aaff;&quot;&gt;=&lt;/span&gt;&amp;nbsp;nx&amp;nbsp;&lt;span style=&quot;color: #c792ea;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #82aaff;&quot;&gt;&amp;lt;&lt;/span&gt;&amp;nbsp;C:&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;destory.add((ny,&amp;nbsp;nx))&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #82aaff;&quot;&gt;return&lt;/span&gt;&amp;nbsp;destory&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&lt;span style=&quot;color: #6e7a96;&quot;&gt;#&amp;nbsp;입력&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;R,&amp;nbsp;C,&amp;nbsp;N&amp;nbsp;&lt;span style=&quot;color: #c792ea;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #82aaff;&quot;&gt;=&lt;/span&gt;&amp;nbsp;map(&lt;span style=&quot;color: #89ddff;&quot;&gt;int&lt;/span&gt;,&amp;nbsp;input().split())&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;miro&amp;nbsp;&lt;span style=&quot;color: #c792ea;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #82aaff;&quot;&gt;=&lt;/span&gt;&amp;nbsp;[]&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;bombs&amp;nbsp;&lt;span style=&quot;color: #c792ea;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #82aaff;&quot;&gt;=&lt;/span&gt;&amp;nbsp;[]&amp;nbsp;&lt;span style=&quot;color: #6e7a96;&quot;&gt;#&amp;nbsp;설치된&amp;nbsp;폭탄의&amp;nbsp;좌표&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&lt;span style=&quot;color: #82aaff;&quot;&gt;for&lt;/span&gt;&amp;nbsp;i&amp;nbsp;&lt;span style=&quot;color: #82aaff;&quot;&gt;in&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: #89ddff;&quot;&gt;range&lt;/span&gt;(R):&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;data&amp;nbsp;&lt;span style=&quot;color: #c792ea;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #82aaff;&quot;&gt;=&lt;/span&gt;&amp;nbsp;input()&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;miro.append(data)&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #82aaff;&quot;&gt;for&lt;/span&gt;&amp;nbsp;j&amp;nbsp;&lt;span style=&quot;color: #82aaff;&quot;&gt;in&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: #89ddff;&quot;&gt;range&lt;/span&gt;(C):&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #82aaff;&quot;&gt;if&lt;/span&gt;&amp;nbsp;data[j]&amp;nbsp;&lt;span style=&quot;color: #c792ea;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #82aaff;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #c792ea;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #82aaff;&quot;&gt;=&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: #c3e88d;&quot;&gt;'O'&lt;/span&gt;:&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;bombs.append([i,&amp;nbsp;j])&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&lt;span style=&quot;color: #6e7a96;&quot;&gt;#&amp;nbsp;N초&amp;nbsp;동안&amp;nbsp;격자판&amp;nbsp;상태&amp;nbsp;업데이트&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;all_bomb&amp;nbsp;&lt;span style=&quot;color: #c792ea;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #82aaff;&quot;&gt;=&lt;/span&gt;&amp;nbsp;[[&lt;span style=&quot;color: #c3e88d;&quot;&gt;'O'&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: #82aaff;&quot;&gt;for&lt;/span&gt;&amp;nbsp;__&amp;nbsp;&lt;span style=&quot;color: #82aaff;&quot;&gt;in&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: #89ddff;&quot;&gt;range&lt;/span&gt;(C)]&lt;span style=&quot;color: #82aaff;&quot;&gt;for&lt;/span&gt;&amp;nbsp;_&amp;nbsp;&lt;span style=&quot;color: #82aaff;&quot;&gt;in&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: #89ddff;&quot;&gt;range&lt;/span&gt;(R)]&amp;nbsp;&lt;span style=&quot;color: #6e7a96;&quot;&gt;#&amp;nbsp;모든&amp;nbsp;것이&amp;nbsp;폭탄으로&amp;nbsp;가득한&amp;nbsp;경우&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;all_bomb_loc&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #c792ea;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #82aaff;&quot;&gt;=&lt;/span&gt;&amp;nbsp;set([(i,&amp;nbsp;j)&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #82aaff;&quot;&gt;for&lt;/span&gt;&amp;nbsp;i&amp;nbsp;&lt;span style=&quot;color: #82aaff;&quot;&gt;in&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: #89ddff;&quot;&gt;range&lt;/span&gt;(R)&amp;nbsp;&lt;span style=&quot;color: #82aaff;&quot;&gt;for&lt;/span&gt;&amp;nbsp;j&amp;nbsp;&lt;span style=&quot;color: #82aaff;&quot;&gt;in&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: #89ddff;&quot;&gt;range&lt;/span&gt;(C)])&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&lt;span style=&quot;color: #82aaff;&quot;&gt;if&lt;/span&gt;&amp;nbsp;N%&lt;span style=&quot;color: #f78c6c;&quot;&gt;2&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: #c792ea;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #82aaff;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #c792ea;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #82aaff;&quot;&gt;=&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: #f78c6c;&quot;&gt;0&lt;/span&gt;:&amp;nbsp;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #6e7a96;&quot;&gt;#&amp;nbsp;짝수&amp;nbsp;초에는&amp;nbsp;항상&amp;nbsp;폭탄이&amp;nbsp;꽉&amp;nbsp;참&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;answer&amp;nbsp;&lt;span style=&quot;color: #c792ea;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #82aaff;&quot;&gt;=&lt;/span&gt;&amp;nbsp;all_bomb&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&lt;span style=&quot;color: #82aaff;&quot;&gt;else&lt;/span&gt;:&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #82aaff;&quot;&gt;for&lt;/span&gt;&amp;nbsp;s&amp;nbsp;&lt;span style=&quot;color: #82aaff;&quot;&gt;in&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: #89ddff;&quot;&gt;range&lt;/span&gt;(&lt;span style=&quot;color: #f78c6c;&quot;&gt;2&lt;/span&gt;,&amp;nbsp;N&lt;span style=&quot;color: #c792ea;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #82aaff;&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;color: #f78c6c;&quot;&gt;1&lt;/span&gt;):&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #82aaff;&quot;&gt;if&lt;/span&gt;&amp;nbsp;s%&lt;span style=&quot;color: #f78c6c;&quot;&gt;2&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: #c792ea;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #82aaff;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #c792ea;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #82aaff;&quot;&gt;=&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: #f78c6c;&quot;&gt;1&lt;/span&gt;:&amp;nbsp;&lt;span style=&quot;color: #6e7a96;&quot;&gt;#&amp;nbsp;3초&amp;nbsp;전의&amp;nbsp;설치된&amp;nbsp;폭탄만&amp;nbsp;폭발&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #6e7a96;&quot;&gt;#&amp;nbsp;폭발&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;destory&amp;nbsp;&lt;span style=&quot;color: #c792ea;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #82aaff;&quot;&gt;=&lt;/span&gt;&amp;nbsp;destroy_bomb(bombs,&amp;nbsp;R,&amp;nbsp;C)&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #6e7a96;&quot;&gt;#&amp;nbsp;현재&amp;nbsp;설치되어&amp;nbsp;있는&amp;nbsp;폭탄&amp;nbsp;업데이트&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;bombs&amp;nbsp;&lt;span style=&quot;color: #c792ea;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #82aaff;&quot;&gt;=&lt;/span&gt;&amp;nbsp;all_bomb_loc&amp;nbsp;&lt;span style=&quot;color: #c792ea;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #82aaff;&quot;&gt;-&lt;/span&gt;&amp;nbsp;destory&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;answer&amp;nbsp;&lt;span style=&quot;color: #c792ea;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #82aaff;&quot;&gt;=&lt;/span&gt;&amp;nbsp;[[&lt;span style=&quot;color: #c3e88d;&quot;&gt;'.'&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: #82aaff;&quot;&gt;for&lt;/span&gt;&amp;nbsp;__&amp;nbsp;&lt;span style=&quot;color: #82aaff;&quot;&gt;in&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: #89ddff;&quot;&gt;range&lt;/span&gt;(C)]&lt;span style=&quot;color: #82aaff;&quot;&gt;for&lt;/span&gt;&amp;nbsp;_&amp;nbsp;&lt;span style=&quot;color: #82aaff;&quot;&gt;in&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: #89ddff;&quot;&gt;range&lt;/span&gt;(R)]&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #82aaff;&quot;&gt;for&lt;/span&gt;&amp;nbsp;y,&amp;nbsp;x&amp;nbsp;&lt;span style=&quot;color: #82aaff;&quot;&gt;in&lt;/span&gt;&amp;nbsp;bombs:&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;answer[y][x]&amp;nbsp;&lt;span style=&quot;color: #c792ea;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #82aaff;&quot;&gt;=&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: #c3e88d;&quot;&gt;'O'&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&lt;span style=&quot;color: #6e7a96;&quot;&gt;#&amp;nbsp;출력&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&lt;span style=&quot;color: #82aaff;&quot;&gt;for&lt;/span&gt;&amp;nbsp;ele&amp;nbsp;&lt;span style=&quot;color: #82aaff;&quot;&gt;in&lt;/span&gt;&amp;nbsp;answer:&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #89ddff;&quot;&gt;print&lt;/span&gt;(&lt;span style=&quot;color: #c3e88d;&quot;&gt;''&lt;/span&gt;.join(ele))&lt;/div&gt;
&lt;/div&gt;
&lt;div style=&quot;text-align: right; margin-top: -13px; margin-right: 5px; font-size: 9px; font-style: italic;&quot;&gt;&lt;a style=&quot;color: #4f4f4ftext-decoration:none;&quot; href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Colored by Color Scripter&lt;/a&gt;&lt;/div&gt;
&lt;/td&gt;
&lt;td style=&quot;vertical-align: bottom; padding: 0 2px 4px 0;&quot;&gt;&lt;a style=&quot;text-decoration: none; color: white;&quot; href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;&lt;span style=&quot;font-size: 9px; word-break: normal; background-color: #4f4f4f; color: white; border-radius: 10px; padding: 1px;&quot;&gt;cs&lt;/span&gt;&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;div class=&quot;colorscripter-code&quot; style=&quot;color: #f9f6f6; font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; position: relative !important; overflow: auto;&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;colorscripter-code&quot; style=&quot;color: #f0f0f0; font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; position: relative !important; overflow: auto;&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1185&quot; data-origin-height=&quot;312&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b8kzMq/btrHj295MgT/erDT9BjPKPAKG61jf6Ykfk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b8kzMq/btrHj295MgT/erDT9BjPKPAKG61jf6Ykfk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b8kzMq/btrHj295MgT/erDT9BjPKPAKG61jf6Ykfk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb8kzMq%2FbtrHj295MgT%2FerDT9BjPKPAKG61jf6Ykfk%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;1185&quot; height=&quot;312&quot; data-origin-width=&quot;1185&quot; data-origin-height=&quot;312&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;div class=&quot;colorscripter-code&quot; style=&quot;color: #f0f0f0; font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; position: relative !important; overflow: auto;&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;/div&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>Python</category>
      <category>백준</category>
      <author>chea-young</author>
      <guid isPermaLink="true">https://chea-young.tistory.com/40</guid>
      <comments>https://chea-young.tistory.com/40#entry40comment</comments>
      <pubDate>Thu, 14 Jul 2022 23:33:36 +0900</pubDate>
    </item>
    <item>
      <title>[Spring boot- 에러 해결] nested exception is org.h2.jdbc.JdbcSQLSyntaxErrorException: Table &amp;quot;SPRING_SESSION&amp;quot; not found; SQL statement</title>
      <link>https://chea-young.tistory.com/39</link>
      <description>&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style7&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;background-color: #f6e199; font-family: 'Nanum Gothic';&quot;&gt;&lt;b&gt;1. 에러 메시지&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;nested exception is org.h2.jdbc.JdbcSQLSyntaxErrorException: Table &quot;SPRING_SESSION&quot; not found; SQL statement&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;background-color: #f6e199; font-family: 'Nanum Gothic';&quot;&gt;&lt;b&gt;2. 원인&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;div class=&quot;colorscripter-code&quot; style=&quot;color: #f9f6f6; font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; position: relative !important; overflow: auto;&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;데이터베이스에 세션 저장소를 사용하기 위한 설정을 한 이후 서버를 킬 때 다음과 오류를 확인하였다.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;background-color: #f6e199; font-family: 'Nanum Gothic';&quot;&gt;&lt;b&gt;3. 해결&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;div class=&quot;colorscripter-code&quot; style=&quot;color: #f9f6f6; font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; position: relative !important; overflow: auto;&quot;&gt;
&lt;table class=&quot;colorscripter-code-table&quot; style=&quot;margin: 0px; padding: 0px; border: none; background-color: #0f111a; border-radius: 4px; height: 56px;&quot; width=&quot;868&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 6px; border-right: 2px solid #4f4f4f; width: 31.0938px;&quot;&gt;
&lt;div style=&quot;margin: 0; padding: 0; word-break: normal; text-align: right; color: #aaa; font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height: 130%;&quot;&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;1&lt;/div&gt;
&lt;/div&gt;
&lt;/td&gt;
&lt;td style=&quot;padding: 6px 0px; text-align: left; width: 800.844px;&quot;&gt;
&lt;div style=&quot;margin: 0; padding: 0; color: #f9f6f6; font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height: 130%;&quot;&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;spring.session.jdbc.initialize-schema=always &lt;span style=&quot;color: #6e7a96;&quot;&gt;//&amp;nbsp;추가&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/td&gt;
&lt;td style=&quot;vertical-align: bottom; padding: 0px 2px 4px 0px; width: 20.0625px;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;application.properties에 다음 줄을 추가해주고 다시 springboot 서버를 실행시키면 정상적으로 돌아가는 것을 확인할 수 있다.&lt;/p&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;style7&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;참고 사이트&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;-&lt;span&gt; &lt;a href=&quot;https://velog.io/@mmy789/Spring-AWS-9&quot;&gt;https://velog.io/@mmy789/Spring-AWS-9&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>Error</category>
      <category>http_sessesion</category>
      <category>springboot</category>
      <author>chea-young</author>
      <guid isPermaLink="true">https://chea-young.tistory.com/39</guid>
      <comments>https://chea-young.tistory.com/39#entry39comment</comments>
      <pubDate>Sat, 25 Jun 2022 19:30:59 +0900</pubDate>
    </item>
    <item>
      <title>[프로그래머스/level3] 여행경로 - python</title>
      <link>https://chea-young.tistory.com/38</link>
      <description>&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;background-color: #9feec3;&quot;&gt;&lt;b&gt;여행경로&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #9feec3;&quot;&gt;&lt;b&gt;&lt;a href=&quot;https://programmers.co.kr/learn/courses/30/lessons/43164?language=python3&quot;&gt;https://programmers.co.kr/learn/courses/30/lessons/43164?language=python3&lt;/a&gt;&amp;nbsp;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1655448634153&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;[[&amp;quot;ICN&amp;quot;, &amp;quot;SFO&amp;quot;], [&amp;quot;ICN&amp;quot;, &amp;quot;ATL&amp;quot;], [&amp;quot;SFO&amp;quot;, &amp;quot;ATL&amp;quot;], [&amp;quot;ATL&amp;quot;, &amp;quot;ICN&amp;quot;], [&amp;quot;ATL&amp;quot;,&amp;quot;SFO&amp;quot;]] [&amp;quot;ICN&amp;quot;, &amp;quot;ATL&amp;quot;, &amp;quot;ICN&amp;quot;, &amp;quot;SFO&amp;quot;, &amp;quot;ATL&amp;quot;, &amp;quot;SFO&amp;quot;]&quot; data-og-host=&quot;programmers.co.kr&quot; data-og-source-url=&quot;https://programmers.co.kr/learn/courses/30/lessons/43164?language=python3&quot; data-og-url=&quot;https://programmers.co.kr/learn/courses/30/lessons/43164?language=python3&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/qb0q7/hyOMHdnali/D7GqVeYX9MRINgo7bpWk51/img.jpg?width=626&amp;amp;height=626&amp;amp;face=0_0_626_626,https://scrap.kakaocdn.net/dn/y1M46/hyOMLtkpVC/7Gu0K62hv116kwK5Qpo6oK/img.jpg?width=626&amp;amp;height=626&amp;amp;face=0_0_626_626&quot;&gt;&lt;a href=&quot;https://programmers.co.kr/learn/courses/30/lessons/43164?language=python3&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://programmers.co.kr/learn/courses/30/lessons/43164?language=python3&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/qb0q7/hyOMHdnali/D7GqVeYX9MRINgo7bpWk51/img.jpg?width=626&amp;amp;height=626&amp;amp;face=0_0_626_626,https://scrap.kakaocdn.net/dn/y1M46/hyOMLtkpVC/7Gu0K62hv116kwK5Qpo6oK/img.jpg?width=626&amp;amp;height=626&amp;amp;face=0_0_626_626');&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;[[&quot;ICN&quot;, &quot;SFO&quot;], [&quot;ICN&quot;, &quot;ATL&quot;], [&quot;SFO&quot;, &quot;ATL&quot;], [&quot;ATL&quot;, &quot;ICN&quot;], [&quot;ATL&quot;,&quot;SFO&quot;]] [&quot;ICN&quot;, &quot;ATL&quot;, &quot;ICN&quot;, &quot;SFO&quot;, &quot;ATL&quot;, &quot;SFO&quot;]&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;programmers.co.kr&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%; height: 120px;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr style=&quot;height: 120px;&quot;&gt;
&lt;td style=&quot;width: 100%; height: 120px; text-align: left;&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;br /&gt;&lt;u&gt;&lt;b&gt;문제내용&lt;/b&gt;&lt;br /&gt;&lt;/u&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;주어진&amp;nbsp;항공권을&amp;nbsp;모두&amp;nbsp;이용하여&amp;nbsp;여행경로를&amp;nbsp;짜려고&amp;nbsp;합니다.&amp;nbsp;항상&amp;nbsp;&quot;ICN&quot;&amp;nbsp;공항에서&amp;nbsp;출발합니다. &lt;br /&gt;&lt;br /&gt;항공권 정보가 담긴 2차원 배열 tickets가 매개변수로 주어질 때, 방문하는 공항 경로를 배열에 담아 return 하도록 solution 함수를 작성해주세요.&lt;br /&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;u&gt;입력방식&lt;br /&gt;&lt;/u&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;- 모든 공항은 알파벳 대문자 3글자로 이루어집니다. &lt;br /&gt;- 주어진 공항 수는 3개 이상 10,000개 이하입니다. &lt;br /&gt;- tickets의 각 행 [a, b]는 a 공항에서 b 공항으로 가는 항공권이 있다는 의미입니다. &lt;br /&gt;- 주어진 항공권은 모두 사용해야 합니다. &lt;br /&gt;- 만일 가능한 경로가 2개 이상일 경우 알파벳 순서가 앞서는 경로를 return 합니다. &lt;br /&gt;- 모든 도시를 방문할 수 없는 경우는 주어지지 않습니다.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&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;u&gt;&lt;b&gt;프로그래밍 순서&lt;/b&gt;&lt;/u&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1. 연결되어 있는 공항을 dictionary로 만든다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2. deque를 이용해 갈 수 있는 공항을 이동하면서 가능한 경로를 찾는다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; 2-1 queue에는 현재 공항, 방문한 경로, 사용하지 않은 티켓을 넣는다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; 2-2 현재 공항에서 갈 수 있는 공항을 찾아 queue에 넣는다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp; 2-2-1 만약 사용하지 않은 티켓에 갈 수 있는 공항이 있으면 queue에 넣는다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; 2-3 사용할 수 있는 티켓이 없으면 주어진 티켓을 모두 사용한 것으로 anwer에 넣는다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;3. 가능한 경우 중 알파벳 순서가 앞서는 경로가 필요함으로 정렬해서 첫 번쨰 원소를 반환한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;u&gt;&lt;b&gt;전체코딩&lt;/b&gt;&lt;/u&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;u&gt;&lt;b&gt;- 코드&lt;/b&gt;&lt;/u&gt;&lt;/p&gt;
&lt;div class=&quot;colorscripter-code&quot; style=&quot;color: #f9f6f6; font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; position: relative !important; overflow: auto;&quot;&gt;
&lt;table class=&quot;colorscripter-code-table&quot; style=&quot;margin: 0px; padding: 0px; border: none; background-color: #0f111a; border-radius: 4px; height: 547px;&quot; width=&quot;857&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 6px; border-right: 2px solid #4f4f4f; width: 16.5156px;&quot;&gt;
&lt;div style=&quot;margin: 0; padding: 0; word-break: normal; text-align: right; color: #aaa; font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height: 130%;&quot;&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;1&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;2&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;3&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;4&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;5&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;6&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;7&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;8&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;9&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;10&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;11&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;12&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;13&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;14&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;15&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;16&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;17&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;18&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;19&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;20&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;21&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;22&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;23&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;24&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;25&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;26&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;27&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;28&lt;/div&gt;
&lt;/div&gt;
&lt;/td&gt;
&lt;td style=&quot;padding: 6px 0px; text-align: left; width: 802.453px;&quot;&gt;
&lt;div style=&quot;margin: 0; padding: 0; color: #f9f6f6; font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height: 130%;&quot;&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&lt;span style=&quot;color: #82aaff;&quot;&gt;from&lt;/span&gt;&amp;nbsp;collections&amp;nbsp;&lt;span style=&quot;color: #82aaff;&quot;&gt;import&lt;/span&gt;&amp;nbsp;deque&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&lt;span style=&quot;color: #82aaff;&quot;&gt;def&lt;/span&gt;&amp;nbsp;solution(tickets):&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;answer&amp;nbsp;&lt;span style=&quot;color: #c792ea;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #82aaff;&quot;&gt;=&lt;/span&gt;&amp;nbsp;[]&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;conn&amp;nbsp;&lt;span style=&quot;color: #c792ea;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #82aaff;&quot;&gt;=&lt;/span&gt;&amp;nbsp;{}&amp;nbsp;&lt;span style=&quot;color: #6e7a96;&quot;&gt;#공향:&amp;nbsp;가능한&amp;nbsp;공항&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #6e7a96;&quot;&gt;#&amp;nbsp;방문&amp;nbsp;가능한&amp;nbsp;공항&amp;nbsp;찾기&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #82aaff;&quot;&gt;for&lt;/span&gt;&amp;nbsp;a,&amp;nbsp;b&amp;nbsp;&lt;span style=&quot;color: #82aaff;&quot;&gt;in&lt;/span&gt;&amp;nbsp;tickets:&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;conn[a]&amp;nbsp;&lt;span style=&quot;color: #c792ea;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #82aaff;&quot;&gt;=&lt;/span&gt;&amp;nbsp;conn.get(a,&amp;nbsp;[])&amp;nbsp;&lt;span style=&quot;color: #c792ea;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #82aaff;&quot;&gt;+&lt;/span&gt;&amp;nbsp;[b]&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;data&amp;nbsp;&lt;span style=&quot;color: #c792ea;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #82aaff;&quot;&gt;=&lt;/span&gt;&amp;nbsp;deque()&amp;nbsp;&lt;span style=&quot;color: #6e7a96;&quot;&gt;#&amp;nbsp;(공항,&amp;nbsp;방문한&amp;nbsp;경로,&amp;nbsp;사용하지&amp;nbsp;않은&amp;nbsp;티켓)&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;data.append((&lt;span style=&quot;color: #c3e88d;&quot;&gt;&quot;ICN&quot;&lt;/span&gt;,&amp;nbsp;[&lt;span style=&quot;color: #c3e88d;&quot;&gt;&quot;ICN&quot;&lt;/span&gt;],&amp;nbsp;tickets.copy()))&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #82aaff;&quot;&gt;while&lt;/span&gt;&amp;nbsp;data:&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;now,&amp;nbsp;move,&amp;nbsp;ticket&amp;nbsp;&lt;span style=&quot;color: #c792ea;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #82aaff;&quot;&gt;=&lt;/span&gt;&amp;nbsp;data.popleft()&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #82aaff;&quot;&gt;if&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: #82aaff;&quot;&gt;not&lt;/span&gt;&amp;nbsp;ticket:&amp;nbsp;&lt;span style=&quot;color: #6e7a96;&quot;&gt;#&amp;nbsp;주어진&amp;nbsp;티켓을&amp;nbsp;모두&amp;nbsp;사용한&amp;nbsp;경우&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;answer.append(move)&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #82aaff;&quot;&gt;if&lt;/span&gt;&amp;nbsp;now&amp;nbsp;&lt;span style=&quot;color: #82aaff;&quot;&gt;not&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: #82aaff;&quot;&gt;in&lt;/span&gt;&amp;nbsp;conn.keys():&amp;nbsp;&lt;span style=&quot;color: #6e7a96;&quot;&gt;#&amp;nbsp;갈&amp;nbsp;수&amp;nbsp;있는&amp;nbsp;공항이&amp;nbsp;없는&amp;nbsp;경우&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;continue&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #82aaff;&quot;&gt;for&lt;/span&gt;&amp;nbsp;ele&amp;nbsp;&lt;span style=&quot;color: #82aaff;&quot;&gt;in&lt;/span&gt;&amp;nbsp;conn[now]:&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #82aaff;&quot;&gt;if&lt;/span&gt;&amp;nbsp;[now,&amp;nbsp;ele]&amp;nbsp;&lt;span style=&quot;color: #82aaff;&quot;&gt;in&lt;/span&gt;&amp;nbsp;ticket:&amp;nbsp;&lt;span style=&quot;color: #6e7a96;&quot;&gt;#&amp;nbsp;가는&amp;nbsp;항공권이&amp;nbsp;있는&amp;nbsp;경우&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;nextTicket&amp;nbsp;&lt;span style=&quot;color: #c792ea;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #82aaff;&quot;&gt;=&lt;/span&gt;&amp;nbsp;ticket.copy()&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;nextTicket.remove([now,&amp;nbsp;ele])&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;data.append((ele,&amp;nbsp;move&lt;span style=&quot;color: #c792ea;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #82aaff;&quot;&gt;+&lt;/span&gt;[ele],&amp;nbsp;nextTicket))&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #82aaff;&quot;&gt;return&lt;/span&gt;&amp;nbsp;sorted(answer)[&lt;span style=&quot;color: #f78c6c;&quot;&gt;0&lt;/span&gt;]&lt;/div&gt;
&lt;/div&gt;
&lt;/td&gt;
&lt;td style=&quot;vertical-align: bottom; padding: 0px 2px 4px 0px; width: 22.0312px;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;div class=&quot;colorscripter-code&quot; style=&quot;color: #f0f0f0; font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; position: relative !important; overflow: auto;&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;div class=&quot;colorscripter-code&quot; style=&quot;color: #f0f0f0; font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; position: relative !important; overflow: auto;&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;colorscripter-code&quot; style=&quot;color: #f0f0f0; font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; position: relative !important; overflow: auto;&quot;&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;661&quot; data-origin-height=&quot;403&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/NKeGv/btrEZL42OBL/7sEiZmwTOHmA79ykmCxfuK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/NKeGv/btrEZL42OBL/7sEiZmwTOHmA79ykmCxfuK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/NKeGv/btrEZL42OBL/7sEiZmwTOHmA79ykmCxfuK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FNKeGv%2FbtrEZL42OBL%2F7sEiZmwTOHmA79ykmCxfuK%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;661&quot; height=&quot;403&quot; data-origin-width=&quot;661&quot; data-origin-height=&quot;403&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&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;</description>
      <category>Algorithm/Programmers</category>
      <category>Python</category>
      <author>chea-young</author>
      <guid isPermaLink="true">https://chea-young.tistory.com/38</guid>
      <comments>https://chea-young.tistory.com/38#entry38comment</comments>
      <pubDate>Fri, 17 Jun 2022 15:56:04 +0900</pubDate>
    </item>
    <item>
      <title>[프로그래머스/level2] 메뉴 리뉴얼 - python</title>
      <link>https://chea-young.tistory.com/37</link>
      <description>&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;background-color: #9feec3;&quot;&gt;&lt;b&gt;메뉴 리뉴얼&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #9feec3;&quot;&gt;&lt;b&gt;&lt;a href=&quot;https://programmers.co.kr/learn/courses/30/lessons/72411&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://programmers.co.kr/learn/courses/30/lessons/72411&lt;/a&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1655367395961&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;레스토랑을 운영하던 스카피는 코로나19로 인한 불경기를 극복하고자 메뉴를 새로 구성하려고 고민하고 있습니다. 기존에는 단품으로만 제공하던 메뉴를 조합해서 코스요리 형태로 재구성해서&quot; data-og-host=&quot;programmers.co.kr&quot; data-og-source-url=&quot;https://programmers.co.kr/learn/courses/30/lessons/72411&quot; data-og-url=&quot;https://programmers.co.kr/learn/courses/30/lessons/72411&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/9jRNC/hyOMEUCz4i/mnf3Znz74hWRSm713UdFz1/img.jpg?width=626&amp;amp;height=626&amp;amp;face=0_0_626_626,https://scrap.kakaocdn.net/dn/cvBdEs/hyOMG5YcN8/mOyJM2OEUMpTKBZ3dr17RK/img.jpg?width=626&amp;amp;height=626&amp;amp;face=0_0_626_626&quot;&gt;&lt;a href=&quot;https://programmers.co.kr/learn/courses/30/lessons/72411&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://programmers.co.kr/learn/courses/30/lessons/72411&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/9jRNC/hyOMEUCz4i/mnf3Znz74hWRSm713UdFz1/img.jpg?width=626&amp;amp;height=626&amp;amp;face=0_0_626_626,https://scrap.kakaocdn.net/dn/cvBdEs/hyOMG5YcN8/mOyJM2OEUMpTKBZ3dr17RK/img.jpg?width=626&amp;amp;height=626&amp;amp;face=0_0_626_626');&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;레스토랑을 운영하던 스카피는 코로나19로 인한 불경기를 극복하고자 메뉴를 새로 구성하려고 고민하고 있습니다. 기존에는 단품으로만 제공하던 메뉴를 조합해서 코스요리 형태로 재구성해서&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;programmers.co.kr&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%; height: 120px;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr style=&quot;height: 120px;&quot;&gt;
&lt;td style=&quot;width: 100%; height: 120px; text-align: left;&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;br /&gt;&lt;u&gt;&lt;b&gt;문제내용&lt;/b&gt;&lt;br /&gt;&lt;/u&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;레스토랑을&amp;nbsp;운영하던&amp;nbsp;스카피는&amp;nbsp;코로나19로&amp;nbsp;인한&amp;nbsp;불경기를&amp;nbsp;극복하고자&amp;nbsp;메뉴를&amp;nbsp;새로&amp;nbsp;구성하려고&amp;nbsp;고민하고&amp;nbsp;있습니다. &lt;br /&gt;기존에는&amp;nbsp;단품으로만&amp;nbsp;제공하던&amp;nbsp;메뉴를&amp;nbsp;조합해서&amp;nbsp;코스요리&amp;nbsp;형태로&amp;nbsp;재구성해서&amp;nbsp;새로운&amp;nbsp;메뉴를&amp;nbsp;제공하기로&amp;nbsp;결정했습니다.&amp;nbsp;어떤&amp;nbsp;단품메뉴들을&amp;nbsp;조합해서&amp;nbsp;코스요리&amp;nbsp;메뉴로&amp;nbsp;구성하면&amp;nbsp;좋을&amp;nbsp;지&amp;nbsp;고민하던&amp;nbsp;&quot;스카피&quot;는&amp;nbsp;이전에&amp;nbsp;각&amp;nbsp;손님들이&amp;nbsp;주문할&amp;nbsp;때&amp;nbsp;가장&amp;nbsp;많이&amp;nbsp;함께&amp;nbsp;주문한&amp;nbsp;단품메뉴들을&amp;nbsp;코스요리&amp;nbsp;메뉴로&amp;nbsp;구성하기로&amp;nbsp;했습니다. &lt;br /&gt;단,&amp;nbsp;코스요리&amp;nbsp;메뉴는&amp;nbsp;최소&amp;nbsp;2가지&amp;nbsp;이상의&amp;nbsp;단품메뉴로&amp;nbsp;구성하려고&amp;nbsp;합니다.&amp;nbsp;또한,&amp;nbsp;최소&amp;nbsp;2명&amp;nbsp;이상의&amp;nbsp;손님으로부터&amp;nbsp;주문된&amp;nbsp;단품메뉴&amp;nbsp;조합에&amp;nbsp;대해서만&amp;nbsp;코스요리&amp;nbsp;메뉴&amp;nbsp;후보에&amp;nbsp;포함하기로&amp;nbsp;했습니다. &lt;br /&gt;&lt;br /&gt;예를&amp;nbsp;들어,&amp;nbsp;손님&amp;nbsp;6명이&amp;nbsp;주문한&amp;nbsp;단품메뉴들의&amp;nbsp;조합이&amp;nbsp;다음과&amp;nbsp;같다면, &lt;br /&gt;(각&amp;nbsp;손님은&amp;nbsp;단품메뉴를&amp;nbsp;2개&amp;nbsp;이상&amp;nbsp;주문해야&amp;nbsp;하며,&amp;nbsp;각&amp;nbsp;단품메뉴는&amp;nbsp;A&amp;nbsp;~&amp;nbsp;Z의&amp;nbsp;알파벳&amp;nbsp;대문자로&amp;nbsp;표기합니다.)&lt;br /&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;br /&gt;&lt;b&gt;+ course의 각 메뉴 구성에서 동일 길이 일 떄 가장 많이 주문된 것을 채택한다!! (문제 내용에 자세히 설명이 안되어 있는데 ㅜㅜ 꼭 필요한 조건입니다)&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;u&gt;입력방식&lt;br /&gt;&lt;/u&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;- orders 배열의 크기는 2 이상 20 이하입니다. &lt;br /&gt;&lt;span&gt;-&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;orders&amp;nbsp;배열의&amp;nbsp;각&amp;nbsp;원소는&amp;nbsp;크기가&amp;nbsp;2&amp;nbsp;이상&amp;nbsp;10&amp;nbsp;이하인&amp;nbsp;문자열입니다. &lt;br /&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp; &amp;nbsp;- &lt;/span&gt;&lt;/span&gt;각&amp;nbsp;문자열은&amp;nbsp;알파벳&amp;nbsp;대문자로만&amp;nbsp;이루어져&amp;nbsp;있습니다. &lt;br /&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp; &amp;nbsp;- &lt;/span&gt;&lt;/span&gt;각&amp;nbsp;문자열에는&amp;nbsp;같은&amp;nbsp;알파벳이&amp;nbsp;중복해서&amp;nbsp;들어있지&amp;nbsp;않습니다. &lt;br /&gt;&lt;span&gt;-&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;course&amp;nbsp;배열의&amp;nbsp;크기는&amp;nbsp;1&amp;nbsp;이상&amp;nbsp;10&amp;nbsp;이하입니다. &lt;br /&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp; &amp;nbsp;- &lt;/span&gt;&lt;/span&gt;course&amp;nbsp;배열의&amp;nbsp;각&amp;nbsp;원소는&amp;nbsp;2&amp;nbsp;이상&amp;nbsp;10&amp;nbsp;이하인&amp;nbsp;자연수가&amp;nbsp;오름차순으로&amp;nbsp;정렬되어&amp;nbsp;있습니다. &lt;br /&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp; &amp;nbsp;- &lt;/span&gt;&lt;/span&gt;course&amp;nbsp;배열에는&amp;nbsp;같은&amp;nbsp;값이&amp;nbsp;중복해서&amp;nbsp;들어있지&amp;nbsp;않습니다. &lt;br /&gt;&lt;span&gt;-&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;정답은&amp;nbsp;각&amp;nbsp;코스요리&amp;nbsp;메뉴의&amp;nbsp;구성을&amp;nbsp;문자열&amp;nbsp;형식으로&amp;nbsp;배열에&amp;nbsp;담아&amp;nbsp;사전&amp;nbsp;순으로&amp;nbsp;오름차순&amp;nbsp;정렬해서&amp;nbsp;return&amp;nbsp;해주세요. &lt;br /&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp; &amp;nbsp;- &lt;/span&gt;&lt;/span&gt;배열의&amp;nbsp;각&amp;nbsp;원소에&amp;nbsp;저장된&amp;nbsp;문자열&amp;nbsp;또한&amp;nbsp;알파벳&amp;nbsp;오름차순으로&amp;nbsp;정렬되어야&amp;nbsp;합니다. &lt;br /&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp; &amp;nbsp;- &lt;/span&gt;&lt;/span&gt;만약&amp;nbsp;가장&amp;nbsp;많이&amp;nbsp;함께&amp;nbsp;주문된&amp;nbsp;메뉴&amp;nbsp;구성이&amp;nbsp;여러&amp;nbsp;개라면,&amp;nbsp;모두&amp;nbsp;배열에&amp;nbsp;담아&amp;nbsp;return&amp;nbsp;하면&amp;nbsp;됩니다. &lt;br /&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp; &amp;nbsp;- &lt;/span&gt;&lt;/span&gt;orders와&amp;nbsp;course&amp;nbsp;매개변수는&amp;nbsp;return&amp;nbsp;하는&amp;nbsp;배열의&amp;nbsp;길이가&amp;nbsp;1&amp;nbsp;이상이&amp;nbsp;되도록&amp;nbsp;주어집니다.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&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;u&gt;&lt;b&gt;프로그래밍 순서&lt;/b&gt;&lt;/u&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1. 이중 for문을 돌면서 가능한 메뉴 구성을 모두 구해서 dictionary에 저장한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; 1-1. findCase함수에 메뉴 구성 개수에 대한 주문에 조합을 반환하는 함수로 가능한 구성을 찾는다.&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. 가장 많이 불린 메뉴 조합을 구하기 위해 각 조합에 대한 불린 횟수가 저장되어 있는 dictionary를 tuple로 구성하여 정렬해준다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;4. 정렬된 값들 중 가장 많이 불린 조합을 answer에 넣어주고 만약 동일한 길이의 메뉴 조합이 있다면 모두 넣어준다.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;u&gt;&lt;b&gt;전체코딩&lt;/b&gt;&lt;/u&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;u&gt;&lt;b&gt;- 코드&lt;/b&gt;&lt;/u&gt;&lt;/p&gt;
&lt;div class=&quot;colorscripter-code&quot; style=&quot;color: #f9f6f6; font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; position: relative !important; overflow: auto;&quot;&gt;
&lt;table class=&quot;colorscripter-code-table&quot; style=&quot;margin: 0; padding: 0; border: none; background-color: #0f111a; border-radius: 4px;&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 6px; border-right: 2px solid #4f4f4f;&quot;&gt;
&lt;div style=&quot;margin: 0; padding: 0; word-break: normal; text-align: right; color: #aaa; font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height: 130%;&quot;&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;1&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;2&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;3&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;4&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;5&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;6&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;7&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;8&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;9&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;10&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;11&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;12&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;13&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;14&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;15&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;16&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;17&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;18&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;19&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;20&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;21&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;22&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;23&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;24&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;25&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;26&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;27&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;28&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;29&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;30&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;31&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;32&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;33&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;34&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;35&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;36&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;37&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;38&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;39&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;40&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;41&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;42&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;43&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;44&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;45&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;46&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;47&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;48&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;49&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;50&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;51&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;52&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;53&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;54&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;55&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;56&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;57&lt;/div&gt;
&lt;/div&gt;
&lt;/td&gt;
&lt;td style=&quot;padding: 6px 0; text-align: left;&quot;&gt;
&lt;div style=&quot;margin: 0; padding: 0; color: #f9f6f6; font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height: 130%;&quot;&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&lt;span style=&quot;color: #82aaff;&quot;&gt;def&lt;/span&gt;&amp;nbsp;findCase(c,&amp;nbsp;order):&amp;nbsp;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;case&amp;nbsp;&lt;span style=&quot;color: #c792ea;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #82aaff;&quot;&gt;=&lt;/span&gt;&amp;nbsp;[]&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;order&amp;nbsp;&lt;span style=&quot;color: #c792ea;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #82aaff;&quot;&gt;=&lt;/span&gt;&amp;nbsp;sorted(order)&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;used&amp;nbsp;&lt;span style=&quot;color: #c792ea;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #82aaff;&quot;&gt;=&lt;/span&gt;&amp;nbsp;[&lt;span style=&quot;color: #f78c6c;&quot;&gt;0&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: #82aaff;&quot;&gt;for&lt;/span&gt;&amp;nbsp;_&amp;nbsp;&lt;span style=&quot;color: #82aaff;&quot;&gt;in&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: #89ddff;&quot;&gt;range&lt;/span&gt;(&lt;span style=&quot;color: #89ddff;&quot;&gt;len&lt;/span&gt;(order))]&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #82aaff;&quot;&gt;def&lt;/span&gt;&amp;nbsp;generate(chosen):&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #82aaff;&quot;&gt;if&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: #89ddff;&quot;&gt;len&lt;/span&gt;(chosen)&amp;nbsp;&lt;span style=&quot;color: #c792ea;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #82aaff;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #c792ea;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #82aaff;&quot;&gt;=&lt;/span&gt;&amp;nbsp;c:&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;case.append(tuple(chosen.copy()))&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;start&amp;nbsp;&lt;span style=&quot;color: #c792ea;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #82aaff;&quot;&gt;=&lt;/span&gt;&amp;nbsp;order.index(chosen[&lt;span style=&quot;color: #c792ea;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #82aaff;&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color: #f78c6c;&quot;&gt;1&lt;/span&gt;])&amp;nbsp;&lt;span style=&quot;color: #c792ea;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #82aaff;&quot;&gt;+&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: #f78c6c;&quot;&gt;1&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: #82aaff;&quot;&gt;if&lt;/span&gt;&amp;nbsp;chosen&amp;nbsp;&lt;span style=&quot;color: #82aaff;&quot;&gt;else&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: #f78c6c;&quot;&gt;0&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #82aaff;&quot;&gt;for&lt;/span&gt;&amp;nbsp;nxt&amp;nbsp;&lt;span style=&quot;color: #82aaff;&quot;&gt;in&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: #89ddff;&quot;&gt;range&lt;/span&gt;(start,&amp;nbsp;&lt;span style=&quot;color: #89ddff;&quot;&gt;len&lt;/span&gt;(order)):&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #82aaff;&quot;&gt;if&lt;/span&gt;&amp;nbsp;used[nxt]&amp;nbsp;&lt;span style=&quot;color: #c792ea;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #82aaff;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #c792ea;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #82aaff;&quot;&gt;=&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: #f78c6c;&quot;&gt;0&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: #82aaff;&quot;&gt;and&lt;/span&gt;&amp;nbsp;(nxt&amp;nbsp;&lt;span style=&quot;color: #c792ea;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #82aaff;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #c792ea;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #82aaff;&quot;&gt;=&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: #f78c6c;&quot;&gt;0&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: #82aaff;&quot;&gt;or&lt;/span&gt;&amp;nbsp;order[nxt&lt;span style=&quot;color: #c792ea;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #82aaff;&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color: #f78c6c;&quot;&gt;1&lt;/span&gt;]&amp;nbsp;&lt;span style=&quot;color: #c792ea;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #82aaff;&quot;&gt;!&lt;/span&gt;&lt;span style=&quot;color: #c792ea;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #82aaff;&quot;&gt;=&lt;/span&gt;&amp;nbsp;order[nxt]&amp;nbsp;&lt;span style=&quot;color: #82aaff;&quot;&gt;or&lt;/span&gt;&amp;nbsp;used[nxt&lt;span style=&quot;color: #c792ea;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #82aaff;&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color: #f78c6c;&quot;&gt;1&lt;/span&gt;]):&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;chosen.append(order[nxt])&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;used[nxt]&amp;nbsp;&lt;span style=&quot;color: #c792ea;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #82aaff;&quot;&gt;=&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: #f78c6c;&quot;&gt;1&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;generate(chosen)&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;chosen.pop()&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;used[nxt]&amp;nbsp;&lt;span style=&quot;color: #c792ea;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #82aaff;&quot;&gt;=&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: #f78c6c;&quot;&gt;0&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;generate([])&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #82aaff;&quot;&gt;return&lt;/span&gt;&amp;nbsp;case&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&lt;span style=&quot;color: #82aaff;&quot;&gt;def&lt;/span&gt;&amp;nbsp;solution(orders,&amp;nbsp;course):&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;answer&amp;nbsp;&lt;span style=&quot;color: #c792ea;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #82aaff;&quot;&gt;=&lt;/span&gt;&amp;nbsp;[]&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #6e7a96;&quot;&gt;#&amp;nbsp;가능한&amp;nbsp;메뉴&amp;nbsp;구성&amp;nbsp;구하&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;orderCase&amp;nbsp;&lt;span style=&quot;color: #c792ea;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #82aaff;&quot;&gt;=&lt;/span&gt;&amp;nbsp;{c:&amp;nbsp;[]&amp;nbsp;&lt;span style=&quot;color: #82aaff;&quot;&gt;for&lt;/span&gt;&amp;nbsp;c&amp;nbsp;&lt;span style=&quot;color: #82aaff;&quot;&gt;in&lt;/span&gt;&amp;nbsp;course}&amp;nbsp;&lt;span style=&quot;color: #6e7a96;&quot;&gt;#&amp;nbsp;{메뉴구성개수:&amp;nbsp;[구성조합]}&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #82aaff;&quot;&gt;for&lt;/span&gt;&amp;nbsp;order&amp;nbsp;&lt;span style=&quot;color: #82aaff;&quot;&gt;in&lt;/span&gt;&amp;nbsp;orders:&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #82aaff;&quot;&gt;for&lt;/span&gt;&amp;nbsp;c&amp;nbsp;&lt;span style=&quot;color: #82aaff;&quot;&gt;in&lt;/span&gt;&amp;nbsp;course:&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #6e7a96;&quot;&gt;#&amp;nbsp;원하는&amp;nbsp;조합의&amp;nbsp;개수보다&amp;nbsp;주문&amp;nbsp;수가&amp;nbsp;작은&amp;nbsp;경우&amp;nbsp;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #82aaff;&quot;&gt;if&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: #89ddff;&quot;&gt;len&lt;/span&gt;(order)&amp;nbsp;&lt;span style=&quot;color: #c792ea;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #82aaff;&quot;&gt;&amp;lt;&lt;/span&gt;&amp;nbsp;c:&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;break&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #6e7a96;&quot;&gt;#&amp;nbsp;구성&amp;nbsp;조합&amp;nbsp;구하기&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;orderCase[c]&amp;nbsp;&lt;span style=&quot;color: #c792ea;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #82aaff;&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;color: #c792ea;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #82aaff;&quot;&gt;=&lt;/span&gt;&amp;nbsp;findCase(c,&amp;nbsp;order)&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #6e7a96;&quot;&gt;#&amp;nbsp;메뉴&amp;nbsp;불린&amp;nbsp;횟수&amp;nbsp;저장하기&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;orderMenu&amp;nbsp;&lt;span style=&quot;color: #c792ea;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #82aaff;&quot;&gt;=&lt;/span&gt;&amp;nbsp;{}&amp;nbsp;&lt;span style=&quot;color: #6e7a96;&quot;&gt;#&amp;nbsp;{메뉴구성개수:&amp;nbsp;{구성조합:&amp;nbsp;주문&amp;nbsp;수}}&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #82aaff;&quot;&gt;for&lt;/span&gt;&amp;nbsp;c&amp;nbsp;&lt;span style=&quot;color: #82aaff;&quot;&gt;in&lt;/span&gt;&amp;nbsp;course:&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;caseCnt&amp;nbsp;&lt;span style=&quot;color: #c792ea;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #82aaff;&quot;&gt;=&lt;/span&gt;&amp;nbsp;{}&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #82aaff;&quot;&gt;for&lt;/span&gt;&amp;nbsp;ele&amp;nbsp;&lt;span style=&quot;color: #82aaff;&quot;&gt;in&lt;/span&gt;&amp;nbsp;orderCase[c]:&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;caseCnt[ele]&amp;nbsp;&lt;span style=&quot;color: #c792ea;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #82aaff;&quot;&gt;=&lt;/span&gt;&amp;nbsp;caseCnt.get(ele,&amp;nbsp;&lt;span style=&quot;color: #f78c6c;&quot;&gt;0&lt;/span&gt;)&amp;nbsp;&lt;span style=&quot;color: #c792ea;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #82aaff;&quot;&gt;+&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: #f78c6c;&quot;&gt;1&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;orderMenu[c]&amp;nbsp;&lt;span style=&quot;color: #c792ea;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #82aaff;&quot;&gt;=&lt;/span&gt;&amp;nbsp;caseCnt&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #6e7a96;&quot;&gt;#&amp;nbsp;제일&amp;nbsp;많이&amp;nbsp;불린&amp;nbsp;음식&amp;nbsp;구하기&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;orderMenuSorted&amp;nbsp;&lt;span style=&quot;color: #c792ea;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #82aaff;&quot;&gt;=&lt;/span&gt;&amp;nbsp;{c:&amp;nbsp;sorted([(v,&amp;nbsp;k)&amp;nbsp;&lt;span style=&quot;color: #82aaff;&quot;&gt;for&lt;/span&gt;&amp;nbsp;k,&amp;nbsp;v&amp;nbsp;&lt;span style=&quot;color: #82aaff;&quot;&gt;in&lt;/span&gt;&amp;nbsp;orderMenu[c].items()&amp;nbsp;&lt;span style=&quot;color: #82aaff;&quot;&gt;if&lt;/span&gt;&amp;nbsp;v&amp;nbsp;&lt;span style=&quot;color: #c792ea;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #82aaff;&quot;&gt;&amp;gt;&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: #f78c6c;&quot;&gt;1&lt;/span&gt;])&amp;nbsp;&lt;span style=&quot;color: #82aaff;&quot;&gt;for&lt;/span&gt;&amp;nbsp;c&amp;nbsp;&lt;span style=&quot;color: #82aaff;&quot;&gt;in&lt;/span&gt;&amp;nbsp;course}&amp;nbsp;&lt;span style=&quot;color: #6e7a96;&quot;&gt;#&amp;nbsp;{메뉴구성개수:&amp;nbsp;[주문수,&amp;nbsp;구성조합]}&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #82aaff;&quot;&gt;for&lt;/span&gt;&amp;nbsp;c&amp;nbsp;&lt;span style=&quot;color: #82aaff;&quot;&gt;in&lt;/span&gt;&amp;nbsp;course:&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;cData&amp;nbsp;&lt;span style=&quot;color: #c792ea;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #82aaff;&quot;&gt;=&lt;/span&gt;&amp;nbsp;orderMenuSorted[c]&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;bestCourse&amp;nbsp;&lt;span style=&quot;color: #c792ea;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #82aaff;&quot;&gt;=&lt;/span&gt;&amp;nbsp;[]&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #82aaff;&quot;&gt;if&lt;/span&gt;&amp;nbsp;cData:&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;bestCourse&amp;nbsp;&lt;span style=&quot;color: #c792ea;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #82aaff;&quot;&gt;=&lt;/span&gt;&amp;nbsp;&amp;nbsp;cData.pop()&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;answer.append(&lt;span style=&quot;color: #c3e88d;&quot;&gt;''&lt;/span&gt;.join(bestCourse[&lt;span style=&quot;color: #f78c6c;&quot;&gt;1&lt;/span&gt;]))&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #82aaff;&quot;&gt;while&lt;/span&gt;&amp;nbsp;cData:&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #82aaff;&quot;&gt;if&lt;/span&gt;&amp;nbsp;bestCourse[&lt;span style=&quot;color: #f78c6c;&quot;&gt;0&lt;/span&gt;]&amp;nbsp;&lt;span style=&quot;color: #c792ea;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #82aaff;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #c792ea;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #82aaff;&quot;&gt;=&lt;/span&gt;&amp;nbsp;&amp;nbsp;cData[&lt;span style=&quot;color: #c792ea;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #82aaff;&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color: #f78c6c;&quot;&gt;1&lt;/span&gt;][&lt;span style=&quot;color: #f78c6c;&quot;&gt;0&lt;/span&gt;]:&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;answer.append(&lt;span style=&quot;color: #c3e88d;&quot;&gt;''&lt;/span&gt;.join(cData.pop()[&lt;span style=&quot;color: #f78c6c;&quot;&gt;1&lt;/span&gt;]))&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #82aaff;&quot;&gt;else&lt;/span&gt;:&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;break&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #82aaff;&quot;&gt;return&lt;/span&gt;&amp;nbsp;sorted(answer)&lt;/div&gt;
&lt;/div&gt;
&lt;div style=&quot;text-align: right; margin-top: -13px; margin-right: 5px; font-size: 9px; font-style: italic;&quot;&gt;&lt;a style=&quot;color: #4f4f4ftext-decoration:none;&quot; href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Colored by Color Scripter&lt;/a&gt;&lt;/div&gt;
&lt;/td&gt;
&lt;td style=&quot;vertical-align: bottom; padding: 0 2px 4px 0;&quot;&gt;&lt;a style=&quot;text-decoration: none; color: white;&quot; href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;&lt;span style=&quot;font-size: 9px; word-break: normal; background-color: #4f4f4f; color: white; border-radius: 10px; padding: 1px;&quot;&gt;cs&lt;/span&gt;&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;661&quot; data-origin-height=&quot;407&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/trBn1/btrEXVMccNp/JEKYOejUKaJuLPQNsGiCZk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/trBn1/btrEXVMccNp/JEKYOejUKaJuLPQNsGiCZk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/trBn1/btrEXVMccNp/JEKYOejUKaJuLPQNsGiCZk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FtrBn1%2FbtrEXVMccNp%2FJEKYOejUKaJuLPQNsGiCZk%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;661&quot; height=&quot;407&quot; data-origin-width=&quot;661&quot; data-origin-height=&quot;407&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>Algorithm/Programmers</category>
      <category>Python</category>
      <author>chea-young</author>
      <guid isPermaLink="true">https://chea-young.tistory.com/37</guid>
      <comments>https://chea-young.tistory.com/37#entry37comment</comments>
      <pubDate>Thu, 16 Jun 2022 17:21:47 +0900</pubDate>
    </item>
  </channel>
</rss>