<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>dwbh23 님의 블로그</title>
    <link>https://dwbh23.tistory.com/</link>
    <description>dwbh23 님의 블로그 입니다.</description>
    <language>ko</language>
    <pubDate>Mon, 1 Jun 2026 12:12:46 +0900</pubDate>
    <generator>TISTORY</generator>
    <ttl>100</ttl>
    <managingEditor>dwbh23</managingEditor>
    <item>
      <title>[웹해킹]-0주차 과제</title>
      <link>https://dwbh23.tistory.com/30</link>
      <description>&lt;p style=&quot;background-color: #eeeeee; color: #2c3e50; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;프록시를 공부하시고 mjsec.kr/lms 주소를 버프슈트로 돌려보세요 로그인 후 나오는 response가 총 4개 있을텐데 mjsec.kr로 시작하는 url에 관한 정보들을 각각 정리해주세요&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #eeeeee; color: #2c3e50; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #eeeeee; color: #2c3e50; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;1. URL&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;372&quot; data-origin-height=&quot;117&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cFyGxh/dJMcafzgkZU/n7xnUTBWS4aWCtCOGYskL1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cFyGxh/dJMcafzgkZU/n7xnUTBWS4aWCtCOGYskL1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cFyGxh/dJMcafzgkZU/n7xnUTBWS4aWCtCOGYskL1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcFyGxh%2FdJMcafzgkZU%2Fn7xnUTBWS4aWCtCOGYskL1%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;372&quot; height=&quot;117&quot; data-origin-width=&quot;372&quot; data-origin-height=&quot;117&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2.해당 패킷이 화면에서 뭘 담당하는지&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;/lms/api/v1/auth/login&amp;nbsp; =&amp;gt;&amp;nbsp; 로그인버튼 누르면 생김.메인화면으로 진입하게함&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;&amp;nbsp;/lms/api/v1/user/user-page&amp;nbsp; =&amp;gt; &lt;span&gt;&amp;nbsp;화면 상단 우측에 있는 마이페이지에서 사용자 정보를 보여줌&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;/lms/api/v1/user/announcements&amp;nbsp; =&amp;gt;&amp;nbsp; 화면 상단 중앙에 있는 공지사항을 보여줌(+ 실시간 보안 소식?)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;/lms/api/v1/group/all&amp;nbsp; =&amp;gt;&amp;nbsp; 화면 상단 좌측의 현재 수강중인 강좌의 그룹?들을 보여줌&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;3.안에 있는 내용물은 뭔지?&lt;/p&gt;
&lt;pre id=&quot;code_1774533626039&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# /lms/api/v1/auth/login

POST /lms/api/v1/auth/login HTTP/2
Host: mjsec.kr
Content-Length: 53
Sec-Ch-Ua-Platform: &quot;Windows&quot;
Accept-Language: ko-KR,ko;q=0.9
Sec-Ch-Ua: &quot;Not-A.Brand&quot;;v=&quot;24&quot;, &quot;Chromium&quot;;v=&quot;146&quot;
Content-Type: application/json
Sec-Ch-Ua-Mobile: ?0
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Safari/537.36
Accept: */*
Origin: https://mjsec.kr
Sec-Fetch-Site: same-origin
Sec-Fetch-Mode: cors
Sec-Fetch-Dest: empty
Referer: https://mjsec.kr/lms/login
Accept-Encoding: gzip, deflate, br
Priority: u=1, i

{&quot;studentNumber&quot;:60222588,&quot;password&quot;:&quot;Qlslqlsl1234!&quot;}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;맨 밑에 있는 로그인할때 입력한 정보를 담음&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1774533783593&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;#/lms/api/v1/user/user-page


{&quot;code&quot;:&quot;SUCCESS&quot;,
&quot;message&quot;:&quot;유저 페이지 조회 성공&quot;,
&quot;data&quot;:{
&quot;userId&quot;:87,&quot;name&quot;:&quot;이영빈&quot;,&quot;studentNumber&quot;:60222588,&quot;email&quot;:&quot;dwbhyoungqlsl@naver.com&quot;,&quot;phoneNumber&quot;:&quot;010-5303-2660&quot;,&quot;profileImage&quot;:null,&quot;createdAt&quot;:&quot;2026-01-06T04:16:46.814222&quot;,&quot;studyGroups&quot;:[{&quot;studyGroupId&quot;:24,&quot;name&quot;:&quot;포너블 기초&quot;,&quot;category&quot;:&quot;PWNABLE&quot;,&quot;generation&quot;:&quot;3.5기&quot;,&quot;studyImage&quot;:&quot;/uploads/85420378-a26e-425d-a744-78cc294fa657.jpg&quot;},{&quot;studyGroupId&quot;:27,&quot;name&quot;:&quot;리버싱대통합 - 우혁&quot;,&quot;category&quot;:&quot;REVERSING&quot;,&quot;generation&quot;:&quot;3.5기&quot;,&quot;studyImage&quot;:null},{&quot;studyGroupId&quot;:16,&quot;name&quot;:&quot;Spring&quot;,&quot;category&quot;:&quot;DEV&quot;,&quot;generation&quot;:&quot;3.5기&quot;,&quot;studyImage&quot;:&quot;/uploads/e8edd9ca-4fb9-4b52-94b6-b20b50a2fe33.png&quot;},{&quot;studyGroupId&quot;:31,&quot;name&quot;:&quot;다이노포스해킹박사TV강지원&quot;,&quot;category&quot;:&quot;WEB&quot;,&quot;generation&quot;:&quot;4기&quot;,&quot;studyImage&quot;:null},{&quot;studyGroupId&quot;:35,&quot;name&quot;:&quot;파키케팔로사우루스&quot;,&quot;category&quot;:&quot;WEB&quot;,&quot;generation&quot;:&quot;4기&quot;,&quot;studyImage&quot;:null},{&quot;studyGroupId&quot;:34,&quot;name&quot;:&quot;데헷&amp;gt;.&amp;lt; Ops...&quot;,&quot;category&quot;:&quot;DEV&quot;,&quot;generation&quot;:&quot;4기&quot;,&quot;studyImage&quot;:null}]}}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;각종 내 정보들이 담겨있음&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1774533862190&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;#/lms/api/v1/user/announcements

{&quot;code&quot;:&quot;SUCCESS&quot;,&quot;message&quot;:&quot;&amp;igrave;&amp;nbsp;&amp;igrave;&amp;sup2;&amp;acute; &amp;ecirc;&amp;sup3;&amp;micro;&amp;igrave;&amp;sect;&amp;igrave;&amp;not;&amp;iacute;&amp;shy; &amp;euml;&amp;ordf;&amp;copy;&amp;euml;&amp;iexcl; &amp;euml;&amp;deg;&amp;iacute; &amp;igrave;&amp;plusmn;&amp;ecirc;&amp;sup3;&amp;micro;&quot;,&quot;data&quot;:[{&quot;announcementId&quot;:9,&quot;userId&quot;:1,&quot;title&quot;:&quot;MJSEC &amp;ecirc;&amp;deg;&amp;igrave;&amp;cent; &amp;igrave;&amp;euml;&amp;yen; &amp;igrave;&amp;igrave;&quot;,&quot;content&quot;:&quot;&amp;lt;p&amp;gt;MJSEC &amp;ecirc;&amp;deg;&amp;igrave;&amp;cent; &amp;igrave;&amp;euml;&amp;yen; &amp;igrave;&amp;igrave;&amp;igrave;&amp;euml;&amp;euml;&amp;curren;!&amp;lt;/p&amp;gt;\n&amp;lt;p&amp;gt;&amp;iacute;&amp;acute;&amp;euml;&amp;sup1; &amp;ecirc;&amp;micro;&amp;not;&amp;ecirc;&amp;cedil;&amp;euml;&amp;euml;&amp;frac14;&amp;igrave;&amp;acute;&amp;euml;&amp;cedil;&amp;igrave;&amp;igrave; &amp;igrave;&amp;igrave;&amp;igrave; &amp;euml;&amp;curren;&amp;igrave;&amp;acute;&amp;euml;&amp;deg;&amp;igrave; &amp;igrave; &amp;igrave;&amp;igrave;&amp;micro;&amp;euml;&amp;euml;&amp;curren;.&amp;lt;/p&amp;gt;\n&amp;lt;p&amp;gt;Link:  &amp;lt;a href=\&quot;https://drive.google.com/drive/folders/167Aj7kSXwJPLEYelMlEKhs9QCHABor3T?usp=sharing\&quot; target=\&quot;_blank\&quot; rel=\&quot;noopener\&quot;&amp;gt;https://drive.google.com/drive/folders/167Aj7kSXwJPLEYelMlEKhs9QCHABor3T?usp=sharing&amp;lt;/a&amp;gt;&amp;lt;/p&amp;gt;\n&amp;lt;p&amp;gt; &amp;lt;/p&amp;gt;&quot;,&quot;type&quot;:&quot;NOTICE&quot;,&quot;createdAt&quot;:&quot;2025-10-02T06:43:09.696613&quot;,&quot;updatedAt&quot;:&quot;2025-10-02T06:43:09.696613&quot;},{&quot;announcementId&quot;:8,&quot;userId&quot;:1,&quot;title&quot;:&quot;HSPACE SPACE WAR(&amp;euml;&amp;igrave;&amp;sect;&amp;iacute;&amp;cedil; &amp;iacute;&amp;not;&amp;euml;&amp;nbsp;&amp;igrave;) - 2025&amp;euml; 9&amp;igrave; 27&amp;igrave;&amp;frac14; &amp;igrave;&amp;curren;&amp;iacute; 1&amp;igrave;~7&amp;igrave;&quot;,&quot;content&quot;:&quot;&amp;lt;p&amp;gt;&amp;igrave;&amp;euml;&amp;iacute;&amp;igrave;&amp;cedil;&amp;igrave;!&amp;lt;br&amp;gt;&amp;igrave;&amp;acute;&amp;euml;&amp;sup2;&amp;igrave;&amp;pound;&amp;frac14; &amp;iacute;&amp;nbsp; 9&amp;igrave; 27&amp;igrave;&amp;frac14; &amp;igrave;&amp;curren;&amp;iacute; 1&amp;igrave;&amp;euml;&amp;para;&amp;iacute;&amp;deg; 7&amp;igrave;&amp;ecirc;&amp;sup1;&amp;igrave;&amp;sect;&amp;lt;br&amp;gt;&amp;lt;a href=\&quot;forge.hspace.io\&quot; target=\&quot;_blank\&quot; rel=\&quot;noopener\&quot;&amp;gt;forge.hspace.io&amp;lt;/a&amp;gt;&amp;igrave;&amp;igrave;&amp;lt;br&amp;gt;2025&amp;euml;&amp;euml; &amp;igrave;&amp;not;&amp;igrave;&amp;macr; &amp;euml;&amp;sup2;&amp;igrave;&amp;sect;&amp;cedil; &amp;igrave;&amp;curren;&amp;iacute;&amp;igrave;&amp;acute;&amp;igrave;&amp;curren;&amp;igrave;&amp;ecirc;&amp;deg; &amp;igrave;&amp;sect;&amp;iacute;&amp;euml;&amp;copy;&amp;euml;&amp;euml;&amp;curren;.&amp;lt;br&amp;gt;*HSPACE &amp;ecirc;&amp;sup3;&amp;igrave;&amp;nbsp;(&amp;ecirc;&amp;micro;&amp;not;&amp;ecirc;&amp;cedil; &amp;ecirc;&amp;sup3;&amp;igrave;&amp;nbsp; &amp;euml;&amp;iexcl;&amp;ecirc;&amp;middot;&amp;cedil;&amp;igrave;&amp;cedil; &amp;ecirc;&amp;deg;&amp;euml;&amp;yen;)&amp;igrave;&amp;frac14;&amp;euml;&amp;iexcl; &amp;euml;&amp;iexcl;&amp;ecirc;&amp;middot;&amp;cedil;&amp;igrave;&amp;cedil; &amp;ecirc;&amp;deg;&amp;euml;&amp;yen;&amp;iacute;&amp;copy;&amp;euml;&amp;euml;&amp;curren;.&amp;lt;/p&amp;gt;\n&amp;lt;p&amp;gt;&amp;igrave;&amp;acute;&amp;euml;&amp;sup2; &amp;iacute;&amp;euml;&amp;sect;&amp;euml; &amp;iacute;&amp;not;&amp;euml;&amp;nbsp;&amp;igrave;&amp;euml;&amp;iexcl;&amp;lt;br&amp;gt;1. Hyper-V, Memory&amp;lt;br&amp;gt;2. Registry&amp;lt;br&amp;gt;3. SQLite&amp;lt;br&amp;gt;4. ZFS&amp;lt;br&amp;gt;5. Anti-Forensics&amp;lt;br&amp;gt;6. synology&amp;lt;br&amp;gt;7. Drone&amp;lt;br&amp;gt;8. Signal&amp;igrave;&amp;pound;&amp;frac14;&amp;igrave;&amp;nbsp;&amp;igrave; 8&amp;euml;&amp;not;&amp;cedil;&amp;igrave;&amp;nbsp;&amp;ecirc;&amp;deg; &amp;igrave;&amp;para;&amp;igrave;&amp;nbsp;&amp;euml;&amp;copy;&amp;euml;&amp;euml;&amp;curren;.&amp;lt;/p&amp;gt;\n&amp;lt;p&amp;gt;&amp;igrave;&amp;acute;&amp;igrave;&amp;nbsp;&amp;igrave;&amp;sup2;&amp;euml;&amp;frac14; 2&amp;euml;&amp;not;&amp;cedil;&amp;igrave;&amp;nbsp; &amp;iacute;&amp;ecirc;&amp;sup3;&amp;nbsp; &amp;euml;&amp;frac14;&amp;igrave; &amp;igrave;&amp;nbsp;&amp;igrave;&amp;para;&amp;igrave;,&amp;lt;br&amp;gt;&amp;igrave;&amp;curren;&amp;euml;&amp;sup2;&amp;igrave;&amp;iacute;&amp;ecirc;&amp;para; &amp;euml;&amp;sect;&amp;igrave;&amp;igrave; &amp;euml;&amp;sup3;&amp;acute;&amp;euml;&amp;acute;&amp;euml;&amp;euml;&amp;brvbar;&amp;frac12;&amp;euml;&amp;euml;&amp;curren;.&amp;lt;br&amp;gt;* writeup &amp;igrave;&amp;nbsp;&amp;igrave;&amp;para;: &amp;lt;a href=\&quot;https://hspace.io/u/Earth\&quot; target=\&quot;_blank\&quot; rel=\&quot;noopener\&quot;&amp;gt;https://hspace.io/u/Earth&amp;lt;/a&amp;gt;&amp;lt;br&amp;gt;&amp;euml;&amp;sect;&amp;igrave; &amp;igrave;&amp;deg;&amp;cedil;&amp;igrave;&amp;not; &amp;euml;&amp;para;&amp;iacute;&amp;euml;&amp;euml;&amp;brvbar;&amp;frac12;&amp;euml;&amp;euml;&amp;curren;. &amp;ecirc;&amp;deg;&amp;igrave;&amp;not;&amp;iacute;&amp;copy;&amp;euml;&amp;euml;&amp;curren;.&amp;lt;/p&amp;gt;&quot;,&quot;type&quot;:&quot;COMPETITION&quot;,&quot;createdAt&quot;:&quot;2025-09-25T03:01:08.741945&quot;,&quot;updatedAt&quot;:&quot;2025-09-25T03:58:09.838157&quot;},{&quot;announcementId&quot;:7,&quot;userId&quot;:1,&quot;title&quot;:&quot;FIESTA 2025(09.26 18:00~09.28 24:00)&quot;,&quot;content&quot;:&quot;&amp;lt;p&amp;gt;\uD83D\uDD0D FIESTA 2025 &amp;amp;mdash; &amp;ecirc;&amp;cedil;&amp;igrave;&amp;micro;&amp;euml;&amp;sup3;&amp;acute;&amp;igrave; &amp;igrave;&amp;iacute;&amp;euml;&amp;para;&amp;igrave; &amp;euml;&amp;iacute;&amp;lt;br&amp;gt;&amp;igrave;&amp;not;&amp;igrave;&amp;acute;&amp;iacute;&amp;cedil;&amp;igrave;&amp;pound;&amp;frac14;&amp;igrave;: https://fiesta.fsec.or.kr/&amp;lt;br&amp;gt;\uD83D\uDCC6 &amp;igrave;&amp;frac14;&amp;igrave;&amp;nbsp;&amp;lt;br&amp;gt;&amp;iacute;&amp;shy;&amp;euml;&amp;ordf;&amp;copy;   &amp;ecirc;&amp;cedil;&amp;deg;&amp;ecirc;&amp;deg;/&amp;igrave;&amp;ecirc;&amp;deg;&amp;lt;br&amp;gt;&amp;igrave;&amp;sup2;&amp;acute;&amp;iacute;&amp;igrave;&amp;yen; &amp;igrave;&amp;acute;&amp;igrave;   9&amp;igrave; 15&amp;igrave;&amp;frac14;(&amp;igrave;) 09:00 ~ 9&amp;igrave; 24&amp;igrave;&amp;frac14;(&amp;igrave;) 18:00&amp;lt;br&amp;gt;&amp;euml;&amp;sup3;&amp;cedil; &amp;euml;&amp;iacute;   9&amp;igrave; 26&amp;igrave;&amp;frac14;(&amp;ecirc;&amp;cedil;) 18:00 ~ 9&amp;igrave; 28&amp;igrave;&amp;frac14;(&amp;igrave;&amp;frac14;) 24:00&amp;lt;br&amp;gt;&amp;igrave;&amp;igrave;&amp;igrave;   11&amp;igrave; 20&amp;igrave;&amp;frac14;(&amp;euml;&amp;ordf;&amp;copy;), &amp;ecirc;&amp;cedil;&amp;igrave;&amp;micro;&amp;igrave;&amp;nbsp;&amp;euml;&amp;sup3;&amp;acute;&amp;euml;&amp;sup3;&amp;acute;&amp;iacute;&amp;cedil; &amp;igrave;&amp;raquo;&amp;uml;&amp;iacute;&amp;frac14;&amp;euml;&amp;deg;&amp;igrave;&amp;curren; FISCON 2025 &amp;iacute;&amp;igrave;&amp;not;&amp;igrave;&amp;yen;&amp;lt;br&amp;gt;\uD83C\uDFAF &amp;igrave;&amp;deg;&amp;cedil;&amp;ecirc;&amp;deg; &amp;euml;&amp;igrave;&amp;lt;/p&amp;gt;\n&amp;lt;p&amp;gt;&amp;ecirc;&amp;cedil;&amp;igrave;&amp;micro;&amp;euml;&amp;sup3;&amp;acute;&amp;igrave;&amp;igrave; &amp;igrave;&amp;not;&amp;igrave;&amp;ecirc;&amp;cedil;&amp;deg;&amp;ecirc;&amp;acute; &amp;igrave;&amp;not;&amp;igrave;&amp;sect;&amp;igrave;&amp;lt;br&amp;gt;&amp;euml;&amp;iacute;(&amp;igrave;)&amp;igrave; (&amp;euml;&amp;uml;, &amp;ecirc;&amp;cedil;&amp;deg;&amp;igrave;/&amp;ecirc;&amp;cedil;&amp;deg;&amp;ecirc;&amp;acute; &amp;igrave;&amp;not;&amp;igrave;&amp;sect;&amp;igrave; &amp;igrave;&amp;nbsp;&amp;igrave;&amp;cedil;)&amp;lt;/p&amp;gt;\n&amp;lt;p&amp;gt;\uD83C\uDFE2 &amp;igrave;&amp;pound;&amp;frac14;&amp;igrave;&amp;micro; / &amp;iacute;&amp;igrave;&amp;lt;/p&amp;gt;\n&amp;lt;p&amp;gt;&amp;igrave;&amp;pound;&amp;frac14;&amp;igrave;&amp;micro;&amp;middot;&amp;igrave;&amp;pound;&amp;frac14;&amp;ecirc;&amp;acute;: &amp;ecirc;&amp;cedil;&amp;igrave;&amp;micro;&amp;euml;&amp;sup3;&amp;acute;&amp;igrave;&amp;igrave;&amp;lt;br&amp;gt;&amp;iacute;&amp;igrave;: &amp;ecirc;&amp;cedil;&amp;igrave;&amp;micro;&amp;igrave;&amp;igrave;&amp;iacute;&amp;lt;/p&amp;gt;\n&amp;lt;p&amp;gt;\uD83D\uDCCC &amp;ecirc;&amp;cedil;&amp;deg;&amp;iacute;&amp;lt;/p&amp;gt;\n&amp;lt;p&amp;gt;&amp;igrave;&amp;sect;&amp;euml; &amp;euml;&amp;iacute; &amp;igrave;&amp;para;&amp;igrave;&amp;nbsp; &amp;euml;&amp;not;&amp;cedil;&amp;igrave;&amp;nbsp; &amp;iacute;&amp;igrave;&amp;acute;&amp;euml;&amp;sup3;&amp;acute;&amp;euml; &amp;amp;ldquo;&amp;iacute;&amp;euml;&amp;nbsp;&amp;igrave;&amp;acute;&amp;igrave;&amp;acute;&amp;amp;rdquo; &amp;igrave;&amp;acute;&amp;igrave;&amp;euml;&amp;uml;&amp;lt;/p&amp;gt;\n&amp;lt;p&amp;gt;&amp;euml;&amp;not;&amp;cedil;&amp;igrave;:&amp;lt;br&amp;gt;&amp;amp;ensp;&amp;amp;ensp;&amp;igrave;&amp;nbsp;&amp;iacute; &amp;amp;rarr; 02-3495-9421&amp;lt;br&amp;gt;&amp;amp;ensp;&amp;amp;ensp;&amp;igrave;&amp;acute;&amp;euml;&amp;copy;&amp;igrave;&amp;frac14; &amp;amp;rarr; fiesta@fsec.or.kr&amp;lt;/p&amp;gt;&quot;,&quot;type&quot;:&quot;COMPETITION&quot;,&quot;createdAt&quot;:&quot;2025-09-18T15:19:22.248495&quot;,&quot;updatedAt&quot;:&quot;2025-09-18T15:19:58.303689&quot;},{&quot;announcementId&quot;:6,&quot;userId&quot;:1,&quot;title&quot;:&quot;MJSEC 3&amp;ecirc;&amp;cedil;&amp;deg; &amp;igrave;&amp;not;&amp;euml;&amp;not;&amp;euml;&amp;para; &amp;iacute;&amp;igrave;&amp;iacute;&amp;copy;&amp;euml;&amp;euml;&amp;curren;! - MJSEC LMS &amp;ecirc;&amp;deg;&amp;euml;&amp;deg;&amp;igrave;&amp;sect; -&quot;,&quot;content&quot;:&quot;&amp;lt;p&amp;gt;&amp;igrave;&amp;euml;&amp;iacute;&amp;igrave;&amp;cedil;&amp;igrave; MJSEC 3&amp;ecirc;&amp;cedil;&amp;deg; &amp;igrave;&amp;not;&amp;euml;&amp;not;&amp;euml;&amp;para;&amp;euml;&amp;curren; &amp;euml;&amp;deg;&amp;ecirc;&amp;deg;&amp;igrave;&amp;micro;&amp;euml;&amp;euml;&amp;curren;!&amp;lt;/p&amp;gt;\n&amp;lt;p&amp;gt;&amp;euml;&amp;euml;&amp;igrave;&amp;acute; 2025&amp;euml; 9&amp;igrave; 19&amp;igrave;&amp;frac14; 00&amp;igrave;&amp;igrave; MJSEC LMS&amp;ecirc;&amp;deg; &amp;euml;&amp;deg;&amp;deg;&amp;iacute;&amp;not;&amp;euml;&amp;igrave;&amp;igrave;&amp;micro;&amp;euml;&amp;euml;&amp;curren;! &amp;lt;/p&amp;gt;\n&amp;lt;p&amp;gt;&amp;iacute;&amp;acute;&amp;euml;&amp;sup1; LMS&amp;ecirc;&amp;deg;&amp;euml;&amp;deg;&amp;igrave; 2025&amp;euml; &amp;igrave;&amp;not;&amp;euml;&amp;brvbar;&amp;euml;&amp;deg;&amp;copy;&amp;iacute;&amp;euml;&amp;para;&amp;iacute;&amp;deg; &amp;igrave;&amp;igrave;&amp;iacute;&amp;igrave;&amp;not; 3&amp;ecirc;&amp;deg;&amp;igrave;&amp;euml;&amp;sect;&amp;igrave; &amp;ecirc;&amp;deg;&amp;euml;&amp;deg;&amp;igrave;&amp;acute; &amp;igrave;&amp;euml;&amp;pound;&amp;iacute;&amp;igrave;&amp;igrave;&amp;micro;&amp;euml;&amp;euml;&amp;curren;.&amp;lt;/p&amp;gt;\n&amp;lt;p&amp;gt;MJSEC LMS &amp;ecirc;&amp;deg;&amp;euml;&amp;deg;&amp;igrave;&amp;sect;&amp;euml;&amp;curren;&amp;igrave; &amp;euml;&amp;curren;&amp;igrave;&amp;ecirc;&amp;sup3;&amp;frac14; &amp;ecirc;&amp;deg;&amp;igrave;&amp;frac14;&amp;euml;&amp;copy;&amp;deg; &amp;ecirc;&amp;deg;&amp;igrave;&amp;not;&amp;iacute;&amp;uml;&amp;igrave; &amp;iacute;&amp;iacute;&amp;copy;&amp;euml;&amp;euml;&amp;curren;.&amp;lt;/p&amp;gt;\n&amp;lt;p&amp;gt;&amp;lt;strong&amp;gt;[LMS &amp;ecirc;&amp;deg;&amp;euml;&amp;deg;&amp;igrave;&amp;sect;]&amp;lt;/strong&amp;gt;&amp;lt;/p&amp;gt;\n&amp;lt;ul&amp;gt;\n&amp;lt;li style=\&quot;font-weight: bold;\&quot;&amp;gt;&amp;lt;strong&amp;gt;BACK: &amp;euml;&amp;deg;&amp;euml;&amp;macr;&amp;frac14;&amp;igrave;, &amp;igrave;&amp;curren;&amp;igrave;&amp;curren;&amp;iacute;, &amp;igrave;&amp;nbsp;&amp;igrave;&amp;nbsp;&amp;igrave;&amp;deg;&amp;not;&amp;lt;/strong&amp;gt;&amp;lt;/li&amp;gt;\n&amp;lt;li style=\&quot;font-weight: bold;\&quot;&amp;gt;&amp;lt;strong&amp;gt;FRONT: &amp;igrave;&amp;micro;&amp;igrave;&amp;curren;&amp;iacute;&amp;cedil;, &amp;euml;&amp;ecirc;&amp;plusmn;&amp;acute;&amp;iacute;&amp;lt;/strong&amp;gt;&amp;lt;/li&amp;gt;\n&amp;lt;li style=\&quot;font-weight: bold;\&quot;&amp;gt;&amp;lt;strong&amp;gt;DevOps, PM: &amp;igrave;&amp;acute;&amp;igrave;&amp;cent;&amp;igrave;&amp;curren;&amp;lt;/strong&amp;gt;&amp;lt;/li&amp;gt;\n&amp;lt;/ul&amp;gt;\n&amp;lt;p&amp;gt; &amp;lt;/p&amp;gt;\n&amp;lt;p&amp;gt;&amp;euml;&amp;sect;&amp;igrave; &amp;igrave;&amp;acute;&amp;igrave;&amp;copy; &amp;euml;&amp;para;&amp;iacute;&amp;euml;&amp;euml;&amp;brvbar;&amp;not;&amp;euml;&amp;copy;&amp;deg; &amp;igrave;&amp;brvbar;&amp;ecirc;&amp;plusmn;&amp;deg;&amp;igrave; &amp;igrave;&amp;curren;&amp;iacute;&amp;deg;&amp;euml; &amp;iacute;&amp;euml;&amp;igrave;&amp;acute; &amp;euml;&amp;igrave;&amp;uml;&amp;igrave;&amp;frac14;&amp;euml;&amp;copy;&amp;acute; &amp;igrave;&amp;cent;&amp;ecirc;&amp;sup2;&amp;nbsp;&amp;igrave;&amp;micro;&amp;euml;&amp;euml;&amp;curren;.&amp;lt;/p&amp;gt;\n&amp;lt;p&amp;gt;&amp;ecirc;&amp;deg;&amp;igrave;&amp;not;&amp;iacute;&amp;copy;&amp;euml;&amp;euml;&amp;curren;.&amp;lt;/p&amp;gt;\n&amp;lt;p&amp;gt; &amp;lt;/p&amp;gt;\n&amp;lt;p&amp;gt;*&amp;euml;&amp;sup2;&amp;ecirc;&amp;middot;&amp;cedil; &amp;ecirc;&amp;acute;&amp;euml;&amp;nbsp;&amp;uml; &amp;euml;&amp;not;&amp;cedil;&amp;igrave;&amp;euml; &amp;euml;&amp;deg;&amp;euml;&amp;macr;&amp;frac14;&amp;igrave;, &amp;igrave;&amp;acute;&amp;igrave;&amp;cent;&amp;igrave;&amp;curren;(&amp;igrave;&amp;sup1;&amp;acute;&amp;iacute;&amp;iexcl; id: ialleejy)&amp;iacute;&amp;iacute; &amp;euml;&amp;sup3;&amp;acute;&amp;euml;&amp;acute;&amp;igrave;&amp;pound;&amp;frac14;&amp;igrave;&amp;euml;&amp;copy;&amp;acute; &amp;ecirc;&amp;deg;&amp;igrave;&amp;not;&amp;iacute;&amp;ecirc;&amp;sup2;&amp;nbsp;&amp;igrave;&amp;micro;&amp;euml;&amp;euml;&amp;curren;.&amp;lt;/p&amp;gt;\n&amp;lt;p&amp;gt; -MJSEC &amp;igrave;&amp;acute;&amp;ecirc;&amp;cedil;&amp;deg;&amp;iacute;&amp;igrave;&amp;yen; &amp;igrave;&amp;acute;&amp;igrave;&amp;cent;&amp;igrave;&amp;curren; &amp;euml;&amp;euml;&amp;brvbar;&amp;frac14;-&amp;lt;/p&amp;gt;&quot;,&quot;type&quot;:&quot;NOTICE&quot;,&quot;createdAt&quot;:&quot;2025-09-18T15:17:11.715394&quot;,&quot;updatedAt&quot;:&quot;2025-09-18T15:19:47.463068&quot;}]}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;공지사항이나 게시글 내용이 들어있음&lt;/p&gt;
&lt;pre id=&quot;code_1774533915240&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;#/lms/api/v1/group/all

{&quot;code&quot;:&quot;SUCCESS&quot;,&quot;message&quot;:&quot;전체 스터디 그룹 정보 조회 성공&quot;,&quot;data&quot;:[{&quot;studyGroupId&quot;:24,&quot;name&quot;:&quot;포너블 기초&quot;,&quot;category&quot;:&quot;PWNABLE&quot;,&quot;studyImage&quot;:&quot;/uploads/85420378-a26e-425d-a744-78cc294fa657.jpg&quot;,&quot;generation&quot;:&quot;3.5기&quot;,&quot;status&quot;:&quot;INACTIVE&quot;},{&quot;studyGroupId&quot;:27,&quot;name&quot;:&quot;리버싱대통합 - 우혁&quot;,&quot;category&quot;:&quot;REVERSING&quot;,&quot;studyImage&quot;:null,&quot;generation&quot;:&quot;3.5기&quot;,&quot;status&quot;:&quot;INACTIVE&quot;},{&quot;studyGroupId&quot;:16,&quot;name&quot;:&quot;Spring&quot;,&quot;category&quot;:&quot;DEV&quot;,&quot;studyImage&quot;:&quot;/uploads/e8edd9ca-4fb9-4b52-94b6-b20b50a2fe33.png&quot;,&quot;generation&quot;:&quot;3.5기&quot;,&quot;status&quot;:&quot;INACTIVE&quot;},{&quot;studyGroupId&quot;:31,&quot;name&quot;:&quot;다이노포스해킹박사TV강지원&quot;,&quot;category&quot;:&quot;WEB&quot;,&quot;studyImage&quot;:null,&quot;generation&quot;:&quot;4기&quot;,&quot;status&quot;:&quot;ACTIVE&quot;},{&quot;studyGroupId&quot;:35,&quot;name&quot;:&quot;파키케팔로사우루스&quot;,&quot;category&quot;:&quot;WEB&quot;,&quot;studyImage&quot;:null,&quot;generation&quot;:&quot;4기&quot;,&quot;status&quot;:&quot;ACTIVE&quot;},{&quot;studyGroupId&quot;:34,&quot;name&quot;:&quot;데헷&amp;gt;.&amp;lt; Ops...&quot;,&quot;category&quot;:&quot;DEV&quot;,&quot;studyImage&quot;:null,&quot;generation&quot;:&quot;4기&quot;,&quot;status&quot;:&quot;ACTIVE&quot;}]}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;내가 속한 스터디 그룹의 대한 정보가 담겨져있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;3.쿠키와 세션&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;쿠키&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;-클라이언트의 기록과 상태정보를 표현&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;-웹 서버에서는 다수의 클라이언트를 구분해야하는데 클라이언트 식별핼때 필요한 값을 쿠키에 저장&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;-쿠키 없으면 예전에 저장한 파일 보여줘!할떄 알아볼수 없음&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;-요즘에는 Storage APIs를 통해 데이터 저장하는 방식 사용&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;ex) 다시보지 않기, 7일간 표시하지 않기 같은것도 쿠키를 이용함&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;세션&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;-클라이언트가 인증정보를 변조할수 없게함&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;-인증정보를 서버에 저장하고해당 데이터에 접근할 수 있는 세션 아이디(키)를 만들어 클라이언트에 전달&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;-브라우저가 이 키를 쿠키에 저장, HTTP요청할떄 쿠키와 세션 위에 데이터를 얹어 서버에 요청&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;-서버가 그 데이터를 가져왕 ㅣㄴ증상태 확인&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;-통신 할때 저장했던 파일 보여줘!요청하면 다음부턴 내가 지금 주는 티켓 붙여서 말해 하는것&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;둘의 차이점&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;쿠키-데이터 자체를 클라이언트가 저장&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;세션-서버가 저장&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;토큰&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;-서버가 클라이언트의 신원을 확인하는데 사용&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;-공격자들이 이 토큰 탈취,악용&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;-CSRF 토큰&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;: 웹 어플리ㅔ이션에서 사용자의 세션을 보호하는데 사용되는 무작위로 생성된 고유한 값.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;: 사용자의 브라우저에 저장, 사용자가 웹 상ㅣ트에 요청 보낼때마다 서버에 전송&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;: 서버는 토큰 사용하여 요청이 실제 사용자로부터 온것인지 확인 (일치여부)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <author>dwbh23</author>
      <guid isPermaLink="true">https://dwbh23.tistory.com/30</guid>
      <comments>https://dwbh23.tistory.com/30#entry30comment</comments>
      <pubDate>Thu, 26 Mar 2026 23:18:27 +0900</pubDate>
    </item>
    <item>
      <title>[백엔드]5주차 과제 - DB&amp;amp;JPA</title>
      <link>https://dwbh23.tistory.com/29</link>
      <description>&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;DB&amp;nbsp;&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;과거 메모장에 적고 저장하듯이 정리되지 않은 상태로 데이터를 저장했었음&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;-&amp;gt;여러 사람이 사용해야하는 경우 문제가 생길수 있어 누락없이 일관되게,묶는 방법을 통해 저장해야됨&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;방법 : 파일 시스템&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;-데이터의 중복성&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;-데이터 종속성&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;=&amp;gt;데이터 베이스&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;특징 1.실시간 접근성&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;-사용자가 데이터를 요청하면 수초 내에 결과를 서비스&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&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;-삽입, 삭제, 수정 등의 작업을 통해여 바뀐 데이터 값을 저장&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;특징 3. 동시 공유&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;-여러 사용자에게 동시 공유, 데이터베이스에 접근하는 프로그램이 여러개&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;특징 4. 내용에 따른 참조&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;데이터베이스에 저장된 데이터는 값에 따라 참조.사용자가 조건 제시 -&amp;gt; 데이터 검색&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;특징 5. 데이터 독립성&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;-독립데이터의 논리적 구조를 변경시켜도 응용 프로그램은 변경되지 X&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;데이터베이스 등장 이후 망형 데이터베이스가 주로 사용&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;-데이터 간 연결 구조가 복잡&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;-새로운 요구사항이 생기면 시스템 전체 수정&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;-개발 생산성 낮음&lt;/p&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;gt;관계형 모델&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;538&quot; data-origin-height=&quot;450&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dAG5Yb/dJMcagYIx7r/w7KmXbnDs2eKbe2K1mjumK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dAG5Yb/dJMcagYIx7r/w7KmXbnDs2eKbe2K1mjumK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dAG5Yb/dJMcagYIx7r/w7KmXbnDs2eKbe2K1mjumK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdAG5Yb%2FdJMcagYIx7r%2Fw7KmXbnDs2eKbe2K1mjumK%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;538&quot; height=&quot;450&quot; data-origin-width=&quot;538&quot; data-origin-height=&quot;450&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;SQL&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;-DDL / 데이터베이스 구조 정의&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;-DML / 데이터 조작&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;-DCL&amp;nbsp; / 권한제어&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;-TCL / 트랜잭션 관리&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;테이블 정의&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;-데이터는 테이블 형태로 저장&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;-테이블로부터 언하는 자료를 꺼내옴&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;-새로운 데이터 입력시 테이블 생성 없이 데이터만 추가&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;WHERE 절 뒤에 오는 조건식&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1.비교 연산자&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;912&quot; data-origin-height=&quot;240&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/MWeWW/dJMcabQDwqs/L7KsHexYGUsuwHqjmOxgs0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/MWeWW/dJMcabQDwqs/L7KsHexYGUsuwHqjmOxgs0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/MWeWW/dJMcabQDwqs/L7KsHexYGUsuwHqjmOxgs0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FMWeWW%2FdJMcabQDwqs%2FL7KsHexYGUsuwHqjmOxgs0%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;912&quot; height=&quot;240&quot; data-origin-width=&quot;912&quot; data-origin-height=&quot;240&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2. 논리 연산자&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;910&quot; data-origin-height=&quot;145&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/977Bp/dJMcagj6Uzd/nY8JKxj0pDnkXv0JelCPJK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/977Bp/dJMcagj6Uzd/nY8JKxj0pDnkXv0JelCPJK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/977Bp/dJMcagj6Uzd/nY8JKxj0pDnkXv0JelCPJK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F977Bp%2FdJMcagj6Uzd%2FnY8JKxj0pDnkXv0JelCPJK%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;910&quot; height=&quot;145&quot; data-origin-width=&quot;910&quot; data-origin-height=&quot;145&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;3. 특수 연산자&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;904&quot; data-origin-height=&quot;204&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cDH2IT/dJMcadHECRf/XnV57MeNfHLICHRzGt2PHk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cDH2IT/dJMcadHECRf/XnV57MeNfHLICHRzGt2PHk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cDH2IT/dJMcadHECRf/XnV57MeNfHLICHRzGt2PHk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcDH2IT%2FdJMcadHECRf%2FXnV57MeNfHLICHRzGt2PHk%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;904&quot; height=&quot;204&quot; data-origin-width=&quot;904&quot; data-origin-height=&quot;204&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;4.LIKE 연산자&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;907&quot; data-origin-height=&quot;115&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Xql2g/dJMcacotSH4/04oIGMXpmNmq9VsK0KYsd0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Xql2g/dJMcacotSH4/04oIGMXpmNmq9VsK0KYsd0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Xql2g/dJMcacotSH4/04oIGMXpmNmq9VsK0KYsd0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FXql2g%2FdJMcacotSH4%2F04oIGMXpmNmq9VsK0KYsd0%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;907&quot; height=&quot;115&quot; data-origin-width=&quot;907&quot; data-origin-height=&quot;115&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;JPA&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;자바의 ORM 기술을 쉽게 구현하도록 도와주는 API&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;-자바에서는 데이터의 영속성을 위한 JDBC를 지원&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;=&amp;gt;매핑 작업을 개발자가 일일히 수행(번거로움)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;JDBC&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Interface이고 구현한것은 각 데이터베이스에 맞는 드라이버&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;도입이후 데이터베이스 종류에 상관없이 똑같은 코드로 해결이 가능해짐&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;장점&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1.표준 인터페이스 제공&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;-어떤 DB를 사용해도 코딩 스타일 동일&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;-드라이버만 바꾸면 다른 DB로 전환 가능&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&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;-SQL문을 자바 코드에서 자유롭게 작성하고 실행 -&amp;gt; 세밀한 DB작업 가능&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;3.뛰어난 성능&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;-중간 계층이 없어 순수 SQL 처리 속도가 빠름&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;단점&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1.코드가 길고 복잡&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2.반복되는 코드 많음&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;3.SQL과 자바코드가 섞임&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;4.DB변경이 힘듦&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;JPA(Java Persistance API)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;-SQL문 직접 쓰지 X (DB 테이블을 자바 객체처럼 다룸)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;-객체 저장하면 알아서 INSERT, 수정하면 알아서 UPDATE&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;=&amp;gt;자바객체만 다루면 백그라운드에서 알아서 DB와 동기화&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Hibernate&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;-JPA의 구현체&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;-자바 언어에서 사용하는 ORM 프레임워크&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;-객체지향적인 방식으로 관계형 데이터베이스를 다룰수 있게 도움&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;=&amp;gt;기보넉인 CRUD 코드 반복적으로 작성해야함&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;=&amp;gt;인터페이스로 묶기&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Sprinf Data JPA&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;-JPA를 더 간단하고생산성 있게 쓰게 만들어주는 Sprinf 프로젝트&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1.의존성 추가&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2.User Class 정의(엔티티 정의)&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&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;931&quot; data-origin-height=&quot;421&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/l9X1M/dJMcaaEdTb0/YzCugIT6vFnKmQiOmjADrk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/l9X1M/dJMcaaEdTb0/YzCugIT6vFnKmQiOmjADrk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/l9X1M/dJMcaaEdTb0/YzCugIT6vFnKmQiOmjADrk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fl9X1M%2FdJMcaaEdTb0%2FYzCugIT6vFnKmQiOmjADrk%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;931&quot; height=&quot;421&quot; data-origin-width=&quot;931&quot; data-origin-height=&quot;421&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;</description>
      <author>dwbh23</author>
      <guid isPermaLink="true">https://dwbh23.tistory.com/29</guid>
      <comments>https://dwbh23.tistory.com/29#entry29comment</comments>
      <pubDate>Wed, 11 Feb 2026 01:00:11 +0900</pubDate>
    </item>
    <item>
      <title>[백엔드]-4주차 과제</title>
      <link>https://dwbh23.tistory.com/26</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;spring요약&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;1.Spring&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;-Java 플랫폼을 위한 오픈소스 어플리케이션 프레임워크&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: circle;&quot; data-ke-list-type=&quot;circle&quot;&gt;
&lt;li&gt;제어의 역전 : 객체의 생명주기를 개발자가 아닌 컨테이너가 관리&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;646&quot; data-origin-height=&quot;319&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/0iXtm/dJMcabQAeus/2vyLZEOyaBNeKpE0NrXPdK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/0iXtm/dJMcabQAeus/2vyLZEOyaBNeKpE0NrXPdK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/0iXtm/dJMcabQAeus/2vyLZEOyaBNeKpE0NrXPdK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F0iXtm%2FdJMcabQAeus%2F2vyLZEOyaBNeKpE0NrXPdK%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;646&quot; height=&quot;319&quot; data-origin-width=&quot;646&quot; data-origin-height=&quot;319&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;ul style=&quot;list-style-type: circle;&quot; data-ke-list-type=&quot;circle&quot;&gt;
&lt;li&gt;의존성 주입 : 객체 간의 의존성을 주입 받아 관리 (@Bean)&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;567&quot; data-origin-height=&quot;298&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bGa89S/dJMcaiPFg0Y/TpI4tLqWaq7oPxqKxW9dK0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bGa89S/dJMcaiPFg0Y/TpI4tLqWaq7oPxqKxW9dK0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bGa89S/dJMcaiPFg0Y/TpI4tLqWaq7oPxqKxW9dK0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbGa89S%2FdJMcaiPFg0Y%2FTpI4tLqWaq7oPxqKxW9dK0%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;567&quot; height=&quot;298&quot; data-origin-width=&quot;567&quot; data-origin-height=&quot;298&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;ul style=&quot;list-style-type: circle;&quot; data-ke-list-type=&quot;circle&quot;&gt;
&lt;li&gt;관점 지향 프로그래밍 : 모듈성을 높일 목적으로 서로 다른 관심사를 분리&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;501&quot; data-origin-height=&quot;307&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ssqnR/dJMcad1S475/DZA1ftCrkHFTukODmMGT60/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ssqnR/dJMcad1S475/DZA1ftCrkHFTukODmMGT60/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ssqnR/dJMcad1S475/DZA1ftCrkHFTukODmMGT60/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FssqnR%2FdJMcad1S475%2FDZA1ftCrkHFTukODmMGT60%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;501&quot; height=&quot;307&quot; data-origin-width=&quot;501&quot; data-origin-height=&quot;307&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;ul style=&quot;list-style-type: circle;&quot; data-ke-list-type=&quot;circle&quot;&gt;
&lt;li&gt;기타 : 모듈화와 유연성, 생산성 향상, 강력한 테스트 지원, 확장성과 대규모 지원, 보안강화, ...&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;2.Spring boot&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;-스프링 기반 프로젝트를 어려운 설정 없이 바로 개발에 들어갈 수 있도록 만든 프레임워크&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: circle;&quot; data-ke-list-type=&quot;circle&quot;&gt;
&lt;li&gt;설정 자동화&lt;/li&gt;
&lt;li&gt;라이브러리 버전 자동 관리 : 서드파티 라이브러리들도 호환되는 버전이 자동 다운&lt;/li&gt;
&lt;li&gt;내장 Tomcat, Jetty, Undertow : Spring-boot-starter 의존성 추가하면 @ SpringBootApplication 클래스 선언된 클래스의 main() 메소드 실행만으로 서버 구동 가능&lt;/li&gt;
&lt;li&gt;독립적으로 실행 가능한 JAR (-&amp;gt;내장 Tomcat)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;621&quot; data-origin-height=&quot;480&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bKN4Aq/dJMcaivnmoy/79ZcMFXsKNNuPQ9AvllSq1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bKN4Aq/dJMcaivnmoy/79ZcMFXsKNNuPQ9AvllSq1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bKN4Aq/dJMcaivnmoy/79ZcMFXsKNNuPQ9AvllSq1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbKN4Aq%2FdJMcaivnmoy%2F79ZcMFXsKNNuPQ9AvllSq1%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;621&quot; height=&quot;480&quot; data-origin-width=&quot;621&quot; data-origin-height=&quot;480&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;3.Spring Security&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;-Spring framework의 서브 프로젝트/인증과 권한 부여와 같은 보안 관련 기능 제공(보안 프레임워크)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;-일일이 보안 관련 로직 작성할 필요 x&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;-특징 및 동작 원리&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Filter 기반 동작이기에 스프링 MVC와 분리되어 관리 및 동작&lt;/li&gt;
&lt;li&gt;요청 처리전 다양한 필터 넣기 가능 ( 필터: 클라이언트와 자원 사이 요청,응답 정보 이용해 다양한 처리)&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;840&quot; data-origin-height=&quot;301&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/mLFex/dJMcabpxtQZ/aEgduyc8wuQLvISMt0xm8K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/mLFex/dJMcabpxtQZ/aEgduyc8wuQLvISMt0xm8K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/mLFex/dJMcabpxtQZ/aEgduyc8wuQLvISMt0xm8K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FmLFex%2FdJMcabpxtQZ%2FaEgduyc8wuQLvISMt0xm8K%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;840&quot; height=&quot;301&quot; data-origin-width=&quot;840&quot; data-origin-height=&quot;301&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;607&quot; data-origin-height=&quot;454&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cyWpic/dJMcagxz3ID/6EDISBSGr1CCgzoalg7CX0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cyWpic/dJMcagxz3ID/6EDISBSGr1CCgzoalg7CX0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cyWpic/dJMcagxz3ID/6EDISBSGr1CCgzoalg7CX0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcyWpic%2FdJMcagxz3ID%2F6EDISBSGr1CCgzoalg7CX0%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;607&quot; height=&quot;454&quot; data-origin-width=&quot;607&quot; data-origin-height=&quot;454&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;-Spring Security로 막을수 있는 공격&lt;/p&gt;
&lt;ul style=&quot;list-style-type: circle;&quot; data-ke-list-type=&quot;circle&quot;&gt;
&lt;li&gt;Cross-Site Requeat Forgery (CSRF)
&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;방어방법 : CSRF 보호 활성화 -&amp;gt; 모든 POST, PUT, DELETE 요청에 토큰 검증 추가&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Session Fixation
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;공격자가 사용자의 세션 ID탈취해 세션 가로채는것&lt;/li&gt;
&lt;li&gt;방어 방법 : 인증 후 새로운 세션 ID를 생성하도록 기본 세팅 +세션 만료, 동시 세션 제한 기능&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Brute Force Attack
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;비밀번호 알아낼떄까지 반복적으로 로그인 시도&lt;/li&gt;
&lt;li&gt;방어 방법 : 계정 잠금 기능, 로그인 실패 횟수 추적&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Man-in-the-Middle Attack(MITM)
&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;방어 방법 : HTTPS로 통신 암호화, HTTP를 HTTPS로 리다이렉트 설정&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Clickjacking
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;악성 웹페이지가 애플리케이션을 iframe에 삽입해 사용자 동작 유도&lt;/li&gt;
&lt;li&gt;방어 방법 : X-Frame-Options헤더 설정으로 iframe 삽입 방지&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Password Cracking
&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;방어 방법 : 강력한 비밀번호 해시 알고리즘 사용(Bcrypt-단방향 해시 알고리즘)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Insecure Direct Object References (IDOR)
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;인증되지 않은 사용자가 자원 접근 URL을 직접 입력해 민감한 정보에 접근&lt;/li&gt;
&lt;li&gt;방어 방법 : Spring Security의 URL기반 권한 설정으로 자원 보호&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;4.개발 프로세스&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;기획&lt;/li&gt;
&lt;li&gt;API명세서 작성 / ERD 작성&lt;/li&gt;
&lt;li&gt;코딩 컨벤션 정하기&lt;/li&gt;
&lt;li&gt;초기 세팅(zip파일로 생성)&lt;/li&gt;
&lt;li&gt;개발&lt;br /&gt;-API하나 만든다고 할떄 Controller -&amp;gt; Service -&amp;gt; Dto -&amp;gt; Domain -&amp;gt; Repository순으로 개발&lt;br /&gt;(Config, Exception, Security, Type, Util 클래스는 필요에 따라 작성)&lt;/li&gt;
&lt;li&gt;API 테스트 - Postman&lt;/li&gt;
&lt;li&gt;API 문서화 - Swagger 사용&lt;/li&gt;
&lt;/ol&gt;</description>
      <category>백엔드</category>
      <author>dwbh23</author>
      <guid isPermaLink="true">https://dwbh23.tistory.com/26</guid>
      <comments>https://dwbh23.tistory.com/26#entry26comment</comments>
      <pubDate>Mon, 2 Feb 2026 12:19:39 +0900</pubDate>
    </item>
    <item>
      <title>[백엔드]3주차 과제</title>
      <link>https://dwbh23.tistory.com/22</link>
      <description>&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;1.WEB&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;-인터넷에 연결된 사용자들이 서로의 정보를 공유할 수 있는 공간&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;-멀티 미디어정보를 하이퍼텍스트 방식으로 연결하여 제공&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;*하이퍼텍스트:참조를 통해 독자가 한문서에서 다른 문서로 즉시 접근할 수 있는 텍스트&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;HTML : 구조 담당&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;CSS : 디자인 담당&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;JS : 동적 기능 담당&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;정적 페이지: 서버에 미리 저장된 파일이 그대로 전달되는 웹페이지&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;동적 페이지: url만으로는 들어갈 수 없는 웹페이지 ex)네이버 메일,지도&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;2.WEB의 동작 원리&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;:클라이언트와 서버 간의 요청과 응답 구조로 이루어짐&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;-Web Client: 사용자가 웹에 접근하는 프로그램,서버에 요청을 보냄(웹 브라우저)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;-Web Server: 웹 페이지, 사이트 또는 앱을 저장하는 프로그램(WAS에 정적인 파일 처리를 넘기기도 함)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;-WAS(Web Application Server): 동적인 페이지 처리 담당, 비즈니스 로직 수행, DB와 연결&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;3.HTTP vs HTTPS&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;HTTP&lt;br /&gt;-웹 서버와 클라이언트 간 문서를 전송하기 위한 프로토콜&lt;br /&gt;-method : post, get, put, delete&lt;br /&gt;-단점: 보안취약성,무결성 문제, 신원 보증의 부재&lt;/li&gt;
&lt;li&gt;HTTPS&lt;br /&gt;-HTTP+SSL/TLS(암호화 기반 인터넷 프로토콜-데이터를 암호화하여 도청을 방지하고 인증서를 통해 사이트릐 신뢰성을 증명)&lt;/li&gt;
&lt;/ul&gt;</description>
      <author>dwbh23</author>
      <guid isPermaLink="true">https://dwbh23.tistory.com/22</guid>
      <comments>https://dwbh23.tistory.com/22#entry22comment</comments>
      <pubDate>Tue, 27 Jan 2026 01:51:08 +0900</pubDate>
    </item>
    <item>
      <title>[백엔드]2주차 과제-자료구조</title>
      <link>https://dwbh23.tistory.com/18</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;1.Java로 LinkedList를 직접 구현해보고 블로그에 동작원리 정리&lt;/b&gt; &lt;br /&gt;&lt;br /&gt;-&amp;nbsp;구현되어야&amp;nbsp;하는&amp;nbsp;LinkedList&amp;nbsp;Class의&amp;nbsp;기능 &lt;br /&gt;&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;삽입 &lt;br /&gt;&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;가져오기 &lt;br /&gt;&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;출력&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;-&amp;nbsp;main&amp;nbsp;메소드에서&amp;nbsp;사용자가&amp;nbsp;정의한&amp;nbsp;LinkedList&amp;nbsp;Class를&amp;nbsp;선언하고,&amp;nbsp;각각의&amp;nbsp;기능&amp;nbsp;사용해보기&lt;/p&gt;
&lt;pre id=&quot;code_1768836622522&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;public class LinkedList {
    static class Node&amp;lt;T&amp;gt;{ //static붙여야 main에서 객체 생성안하고 바로 접근가능
        T data;
        Node&amp;lt;T&amp;gt; next;

        public Node(T data) {
            this.data = data;
            this.next = null;
        }
    }

    static public class CustomLinkedList&amp;lt;T&amp;gt; {
        private Node&amp;lt;T&amp;gt; head;
        private int size;

        public CustomLinkedList() {
            this.head = null;
            this.size = 0;
        }

        public void add(T data) {
            Node&amp;lt;T&amp;gt; newNode = new Node&amp;lt;&amp;gt;(data);
            if (head == null) {
                head = newNode;//노드가 없으면 새로운 노드가 헤드
            } else {
                Node&amp;lt;T&amp;gt; temp = head;//움직일 temp의 출발점을 맨앞 노드로 지정
                while (temp.next != null) {//temp의 다음노드가 비어있지 않을떄까지(끝에서 두번째)이동
                    temp = temp.next;//맨 마지막으로 이동
                }
                temp.next = newNode;//맨 마지막 뒤에 위에서 만든 노드 추가
            }
            size++;
        }

        public T get(int index) {
            if(index &amp;lt; 0 || index &amp;gt;= size) {
                throw new IndexOutOfBoundsException();
            }
            Node &amp;lt;T&amp;gt; temp = head;//위랑 마찬가지
            for (int i = 0; i&amp;lt;index; i++){//주어진 index전까지 이동
                temp = temp.next;//다음칸으로 이동(인덱스가 이동하는게 아니라 다음칸으로 이동이 index만큼 반복)
            }
            return temp.data;//거기 값 읽어오기
        }

        public void insert(int index, T data){//return값 없음
            Node&amp;lt;T&amp;gt; newNode = new Node&amp;lt;&amp;gt;(data);
            if(index &amp;lt; 0 || index &amp;gt;= size) {
                throw new IndexOutOfBoundsException();
            }
            if(index == 0){
                newNode.next = head;//인덱스 0이면 맨앞에 추가하고
                head = newNode;//새 노드가 헤드가 됨
            }else{
                Node &amp;lt;T&amp;gt; temp = head;
                for (int i = 0; i&amp;lt;index-1; i++){//주어진 index전까지 이동
                    temp = temp.next; // 주어진 index의 전 노드
                }
                newNode.next = temp.next;//새노드의 다음을 원래노드의 다음으로 바꾸기
                temp.next = newNode;//원래노드의 다음을 새노드로
            }
            size++;
        }

        public void delete(int index){//return값 없음,안비우고 끊기만 하면 됨
            //Node&amp;lt;T&amp;gt; newNode = new Node&amp;lt;&amp;gt;(data);
            if(index &amp;lt; 0 || index &amp;gt;= size) {
                throw new IndexOutOfBoundsException();
            }
            if(index == 0){
                head = head.next;//헤드 다음노드가 헤드됨
            }else{
                Node &amp;lt;T&amp;gt; temp = head;
                for (int i = 0; i&amp;lt;index-1; i++){//주어진 index전까지 이동
                    temp = temp.next; // 주어진 index의 전 노드
                }
                temp.next = temp.next.next;
            }
            size--;
        }

        public void getSize(){
            System.out.println(size);
        }

        public void getList() {
            //CustomLinkedList&amp;lt;Integer&amp;gt; list = new CustomLinkedList&amp;lt;&amp;gt;();
            for(int i=0;i&amp;lt;size;i++){
                System.out.println(get(i));
            }
        }
    }

    public static void main(String[] args) {
        CustomLinkedList&amp;lt;Integer&amp;gt; list = new CustomLinkedList&amp;lt;&amp;gt;();

        System.out.println(&quot;--노드 추가--&quot;);
        list.add(10);
        list.add(20);
        list.add(30);
        list.getList();

        System.out.println(&quot;--원하는 위치에 삽입--&quot;);
        list.insert(2,50);
        list.getList();

        System.out.println(&quot;--삭제--&quot;);
        list.delete(1);
        list.getList();

        System.out.println(&quot;--크기--&quot;);
        list.getSize();
    }
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1)add&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;-새로운 노드 선언&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;-만약 노드가 없다면 새로운 노드가 헤드&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;-움직일 temp의 출발점을 맨앞 노드로 지정&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;-temp가 다음노드가 비어있지 않을때까지 이동(맨마지막)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;-맨 마지막 뒤에 노드 추가&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2)get&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;-add와 동일하게 맨마지막까지 이동&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;-그 값 읽어오기&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;3)insert&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;-인덱스 0이면 맨앞에 추가하고 새 노드가 헤드&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;-주어진 index의 전 노드까지 이동후 새노드의 다음을 원래 노드의 다음으로 ㅂ꾸기&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;-원래 노드의 다음을 새노드로&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;4)delete&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;-헤드 다음노드를 헤드로&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;-주어진 index전까지 이동&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;-원래 노드의 다음노드를 원래 노드와 원래노드의 다다음노드와 연결&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;5)getSize&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;-지금까지 사용한 size출력&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;6)getList&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;-get메소드로 반복문 이용하여 출력&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;문제 1 : 스택 &lt;br /&gt;-&amp;nbsp;링크&amp;nbsp;:&amp;nbsp;&lt;a href=&quot;https://www.acmicpc.net/problem/10828&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://www.acmicpc.net/problem/10828&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;문제 2 : 큐 &lt;br /&gt;-&amp;nbsp;링크&amp;nbsp;:&amp;nbsp;&lt;a href=&quot;https://www.acmicpc.net/problem/10845&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://www.acmicpc.net/problem/10845&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;문제 3 : 최소 힙 &lt;br /&gt;-&amp;nbsp;링크&amp;nbsp;:&amp;nbsp;&lt;a href=&quot;https://www.acmicpc.net/problem/1927&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://www.acmicpc.net/problem/1927&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;문제 4 : 듣보잡 &lt;br /&gt;-&amp;nbsp;링크&amp;nbsp;:&amp;nbsp;&lt;a href=&quot;https://www.acmicpc.net/problem/1764&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://www.acmicpc.net/problem/1764&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;문제 5 : 괄호 &lt;br /&gt;-&amp;nbsp;링크&amp;nbsp;:&amp;nbsp;&lt;a href=&quot;https://www.acmicpc.net/problem/9012&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://www.acmicpc.net/problem/9012&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style3&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;문제 2 : 큐_10845&lt;/p&gt;
&lt;pre id=&quot;code_1768841314561&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import java.util.*;

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

        int n = scan.nextInt();

        //Queue&amp;lt;Integer&amp;gt; queue= new LinkedList&amp;lt;&amp;gt;();
        //이렇게 하면 리스트 기능에서 큐 기능만 쓸거라는 뜻
        LinkedList&amp;lt;Integer&amp;gt; queue= new LinkedList&amp;lt;&amp;gt;();
        //이렇게 해야 이따 reverse같은 형변환시 문제가 없음

        for(int i = 0 ; i &amp;lt; n ; i++){
            String order = scan.next();

            switch (order){
                case &quot;push&quot;:
                    int x = scan.nextInt();
                    queue.offer(x);//add()
                    break;

                case &quot;pop&quot;:
                    if(queue.isEmpty()){
                        System.out.println(-1);
                    }else{
                        System.out.println(queue.poll());//poll:remove+값 반환
                    }
                    break;

                case &quot;size&quot;:
                    System.out.println(queue.size());
                    break;

                case &quot;empty&quot;:
                    if(queue.isEmpty()){
                        System.out.println(1);
                    }else{
                        System.out.println(0);
                    }
                    break;

                case &quot;front&quot;:
                    if(queue.isEmpty()){
                        System.out.println(-1);
                    }else{
                        System.out.println(queue.peek());//element()
                    }
                    break;

                case &quot;back&quot;:
                    if(queue.isEmpty()){
                        System.out.println(-1);
                    }else{
                        System.out.println(queue.getLast());
                    }
                    break;
            }
        }
    }
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;문제1의 스택문제와 유사하게 구현&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;back기능 구현할때 reverse를 두번 했는데 시간초과 -&amp;gt; getLast()메소드 사용&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;push : offer로 큐에 붙이기&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;pop : poll로 뒤에꺼 지우기&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;size : size메소드 사용&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;empty : isEmpty()메소드 사용&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;front : peek()메소드로 앞의 요소 확인&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;back : getLast()메소드로 마지막 요소확인&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;문제 4 : 듣보잡_1764&lt;/p&gt;
&lt;pre id=&quot;code_1768840669226&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import java.util.ArrayList;
import java.util.Collections;
import java.util.Scanner;
import java.util.HashSet;

public class NotHeard2_1764 {
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        int n = scan.nextInt();//못들어본 사람
        int m = scan.nextInt();//못본사람

        //배열 말고 HashSet-더빠름
        HashSet&amp;lt;String&amp;gt; set = new HashSet&amp;lt;&amp;gt;();

        //못들은사람저장
        for(int i = 0; i &amp;lt; n; i++){
            set.add(scan.next());
        }
        
        ArrayList&amp;lt;String&amp;gt; list_seen = new ArrayList&amp;lt;&amp;gt;();

        for(int i = 0; i &amp;lt; m; i++){
            String name = scan.next();
            
            if(set.contains(name)){//contain으로 있는지만 확인
                list_seen.add(name);
            }
        }

        Collections.sort(list_seen);

        System.out.println(list_seen.size());
        for(String s : list_seen){
            System.out.println(s);
        }
    }
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;듣잡 먼저 배열에 저장하고 보잡으로 받은게 듣잡의 요소에 있으면 새로운 배열에 저장한 후 탐색하려 했으나 시간초과&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;-&amp;gt;집합(set) 사용&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;hashset으로 듣잡 저장한 후 같은 방법으로 보잡으로 받은 이름이 집합에 있으면 리스트에 보잡 이름 리스트에 저장&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;배열은 처음부터 원하는 값까지 탐색해야하나 집합은 contain으로 존재하나 여부만 확인이 가능하기에 시간이 덜 걸림&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;문제 5 : 괄호_9012&lt;/p&gt;
&lt;pre id=&quot;code_1768838191992&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import java.util.Scanner;
import java.util.Stack;

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

        int n = scan.nextInt();  // 테스트 케이스 수 입력
        scan.nextLine();  // 개행 문자 제거

        for (int i = 0; i &amp;lt; n; i++) {
            String VPS = scan.nextLine();  // 각 테스트 케이스 입력
            Stack&amp;lt;Character&amp;gt; stack = new Stack&amp;lt;&amp;gt;();  // 스택 생성
            boolean isValid = true;  // 유효성을 확인할 변수

            for (int j = 0; j &amp;lt; VPS.length(); j++) {
                char ch = VPS.charAt(j);

                if (ch == '(') {
                    stack.push(ch);  // 열린 괄호는 스택에 푸시
                } else if (ch == ')') {
                    if (stack.isEmpty()) {
                        isValid = false;  // 닫힌 괄호가 나왔지만 스택이 비어있으면 잘못된 VPS
                        break;
                    } else {
                        stack.pop();  // 스택이 비어있지 않으면 열린 괄호와 짝이 맞으므로 팝
                    }
                }
            }

            // 문자열을 다 처리한 후 스택이 비어있어야 올바른 VPS
            if (isValid &amp;amp;&amp;amp; stack.isEmpty()) {
                System.out.println(&quot;YES&quot;);
            } else {
                System.out.println(&quot;NO&quot;);
            }
        }

        scan.close();
    }
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;-열린괄호가 나오면 스택에 넣고 닫힌괄호가 나오면 스택에서 빼면서 검사&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;닫힌 괄호가 나왔으나 스택이 비어있으면 에러&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;문자열 처리 후 스택이 비어있으면 vps,그렇지 않으면 no출력&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>백엔드</category>
      <author>dwbh23</author>
      <guid isPermaLink="true">https://dwbh23.tistory.com/18</guid>
      <comments>https://dwbh23.tistory.com/18#entry18comment</comments>
      <pubDate>Tue, 20 Jan 2026 01:55:50 +0900</pubDate>
    </item>
    <item>
      <title>[백엔드] 1주차 과제</title>
      <link>https://dwbh23.tistory.com/14</link>
      <description>&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;1. 객체지향&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;-객체 지향이란?&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;프로그램을 명령어 목록이 아닌 데이터와 행위를 가진 객체들의 모임으로 보고 상호작용하게 만드는 프로그래밍 패러다임&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;(객체:데이터와 메서드를 하나로 묶은것)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;-객체지향의 특성&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;추상화&lt;br /&gt;불필요한 세부사항을 제거하고 본질적이고 공통적인 부분만 추출해 표현하는것&lt;br /&gt;객체의 공통적인 속성과 기능을 추출하여 정의하는것&lt;/li&gt;
&lt;li&gt;상속&lt;br /&gt;기존 클래스 재활용,새로운 클래스 작성 =&amp;gt; 코드 재사용&lt;/li&gt;
&lt;li&gt;다형성&lt;br /&gt;어떤 객체의 속성이나 기능이 상황에 따라 여러가지 형태를 가질 수 있는 성질&lt;/li&gt;
&lt;li&gt;캡슐화&lt;br /&gt;서로 연관된 속성과 기능들을 하나의 캡슐로 만들어 외부로부터 데이터 보호&lt;br /&gt;-데이터 보호&lt;br /&gt;-데이터 은닉&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;-객체지향의 장점&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;프로그램을 유연하고 변경이 용이하게 만듦&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;코드 변경 최소화,유지보수 유리&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;코드 재사용 -&amp;gt; 코드 반복 최소화&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;간결한 코드&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;2.백준 문제 풀이&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;문제 1 : 곱셈 &lt;br /&gt;-&amp;nbsp;링크&amp;nbsp;:&amp;nbsp;&lt;a href=&quot;https://www.acmicpc.net/problem/2588&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://www.acmicpc.net/problem/2588&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;문제 2 : 달팽이는 올라가고 싶다 &lt;br /&gt;-&amp;nbsp;링크&amp;nbsp;:&amp;nbsp;&lt;a href=&quot;https://www.acmicpc.net/problem/2869&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://www.acmicpc.net/problem/2869&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;문제 3 : 팩토리얼2 &lt;br /&gt;-&amp;nbsp;링크&amp;nbsp;:&amp;nbsp;&lt;a href=&quot;https://www.acmicpc.net/problem/27433&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://www.acmicpc.net/problem/27433&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;문제 4 : 피보나치 수 5 &lt;br /&gt;-&amp;nbsp;링크&amp;nbsp;:&amp;nbsp;&lt;a href=&quot;https://www.acmicpc.net/problem/10870&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://www.acmicpc.net/problem/10870&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;문제 5 : 분해합_2231&lt;br /&gt;-&amp;nbsp;링크&amp;nbsp;:&amp;nbsp;&lt;a href=&quot;https://www.acmicpc.net/problem/2231&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://www.acmicpc.net/problem/2231&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;문제 2 : 달팽이는 올라가고 싶다_2869&lt;/p&gt;
&lt;pre id=&quot;code_1768247415369&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import java.util.Scanner;

public class SnailUp_2869 {
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        int up = scan.nextInt();//올라가는 거리
        int down = scan.nextInt();//미끄러지는 거리

        int height = scan.nextInt();//올라가야하는 높이

        int day_move = up-down; // 하루동안 올라간 높이
        int remain = height - down; // 마지막날 안미끄러짐

        int day = remain / day_move;

        if(remain % day_move != 0){
            day += 1;
        }
        System.out.println(day);
    }
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;up : 올라가는 거리 (A)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;down : 미끄러지는 거리 (B)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;height : 올라가야하는 높이 (나무막대 길이 V)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;day_move : 하루동안 총 올라간 높이 (A-B)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;remain : 마지막날에는 미끄러지지 않으니 미끄러지는 길이를 빼고 실제로 남은 거리 (height - down)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;day : 걸리는 일수&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;걸리는일수 = 실제 남은 거리 / 하루동안 올라가는 거리&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;만약 마지막날에 A보다 짧은 거리가 남았다면 (%으로 나머지 계산 &amp;lt;A) 하루를 더해준다.&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;문제 3 : 팩토리얼 2_27433&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1768246568252&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import java.util.Scanner;

public class Recursive_27433 {
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        int n = scan.nextInt();

        if(n&amp;gt;=0&amp;amp;&amp;amp;n&amp;lt;=20){
            System.out.println(factorial(n));
        }
    }

    public static long factorial(int n) {
        if(n==1||n==0){
            return 1;
        }
        return n * factorial(n-1);
    }
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 문제는 재귀함수를 사용&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;반복문을 통해서도 풀이할수 있지만 간결함을 위해 재귀함수 사용&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;주어지는 수 n이 0과 20사이이므로 main함수에서 if문으로 제한&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;재귀함수에서 n이 0이나 1이라면 0!과 1!은 1이므로 1을 리턴&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그 외의 숫자에 대해서는 지금까지 계산한 1부터 n-1까지의 곱((n-1)!)에 n을 곱함&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;n * factorial(n-1) 리턴후 main에서 출력&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;하지만 팩토리얼 특성상 수가 매우 커지기 때문에 리턴타입을 int가 아닌 long으로 해준다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;문제 4도 같은 방법으로 풀이&lt;/p&gt;
&lt;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;문제 5 : 분해합_2231&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1768246677094&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import java.util.Scanner;

public class DigitalNum_2231 {
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        int n = scan.nextInt();
        int result = 0;

        for(int i=1;i&amp;lt;n;i++){
            int n1 = i;//분해합을 저장할 숫자
            int n2 = 0;
            int n3 = i;
            while (n3 &amp;gt;0) {
                n2 = n3%10;//5-4-2
                n1 += n2;//245+5+4+2
                n3 /= 10;//245-24-2
            }
            if(n1== n){
                result = i;
                break;
            }
        }
            System.out.println(result);
    }
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;BruteForce방식으로 풀이하였다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;입력받을 변수로 n을 선언하고 출력할 결과 result를 선언한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;반복문으로 생성자가 될수 있는 1부터 n이하의 모든수를 검사&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;검사할 수 n1&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;각 자리수를 잠시 저장한 n2&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;각자리수를 구하기 위해 n1의 값을 복사해둘 n3&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;while문으로 각 자리의 수를 일의 자리수부터 구해 n2에 저장&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;n1+n2 로 분해합 계산 시작&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;반복문 동안 n2는 계속 갱신되어 각 자리수를 n1에 더함&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;가장 큰 자리수까지 10으로 나누면 n3는 0이 되어 반복문 종료&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;최종적으로 구한 분해합 n1이 주어진 값 n과 같다면 결과 result는 n이 된다.&lt;/p&gt;</description>
      <author>dwbh23</author>
      <guid isPermaLink="true">https://dwbh23.tistory.com/14</guid>
      <comments>https://dwbh23.tistory.com/14#entry14comment</comments>
      <pubDate>Tue, 13 Jan 2026 04:55:25 +0900</pubDate>
    </item>
  </channel>
</rss>