<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>라핀</title>
    <link>https://lapinism.tistory.com/</link>
    <description>la_apin 님의 블로그 입니다.</description>
    <language>ko</language>
    <pubDate>Sat, 18 Jul 2026 09:25:36 +0900</pubDate>
    <generator>TISTORY</generator>
    <ttl>100</ttl>
    <managingEditor>la_apin</managingEditor>
    <item>
      <title>2026 인하대학교 프로그래밍 경진대회 (IUPC) 출제 및 운영 후기</title>
      <link>https://lapinism.tistory.com/entry/iupc2026</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;20260523_132043.jpg&quot; data-origin-width=&quot;3340&quot; data-origin-height=&quot;2505&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/xupW3/dJMcafGKJ3m/REJDPGs6BmTIXXipD128Fk/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/xupW3/dJMcafGKJ3m/REJDPGs6BmTIXXipD128Fk/img.jpg&quot; data-alt=&quot;  by @plan_pt&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/xupW3/dJMcafGKJ3m/REJDPGs6BmTIXXipD128Fk/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FxupW3%2FdJMcafGKJ3m%2FREJDPGs6BmTIXXipD128Fk%2Fimg.jpg&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;3340&quot; height=&quot;2505&quot; data-filename=&quot;20260523_132043.jpg&quot; data-origin-width=&quot;3340&quot; data-origin-height=&quot;2505&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;  by @plan_pt&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://lapinism.tistory.com/entry/iupc2025&quot;&gt;IUPC 2025&lt;/a&gt;에서 우승하며... 더 이상 IUPC에 참가할 수 없게 되어버렸습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그러던 중 감사하게도 &lt;a href=&quot;https://solved.ac/profile/hjkim9911&quot;&gt;@Encore&lt;/a&gt; &lt;span style=&quot;background-color: #fafafa; color: #333333; text-align: start;&quot;&gt;님께서&lt;/span&gt; 올해 대회 운영 및 출제를 제안해 주셨고, 덕분에 IUPC 2026의 운영진으로 참가할 수 있었습니다. (감사합니다  )&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;운영진: &lt;a href=&quot;https://solved.ac/profile/la_apin&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;@나&lt;/a&gt; &lt;a href=&quot;https://solved.ac/profile/dongggle&quot;&gt;@dongggle&lt;/a&gt; &lt;a style=&quot;color: #0070d1; text-align: start;&quot; href=&quot;https://solved.ac/profile/hjkim9911&quot;&gt;@Encore&lt;/a&gt; &lt;a href=&quot;https://solved.ac/profile/wjdclgns12&quot;&gt;@wjdclgns12&lt;/a&gt; &lt;a href=&quot;https://solved.ac/profile/cmgjol010&quot;&gt;@cmgjol010&lt;/a&gt; &lt;a href=&quot;https://solved.ac/profile/plan_pt&quot;&gt;@plan_pt&lt;/a&gt; &lt;a href=&quot;https://solved.ac/profile/tnsod&quot;&gt;@tnsod&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;검수진: &lt;a href=&quot;https://solved.ac/profile/wapas&quot;&gt;@wapas&lt;/a&gt; &lt;a href=&quot;https://solved.ac/profile/dinojaemin&quot;&gt;@dinojaemin&lt;/a&gt; &lt;a href=&quot;https://solved.ac/profile/99asdfg&quot;&gt;@99asdfg&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;도움: &lt;a href=&quot;https://solved.ac/profile/wapas&quot;&gt;@wapas&lt;/a&gt; @최다빈&lt;/li&gt;
&lt;/ul&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;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;sNCYH0fZVO_0Cx5OhZk9tnwnrcD-10i-7opiU8PD_JlhvqH-OY0bicB8t_8_59awKCXksX8oLmrNB6BEp24wIYh7lttDA-SbDzVKmXLBvKgpzXsmbIFI3VqxB83W9V_b58ZwcxDZDHzs2AiGGIy8tQ.webp&quot; data-origin-width=&quot;1000&quot; data-origin-height=&quot;530&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/AmsNu/dJMcab5ojL0/yKfuVfPdLkf0chzSCPKLm1/img.webp&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/AmsNu/dJMcab5ojL0/yKfuVfPdLkf0chzSCPKLm1/img.webp&quot; data-alt=&quot;크아아악&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/AmsNu/dJMcab5ojL0/yKfuVfPdLkf0chzSCPKLm1/img.webp&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FAmsNu%2FdJMcab5ojL0%2FyKfuVfPdLkf0chzSCPKLm1%2Fimg.webp&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;1000&quot; height=&quot;530&quot; data-filename=&quot;sNCYH0fZVO_0Cx5OhZk9tnwnrcD-10i-7opiU8PD_JlhvqH-OY0bicB8t_8_59awKCXksX8oLmrNB6BEp24wIYh7lttDA-SbDzVKmXLBvKgpzXsmbIFI3VqxB83W9V_b58ZwcxDZDHzs2AiGGIy8tQ.webp&quot; data-origin-width=&quot;1000&quot; data-origin-height=&quot;530&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;크아아악&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;... 그렇습니다.&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;그렇다고 몇 개월 동안 준비해 온 대회를 없던 걸로 만들 수도 없고,&lt;br /&gt;어쩌면 올해 대회를 바라보며 수개월 전부터 준비해 왔을 참가자 분들에게도 말이 안 되는 이야기라 어떻게든 대회를 진행시켜야 했습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그렇게 여러 옵션을 두고 다양한 방법을 찾던 중...&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bL0zP4/dJMcagTbndt/1JFx7sqNPdgIJfz7814MPK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bL0zP4/dJMcagTbndt/1JFx7sqNPdgIJfz7814MPK/img.png&quot; data-is-animation=&quot;false&quot; data-origin-width=&quot;714&quot; data-origin-height=&quot;225&quot; data-filename=&quot;image.png&quot; style=&quot;width: 52.5343%; margin-right: 10px;&quot; data-widthpercent=&quot;53.15&quot; id=&quot;kEditorPhotosEditingImage-2&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bL0zP4/dJMcagTbndt/1JFx7sqNPdgIJfz7814MPK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbL0zP4%2FdJMcagTbndt%2F1JFx7sqNPdgIJfz7814MPK%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;714&quot; height=&quot;225&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/c20I7G/dJMcabYEAdL/wLILQwDKa5TN8K7XkUiJC1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/c20I7G/dJMcabYEAdL/wLILQwDKa5TN8K7XkUiJC1/img.png&quot; data-is-animation=&quot;false&quot; data-origin-width=&quot;909&quot; data-origin-height=&quot;325&quot; data-filename=&quot;image1.png&quot; style=&quot;width: 46.3029%;&quot; data-widthpercent=&quot;46.85&quot; id=&quot;kEditorPhotosEditingImage-3&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/c20I7G/dJMcabYEAdL/wLILQwDKa5TN8K7XkUiJC1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fc20I7G%2FdJMcabYEAdL%2FwLILQwDKa5TN8K7XkUiJC1%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;909&quot; height=&quot;325&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
  &lt;figcaption&gt;:blobaww:&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://solved.ac/profile/dongggle&quot;&gt;@dongggle&lt;/a&gt; &lt;span style=&quot;background-color: #fafafa; color: #333333; text-align: start;&quot;&gt;님께서&lt;/span&gt; 교내 대회인 i-PAC을 담당해 주시는 교수님께 도움을 받을 수 있는지 연락을 드리게 되었고,&lt;br /&gt;연구실에서 흔쾌히 남는 서버를 지원해 주셨습니다...!&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;심지어 서버는 이미 DOMjudge 환경이 전부 준비되어 있는 상태였고,&lt;br /&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;br /&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;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;인생 첫 출제로 참여하며 다양한 아이디어를 제안드렸고, 감사히도 그중 하나가 채택되어 &lt;a href=&quot;https://project-ps.com/problem/509&quot;&gt;I번&lt;/a&gt;을 출제하게 되었습니다!&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아래는 각 문제별 후기입니다.&lt;br /&gt;&lt;span style=&quot;color: #222222; text-align: start;&quot;&gt;일부 문제의 스포일러가 포함되어 있습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://project-ps.com/problem/501&quot;&gt;A. 5그와트&lt;/a&gt;&lt;/p&gt;
&lt;div data-ke-type=&quot;moreLess&quot; data-text-more=&quot;더보기&quot; data-text-less=&quot;닫기&quot;&gt;&lt;a class=&quot;btn-toggle-moreless&quot;&gt;더보기&lt;/a&gt;
&lt;div class=&quot;moreless-content&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://solved.ac/profile/cmgjol010&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;@cmgjol010&lt;/a&gt;&amp;nbsp;님께서 출제해 주셨습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;분명 학교를 다닌 지가 N년 째인데도, 여전히 5호관 계단은 혼란스럽습니다.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://project-ps.com/problem/502&quot;&gt;B. 흑흑요리사&lt;/a&gt;&lt;/p&gt;
&lt;div data-ke-type=&quot;moreLess&quot; data-text-more=&quot;더보기&quot; data-text-less=&quot;닫기&quot;&gt;&lt;a class=&quot;btn-toggle-moreless&quot;&gt;더보기&lt;/a&gt;
&lt;div class=&quot;moreless-content&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://solved.ac/profile/dongggle&quot;&gt;@dongggle&lt;/a&gt; 님께서 출제해 주셨습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;B의 상한이 100 임을 관찰하여 완전탐색을 하는 문제입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;완전탐색 대신 결정론적인 식으로 접근하며 틀리는 분들이 조금 있어 약간 안타까웠습니다...&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://project-ps.com/problem/503&quot;&gt;C. BLACK or WHITE?&lt;/a&gt;&lt;/p&gt;
&lt;div data-ke-type=&quot;moreLess&quot; data-text-more=&quot;더보기&quot; data-text-less=&quot;닫기&quot;&gt;&lt;a class=&quot;btn-toggle-moreless&quot;&gt;더보기&lt;/a&gt;
&lt;div class=&quot;moreless-content&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://solved.ac/profile/wjdclgns12&quot;&gt;@wjdclgns12&lt;/a&gt; &lt;span style=&quot;background-color: #fafafa; color: #333333; 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: #fafafa; color: #333333; 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: #fafafa; color: #333333; 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: #fafafa; color: #333333; text-align: start;&quot;&gt;하지만 이 풀이도 결국 경우의 수를 나눠 얻는 결론과 동치가 되지만, 이러한 관찰도 조금은 도움이 되지 않을까 싶어 짧게 소개해봅니다.&lt;/span&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://project-ps.com/problem/504&quot;&gt;D. 도망치는 기계오리&lt;/a&gt;&lt;/p&gt;
&lt;div data-ke-type=&quot;moreLess&quot; data-text-more=&quot;더보기&quot; data-text-less=&quot;닫기&quot;&gt;&lt;a class=&quot;btn-toggle-moreless&quot;&gt;더보기&lt;/a&gt;
&lt;div class=&quot;moreless-content&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://solved.ac/profile/plan_pt&quot;&gt;@plan_pt&lt;/a&gt; &lt;span style=&quot;background-color: #fafafa; color: #333333; text-align: start;&quot;&gt;님께서&lt;/span&gt;&amp;nbsp;출제해 주셨습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;문제를 보고 무조건 bitmask DP라고만 생각했는데, 검수 과정에서 bitmask BFS 풀이를 보며 아직 배울게 한참 남았다는 걸 배운 문제입니다.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://project-ps.com/problem/505&quot;&gt;E. IUPC 찾기&lt;/a&gt;&lt;/p&gt;
&lt;div data-ke-type=&quot;moreLess&quot; data-text-more=&quot;더보기&quot; data-text-less=&quot;닫기&quot;&gt;&lt;a class=&quot;btn-toggle-moreless&quot;&gt;더보기&lt;/a&gt;
&lt;div class=&quot;moreless-content&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://solved.ac/profile/cmgjol010&quot;&gt;@cmgjol010&lt;/a&gt; &lt;span style=&quot;background-color: #fafafa; color: #333333; text-align: start;&quot;&gt;님께서&lt;/span&gt; &lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;&lt;span&gt;&lt;span style=&quot;background-color: #fafafa; color: #333333; text-align: start;&quot;&gt; 출제해 주셨습니다.&lt;/span&gt; &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;&lt;span&gt;&lt;span style=&quot;background-color: #fafafa; color: #333333; text-align: start;&quot;&gt;PS 입문자분들께 &quot;격자를 실제로 만들지 않고 어떻게 판별할 것인가&quot;를 물어보는 상당히 교육적인 문제라고 생각합니다.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://project-ps.com/problem/506&quot;&gt;F. CTP 경로&lt;/a&gt;&lt;/p&gt;
&lt;div data-ke-type=&quot;moreLess&quot; data-text-more=&quot;더보기&quot; data-text-less=&quot;닫기&quot;&gt;&lt;a class=&quot;btn-toggle-moreless&quot;&gt;더보기&lt;/a&gt;
&lt;div class=&quot;moreless-content&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://solved.ac/profile/dongggle&quot;&gt;@dongggle&lt;/a&gt; &lt;span style=&quot;background-color: #fafafa; color: #333333; text-align: start;&quot;&gt;님께서&lt;/span&gt; 출제해 주셨습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 셋의 최종보스를 담당하고 있는 F번입니다.&lt;br /&gt;&lt;a href=&quot;https://www.acmicpc.net/problem/23089&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;IUPC 2021 J번&lt;/a&gt;에 보내는 답장 같은 문제라고 느껴졌습니다. 대신 이번에는 무자비하게 강화된...&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;/div&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://project-ps.com/problem/507&quot;&gt;G. 삼각형 만들기&lt;/a&gt;&lt;/p&gt;
&lt;div data-ke-type=&quot;moreLess&quot; data-text-more=&quot;더보기&quot; data-text-less=&quot;닫기&quot;&gt;&lt;a class=&quot;btn-toggle-moreless&quot;&gt;더보기&lt;/a&gt;
&lt;div class=&quot;moreless-content&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://solved.ac/profile/dongggle&quot;&gt;@dongggle&lt;/a&gt; &lt;span style=&quot;background-color: #fafafa; color: #333333; text-align: start;&quot;&gt;님께서&lt;/span&gt; 출제해 주셨습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;처음에 이 문제를 건의하실 때 제시해 주신 풀이가 사실 그리디(!)였습니다.&lt;br /&gt;그러다 약간의 관찰이 가미된 DP 풀이가 발견되어 그게 정해가 되었습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;DP에 필요한 상태 공간의 크기를 보이는 부분이 너무 우아했던 기억이 납니다.&lt;br /&gt;그리고 전 여전히 그리디 풀이가 왜 성립하는지 이해하지 못했습니다...&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://project-ps.com/problem/508&quot;&gt;H. 점프덕&lt;/a&gt;&lt;/p&gt;
&lt;div data-ke-type=&quot;moreLess&quot; data-text-more=&quot;더보기&quot; data-text-less=&quot;닫기&quot;&gt;&lt;a class=&quot;btn-toggle-moreless&quot;&gt;더보기&lt;/a&gt;
&lt;div class=&quot;moreless-content&quot;&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://solved.ac/profile/cmgjol010&quot;&gt;@cmgjol010&lt;/a&gt; &lt;span style=&quot;background-color: #fafafa; color: #333333; text-align: start;&quot;&gt;님께서&lt;/span&gt; &lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;&lt;span&gt;&lt;span style=&quot;background-color: #fafafa; color: #333333; text-align: start;&quot;&gt; 출제해 주셨습니다.&lt;/span&gt;&lt;/span&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;color: #333333; text-align: start;&quot;&gt;&lt;span&gt;&lt;span style=&quot;background-color: #fafafa; color: #333333; text-align: start;&quot;&gt;저는 많이 어려웠었습니다.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;특수한 그래프의 Min cut을 찾는 문제였는데, 그래프 특성상 어떤 그리디? 애드훅? 이 성립해서 그걸 증명, 구현하는 문제였습니다.&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;이렇게 구성하는 게 최적이다 감을 잡아나가는 시작점도 찾기 어렵고, 그 증명은 한 단계 더 어려웠었습니다...&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;아니 이거 진짜 플래가 맞는데&lt;/p&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;461&quot; data-origin-height=&quot;122&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/KBOpA/dJMcabj4scZ/Cje1gOOKMMZxV5o54c3bTk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/KBOpA/dJMcabj4scZ/Cje1gOOKMMZxV5o54c3bTk/img.png&quot; data-alt=&quot;:blobfearful:&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/KBOpA/dJMcabj4scZ/Cje1gOOKMMZxV5o54c3bTk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FKBOpA%2FdJMcabj4scZ%2FCje1gOOKMMZxV5o54c3bTk%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;461&quot; height=&quot;122&quot; data-origin-width=&quot;461&quot; data-origin-height=&quot;122&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;:blobfearful:&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://project-ps.com/problem/509&quot;&gt;I. max를 아끼는 법&lt;/a&gt;&lt;/p&gt;
&lt;div data-ke-type=&quot;moreLess&quot; data-text-more=&quot;더보기&quot; data-text-less=&quot;닫기&quot;&gt;&lt;a class=&quot;btn-toggle-moreless&quot;&gt;더보기&lt;/a&gt;
&lt;div class=&quot;moreless-content&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;제가 출제했습니다!&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://usaco.org/index.php?page=viewproblem2&amp;amp;cpid=1472&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;USACO 2025 January Silver 3번&lt;/a&gt;을 변형해 보다가 만들어진 문제입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;맨 처음에는 임의의 행렬이 있을 때, 행 또는 열에 max를 써서 무언가 만들 수 있는지 판별하는 문제를 생각해 봤으나...&lt;br /&gt;뭔가 좀 어려워지는 것 같아 행렬 대신 배열로 완화하게 되어 탄생하게 되었습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;초안은 A에서 B를 만들 수 있음이 항상 보장되는 문제였으나,&lt;br /&gt;&lt;a href=&quot;https://solved.ac/profile/wjdclgns12&quot;&gt;@wjdclgns12&lt;/a&gt; 님께서 불가능한 경우도 추가하자는 의견을 주셔서 지금의 모습을 가지게 되었습니다. (감사합니다)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아쉬운 점이라면... 검수 과정에서 &lt;a href=&quot;https://codeforces.com/contest/1904/problem/D1&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;거의 똑같은 문제&lt;/a&gt;가 발견되어 세상엔 정말 다양한 문제가 있구나 생각해 보게 되었습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;제 문제에 제출해 주신 모든 분들께 감사드립니다!&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://project-ps.com/problem/510&quot;&gt;J. 기억을 잃는 스택&lt;/a&gt;&lt;/p&gt;
&lt;div data-ke-type=&quot;moreLess&quot; data-text-more=&quot;더보기&quot; data-text-less=&quot;닫기&quot;&gt;&lt;a class=&quot;btn-toggle-moreless&quot;&gt;더보기&lt;/a&gt;
&lt;div class=&quot;moreless-content&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://solved.ac/profile/wjdclgns12&quot;&gt;@wjdclgns12&lt;/a&gt; &lt;span style=&quot;background-color: #fafafa; color: #333333; text-align: start;&quot;&gt;님께서&lt;/span&gt; &lt;span style=&quot;background-color: #fafafa; color: #333333; text-align: start;&quot;&gt; 출제해 주셨습니다.&lt;/span&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;/div&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://project-ps.com/problem/511&quot;&gt;K. 미생물&lt;/a&gt;&lt;/p&gt;
&lt;div data-ke-type=&quot;moreLess&quot; data-text-more=&quot;더보기&quot; data-text-less=&quot;닫기&quot;&gt;&lt;a class=&quot;btn-toggle-moreless&quot;&gt;더보기&lt;/a&gt;
&lt;div class=&quot;moreless-content&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a style=&quot;color: #0070d1; text-align: start;&quot; href=&quot;https://solved.ac/profile/hjkim9911&quot;&gt;@Encore&lt;/a&gt; &lt;span style=&quot;background-color: #fafafa; color: #333333; text-align: start;&quot;&gt;님께서&lt;/span&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;위치상 E, J번을 잇는 실버 정도의 문제였으나, 아무도 제출해주시지 않으셨습니다.&lt;br /&gt;지문이 무섭게 생기기도 했고, 얼핏 보면 기하문제구나 싶어서 다들 건너뛰고 다른 걸 잡으신 게 아닐까 싶은...&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;일정을 마치고 뒤늦게 돌아온 출자제분&lt;span style=&quot;background-color: #fafafa; color: #333333; 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: #fafafa; color: #333333; text-align: start;&quot;&gt;기하 혐오를 멈춰주세요 여러분...&lt;/span&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://project-ps.com/problem/512&quot;&gt;L. Artificial Ascent&lt;/a&gt;&lt;/p&gt;
&lt;div data-ke-type=&quot;moreLess&quot; data-text-more=&quot;더보기&quot; data-text-less=&quot;닫기&quot;&gt;&lt;a class=&quot;btn-toggle-moreless&quot;&gt;더보기&lt;/a&gt;
&lt;div class=&quot;moreless-content&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a style=&quot;color: #0070d1; text-align: start;&quot; href=&quot;https://solved.ac/profile/hjkim9911&quot;&gt;@Encore&lt;/a&gt; &lt;span style=&quot;background-color: #fafafa; color: #333333; text-align: start;&quot;&gt;님께서&lt;/span&gt; &lt;span style=&quot;background-color: #fafafa; color: #333333; text-align: start;&quot;&gt; 출제해 주셨습니다.&lt;/span&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;사실 L번이 좀 늦게 풀리겠다 예상했었는데... 생각보다 빨리 해결해 주셔서 놀랐던 기억이 납니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;케이스워크 연습하기에 최적의 문제라고 생각합니다!&lt;/p&gt;
&lt;/div&gt;
&lt;/div&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;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;작년 대회를 참가할 때만 해도 운영해 주시는 분들이 많이 고생해주셨겠구나 싶었지만...&lt;br /&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;실제로&lt;span&gt; &lt;/span&gt;&lt;/span&gt;운영진분들이 들이는 노력은 상상 이상이었습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;단 하루 5시간의 대회를 위해 수개월 전부터 문제를 준비하고, 장소를 준비하고,&lt;br /&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;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&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;1206&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/d1z0F0/dJMcafmtzDC/vK8Ep8j4MKbkPoEprWAvy1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/d1z0F0/dJMcafmtzDC/vK8Ep8j4MKbkPoEprWAvy1/img.png&quot; data-alt=&quot;끗&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/d1z0F0/dJMcafmtzDC/vK8Ep8j4MKbkPoEprWAvy1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fd1z0F0%2FdJMcafmtzDC%2FvK8Ep8j4MKbkPoEprWAvy1%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;1206&quot; data-origin-width=&quot;1258&quot; data-origin-height=&quot;1206&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;끗&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;IUPC 2026에 참가해 주신 분들, 도움을 주신 분들 모두에게 감사드립니다!&lt;/p&gt;</description>
      <category>PS/후기</category>
      <author>la_apin</author>
      <guid isPermaLink="true">https://lapinism.tistory.com/7</guid>
      <comments>https://lapinism.tistory.com/entry/iupc2026#entry7comment</comments>
      <pubDate>Wed, 27 May 2026 14:45:51 +0900</pubDate>
    </item>
    <item>
      <title>2025 경인지역 대학 연합 프로그래밍 경시대회 (shake!) 참가 후기</title>
      <link>https://lapinism.tistory.com/entry/shake2025</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;KakaoTalk_20260117_164431114_04.jpg&quot; data-origin-width=&quot;750&quot; data-origin-height=&quot;998&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ub0Sp/dJMcagRNrzJ/MXIkwlSGuebMSycqeuqsE0/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ub0Sp/dJMcagRNrzJ/MXIkwlSGuebMSycqeuqsE0/img.jpg&quot; data-alt=&quot;사진을 찍어준 @ccmuk58 형에게 무한한 감사를...  &quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ub0Sp/dJMcagRNrzJ/MXIkwlSGuebMSycqeuqsE0/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fub0Sp%2FdJMcagRNrzJ%2FMXIkwlSGuebMSycqeuqsE0%2Fimg.jpg&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;469&quot; height=&quot;624&quot; data-filename=&quot;KakaoTalk_20260117_164431114_04.jpg&quot; data-origin-width=&quot;750&quot; data-origin-height=&quot;998&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;사진을 찍어준 @ccmuk58 형에게 무한한 감사를...  &lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;지난 &lt;a href=&quot;https://lapinism.tistory.com/entry/iupc2025&quot;&gt;IUPC 2025&lt;/a&gt;의 결과로 shake! 에 다녀왔습니다.&lt;br /&gt;결과는 장려상으로, 수상 가능한 인원 9명 중 9등으로 겨우 수상에 성공했습니다.&lt;br /&gt;스코어보드 공개 전까지만 해도 그냥 망했다는 생각뿐이었는데... 수상이 나름의 위안이 되었습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;원래 실력은 이게 아닌데, 더 잘할 수 있는데, 싶었지만&lt;br /&gt;스코어보드가 공개되고, 대회가 끝나고 생각하니 그저 실력대로 나왔다는 생각뿐입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;지난 대회 때의 약점이 그대로 다시 드러난 것 같습니다.&lt;br /&gt;오프라인 대회에서 한 문제를 잡아 길고 깊게 파고들지 않고,&lt;br /&gt;설령 한다 해도 연습할 때 보다 시야가 좁아져서 같은 내용만 반복하여 생각하는 건 문제가 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;어려운 문제를 길게 생각하며 관찰로 풀어내는 경험,&lt;br /&gt;그리고 그런 관찰에 사용되는 도구와 지식들이 부족했었고, 한동안은 이런 약점 보완에 집중하려 합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;비록 높은 순위는 아닐지 모르지만,&lt;br /&gt;앞으로의 공부 방향이 잡혔으니 수상보다 더 값진 건 이게 아닐까? 싶습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아래는 대회 타임라인입니다.&lt;br /&gt;일부 문제의 스포일러가 포함되어 있습니다.&lt;/p&gt;
&lt;div data-ke-type=&quot;moreLess&quot; data-text-more=&quot;더보기&quot; data-text-less=&quot;닫기&quot;&gt;&lt;a class=&quot;btn-toggle-moreless&quot;&gt;더보기&lt;/a&gt;
&lt;div class=&quot;moreless-content&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;~0:07 A&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #009874;&quot;&gt;(+)&lt;br /&gt;&lt;/span&gt;&lt;/b&gt;문제를 다 읽지도 않고 손부터 움직여서... 틀린 인덱스를 출력한다고 생각해 시간을 많이 썼습니다.&lt;br /&gt;'그러면 스페셜 저지가 아닌가' 싶다가 그냥 틀린 숫자만 출력하는 걸 알고 AC를 받았습니다.&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;b&gt;~0:14 B&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #009874;&quot;&gt;(+)&lt;/span&gt;&lt;/b&gt; &lt;br /&gt;연습 때 &lt;a href=&quot;https://www.acmicpc.net/problem/17301&quot;&gt;이 문제&lt;/a&gt;를 풀지 않았더라면 못 풀었을 것 같습니다.&lt;br /&gt;덕분에 여집합을 보는 아이디어가 바로 떠올라서 AC를 받았습니다.&lt;br /&gt;(오버플로 걱정에 구현 중 언어가 2번 바뀌었습니다...)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;~0:30 D&lt;/b&gt; &lt;br /&gt;남은 문제는 난이도 순서가 무작위라, 맨 처음 문제부터 순서대로 읽기로 했습니다.&lt;br /&gt;그중 D가 1부터 x까지 XOR 결과의 규칙성을 가지고 푸는 문제인 것 같아서 조금 건드리다가,&lt;br /&gt;경우의 수가 너무 많아져버려서 일단 넘어갔습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;~0:54 G&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #dd4124;&quot;&gt;(-1)&lt;br /&gt;&lt;/span&gt;&lt;/b&gt; &lt;b&gt;~1:20 G&amp;nbsp;&lt;span style=&quot;color: #dd4124;&quot;&gt;(-2)&lt;br /&gt;&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;caret-color: auto; letter-spacing: 0px;&quot;&gt;G를 읽고 이건가? 싶어 짠 풀이가 2번이나 WA를 받습니다.&lt;br /&gt;사실 문제를 잘못 읽었습니다.&lt;br /&gt;&quot;어떤 두 개의 간선을 제거해도 항상 2개 이상의 컴포넌트로 나뉘는지 판별하라&quot;는 문제를&lt;br /&gt;&quot;어떤 두 개의 간선을 제거해서 2개 이상의 컴포넌트로 나눌 수 있는지 판별하라&quot;는 문제로 이해했습니다.&lt;br /&gt;이걸 전혀 알아채지 못한 채 흔들리기 시작했고, 문제를 잘못 읽었다는 사실은 너무 늦게 깨닫게 됩니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;~1:34 J &lt;span&gt;&lt;span style=&quot;color: #009874;&quot;&gt;(+2)&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b&gt;&lt;span style=&quot;color: #dd4124;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;background-color: #fafafa; color: #333333; text-align: start;&quot;&gt;J는 읽자마자 DP다 싶어서 이해한 대로 바로 짰습니다.&lt;br /&gt;T의 십진수 문자열에 대응되는 S의 부분문자열이 범위를 넘어가면 멈추는 예외 처리가 필요했는데, 그게 빠져서 두 번 정도 틀렸습니다.&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;~1:50 E &lt;span style=&quot;color: #dd4124;&quot;&gt;(-1)&lt;br /&gt;&lt;/span&gt;~2:38 G &lt;span style=&quot;color: #dd4124;&quot;&gt;(-3)&lt;/span&gt;&lt;/b&gt;&lt;b&gt;&lt;span style=&quot;color: #dd4124;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;background-color: #fafafa; color: #333333; text-align: start;&quot;&gt;그리고 J 이후로 쭉 말리게 됩니다.&lt;br /&gt;E가 어쩌면 쉬운 문제가 아닐까? 싶어 제출한 코드는 아니라는 걸 알려주었고,&lt;br /&gt;G에서 내가 구현 실수를 한 게 아닐까? 싶어 처음부터 다시 짠 코드는 어딘가 또 틀린 건지 WA를 받아옵니다.&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;~2:44 G&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span&gt;&lt;span style=&quot;color: #009874;&quot;&gt;(+3)&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;background-color: #fafafa; color: #333333; text-align: start;&quot;&gt;이 때 문제를 다시 읽었던 이유는 모르겠습니다.&lt;br /&gt;맞아야 할 문제를 틀리면 문제를 다시 꼼꼼히 읽는 습관이 생겼는지 G를 다시 읽었고, 대회 시작 2시간 반 만에 문제를 잘못 이해하고 있던 걸 깨달았습니다.&lt;br /&gt;결국엔 맞췄다는 어떤 안도감보다 2시간 반 동안 문제를 잘못 이해하고 있었다는 그 사실이 너무 아팠습니다.&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #fafafa; color: #333333; text-align: start;&quot;&gt; &lt;b&gt;~3:00&lt;/b&gt;&lt;br /&gt;그리고 스코어보드가 프리즈 되었습니다.&lt;br /&gt;수상권 바깥인 4솔 하위권인 데다 연이은 실수에 마음이 크게 흔들리고 있었고,&lt;br /&gt;목표였던 수상도 불가능할 것 같다는 불안감이 닥치기 시작했습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #fafafa; color: #333333; text-align: start;&quot;&gt;그렇게 나온 결론은 페널티를 감수하고서라도 솔브 수로 밀어야 한다는 생각이었습니다.&lt;br /&gt;남은 문제 중 해볼 만한 문제는 D, E, H였고, 그중 정답에 가장 가까웠던 D를 잡았습니다.&lt;/span&gt;&lt;span style=&quot;background-color: #fafafa; color: #333333; text-align: start;&quot;&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;~3:18 D&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #dd4124;&quot;&gt;(-1)&lt;/span&gt;&lt;/b&gt;&lt;b&gt;&lt;span style=&quot;color: #dd4124;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;background-color: #fafafa; color: #333333; text-align: start;&quot;&gt;복잡한 경우의 수를 다 나누고 계산해 봐서 제출한 코드가 WA를 받습니다.&lt;br /&gt;근데 이게 대체 어디서 틀린 건지 몰랐고, 그제야 나이브를 짜봐야겠다는 생각이 들었습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #fafafa; color: #333333; text-align: start;&quot;&gt; &lt;b&gt;~3:42 D&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #dd4124;&quot;&gt;(-2)&lt;/span&gt;&lt;/b&gt; &lt;br /&gt;&lt;b&gt;~3:47 D&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #dd4124;&quot;&gt;(-3)&lt;br /&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;b&gt;~3:49 D&amp;nbsp;&lt;span style=&quot;color: #dd4124;&quot;&gt;(-4)&lt;br /&gt;&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;background-color: #fafafa; color: #333333; text-align: start;&quot;&gt;나이브로 나오는 반례마다 예외처리하고, 비교하는 과정을 반복하다 보니 문득 그런 생각이 들었습니다.&lt;br /&gt;&quot;그냥 나이브로 뽑고 거기서 규칙성을 찾으면 되지 않을까?&quot;란 생각이었습니다.&lt;br /&gt;지금 생각하면 너무 당연한 건데도, 그걸 떠올리는 게 너무 늦었습니다.&lt;br /&gt;그 생각이 든 게 17시 55분, 사전에 대회 종료로 인지하고 있던 시간인 18시가 되기 5분 전이었습니다.&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt; ~3:53 D &lt;span&gt;&lt;span style=&quot;color: #009874;&quot;&gt;(+4)&lt;/span&gt;&lt;/span&gt;&lt;/b&gt; &lt;br /&gt;사실 그때 대회가 10분 미뤄졌다는 걸 까먹고 있었습니다.&lt;br /&gt;18시가 되고 망했다며 새로고침만 누르고 있었을 때, 10분이 더 있다는 걸 그제야 깨달았습니다.&lt;br /&gt;다행히 대회 종료 전 D에서 AC를 받아 5솔로 대회를 마무리하게 되었습니다.&lt;/p&gt;
&lt;/div&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&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;KakaoTalk_20260117_200836893.jpg&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1554&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/MIZz6/dJMcaacYEFw/aTRWS2afXgODMOkxLbGIC1/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/MIZz6/dJMcaacYEFw/aTRWS2afXgODMOkxLbGIC1/img.jpg&quot; data-alt=&quot;끗&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/MIZz6/dJMcaacYEFw/aTRWS2afXgODMOkxLbGIC1/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FMIZz6%2FdJMcaacYEFw%2FaTRWS2afXgODMOkxLbGIC1%2Fimg.jpg&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;371&quot; height=&quot;534&quot; data-filename=&quot;KakaoTalk_20260117_200836893.jpg&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1554&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;끗&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;멋진 대회 준비해주신 모든 운영진분과 관계자 분들께 감사드립니다!&lt;/p&gt;</description>
      <category>PS/후기</category>
      <author>la_apin</author>
      <guid isPermaLink="true">https://lapinism.tistory.com/6</guid>
      <comments>https://lapinism.tistory.com/entry/shake2025#entry6comment</comments>
      <pubDate>Sat, 17 Jan 2026 19:18:22 +0900</pubDate>
    </item>
    <item>
      <title>10월 회고</title>
      <link>https://lapinism.tistory.com/entry/2025-10</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;이번 학기에 적지 않은 일이 일어나는 것 같습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;동아리에서 웹 개발을 배워보고 있고, 중간고사도 있었고, 대회도 같은 날에 있었고...&lt;br /&gt;바쁜 10월이라고 주장하고 싶지만, 저보다 더 치열하게 사는 분들이 많아 더 열심히 굴러야겠다는 생각뿐이네요.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;11월이 다 지나가 버리기 전에 그동안의 기록이라도 남기려 합니다.&lt;br /&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;2025 Centroid Cup (09/27)&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock widthContent&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;1810&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/6RlQz/dJMcajN3OiP/xCxXsoeVRITAjtyGEp9V5k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/6RlQz/dJMcajN3OiP/xCxXsoeVRITAjtyGEp9V5k/img.png&quot; data-alt=&quot;출처: https://mmzz.tistory.com/29&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/6RlQz/dJMcajN3OiP/xCxXsoeVRITAjtyGEp9V5k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F6RlQz%2FdJMcajN3OiP%2FxCxXsoeVRITAjtyGEp9V5k%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;1280&quot; height=&quot;1810&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;1810&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;출처: https://mmzz.tistory.com/29&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://www.acmicpc.net/contest/view/1555&quot;&gt;2025 Centroid Cup&lt;/a&gt;에 팀 힐끔힐끔보지마세요어차피정답코드아님(with &lt;a href=&quot;https://www.acmicpc.net/user/la_apin&quot;&gt;@나&lt;/a&gt;, &lt;a href=&quot;https://www.acmicpc.net/user/ccmuk58&quot;&gt;@ccmuk58&lt;/a&gt;, &lt;a href=&quot;https://www.acmicpc.net/user/lsj5657&quot;&gt;@lsj5657&lt;/a&gt;)으로 참가했습니다.&lt;br /&gt;10월 회고에 웬 9월 대회냐 싶지만... 9월 말이니깐 10월 초라 해도 되지 않을까? 란 생각입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;팀은 &lt;a href=&quot;https://www.acmicpc.net/user/ccmuk58&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;@ccmuk58&lt;/a&gt; 형이 먼저 연락을 줘서 팀 막내로 합류하게 되었습니다.&lt;br /&gt;결과는 전체 9등, 인하대학교 참가 팀 중에서는 1등으로 마무리 했습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;여담으로 &lt;a href=&quot;https://www.acmicpc.net/user/lsj5657&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;@lsj5657&lt;/a&gt; 형이 2024 IUPC 우승하고 도망(?)쳐 나오고, 저는 2025 IUPC 우승하고 도망쳐 나온 전적이 있다 보니 탈주닌자 클랜이라는 별명도 생겼습니다.&lt;br /&gt;그러다 보니 현장에서 만난 운영진 분이 절 보자마자 한 이야기가 &quot;라핀님 왜 도망가셨어요...&quot;(실제로 한 말)&lt;br /&gt;내년에 기회가 된다면 꼭 도와드릴게요...&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;평소 연습할 때나, 저번 IUPC때 보다 제 기량을 다 발휘하지 못한 것 같아 팀원 형들에게 아쉬움과 미안함만 남네요...&lt;br /&gt;4개 대학 연합 대회라 분명 운영도 힘들고 수상도 힘들겠지만 내년에도 또 열린다면? 이란 기대는 품어보고 싶습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;+) 팀원 &lt;a href=&quot;https://www.acmicpc.net/user/ccmuk58&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;@ccmuk58&lt;/a&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;형의 &lt;a href=&quot;https://nakuri.tistory.com/108&quot;&gt;2025 Centroid Cup 참가 후기&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;NYPC &amp;lt;CODE BATTLE/&amp;gt; (08/08 ~ 08/18, 10/25)&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock widthContent&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;600&quot; data-origin-height=&quot;450&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/rkJfc/dJMcafEZqTI/ok31UeKGzpycdK8ES8UkP0/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/rkJfc/dJMcafEZqTI/ok31UeKGzpycdK8ES8UkP0/img.jpg&quot; data-alt=&quot;출처: https://www.gamevu.co.kr/news/articleView.html?idxno=52691&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/rkJfc/dJMcafEZqTI/ok31UeKGzpycdK8ES8UkP0/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FrkJfc%2FdJMcafEZqTI%2Fok31UeKGzpycdK8ES8UkP0%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;600&quot; height=&quot;450&quot; data-origin-width=&quot;600&quot; data-origin-height=&quot;450&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;출처: https://www.gamevu.co.kr/news/articleView.html?idxno=52691&lt;/figcaption&gt;
&lt;/figure&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;팀 라라제발상향좀 (with &lt;a style=&quot;color: #0070d1; text-align: start;&quot; href=&quot;https://www.acmicpc.net/user/la_apin&quot;&gt;@나&lt;/a&gt;, &lt;a href=&quot;https://www.acmicpc.net/user/dongggle&quot;&gt;@dongggle&lt;/a&gt;, &lt;a href=&quot;https://www.acmicpc.net/user/kcits970&quot;&gt;@kcits970&lt;/a&gt;, &lt;a href=&quot;https://www.acmicpc.net/user/lpchaze&quot;&gt;@lpchaze&lt;/a&gt;), 팀 번호 1182로 참가해 파이널 라운드에 다녀왔습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;하필 이날 아침에 전공 시험이 있어서...&lt;br /&gt;시험을 끝내고 최대한 빠르게 이동했는데도 대회 시작 후 2시간이 지나고 도착했던게 너무 아쉬웠습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;괜찮은 성적으로 파이널 라운드에 진출했던지라 어쩌면? 이란 기대를 품고 시작했지만...&lt;br /&gt;제 부족함일까, 하늘은 너무 높았었습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2시간이 더 있었더라면? 같은 가정을 종종 해보곤 하지만 최근들어 계속 제 부족함을 충분히 느꼈기에,&lt;br /&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;...근데 어쩌다 보니 팀원 4명을 이번 shake!때 다시 또 만날 예정이라 ㅋㅋ&lt;br /&gt;그때 봐요!&lt;/p&gt;</description>
      <category>일상</category>
      <author>la_apin</author>
      <guid isPermaLink="true">https://lapinism.tistory.com/5</guid>
      <comments>https://lapinism.tistory.com/entry/2025-10#entry5comment</comments>
      <pubDate>Fri, 28 Nov 2025 10:30:23 +0900</pubDate>
    </item>
    <item>
      <title>PS에서 쓰는 포함배제의 원리</title>
      <link>https://lapinism.tistory.com/entry/inclusion-and-exclusion</link>
      <description>&lt;script src=&quot;https://cdn.jsdelivr.net/npm/mathjax@4/tex-mml-chtml.js&quot;&gt;&lt;/script&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;a style=&quot;color: #ee2323;&quot; href=&quot;https://www.acmicpc.net/problem/16565&quot;&gt;백준 16565번: N포커&lt;/a&gt;, &lt;a style=&quot;color: #ee2323;&quot; href=&quot;https://atcoder.jp/contests/abc423/tasks/abc423_f&quot;&gt;ABC423 F - Loud Cicada&lt;/a&gt;의 스포일러를 포함하고 있습니다.&lt;/span&gt;&lt;br /&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이번 ABC423를 통해 &quot;포함배제의 원리&quot;를 전혀 이해하지 못하고 있다는 걸 알게 되어서... 개념을 정리할 겸 다른 사람에게도 도움이 되길 바라는 마음에서 글로 정리해 보게 되었습니다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;포함배제의 원리&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;포함배제의 원리는 &quot;&lt;b&gt;합집합&lt;/b&gt;의 &lt;b&gt;원소의 개수&lt;/b&gt;&quot;를 구하는 방법입니다. 가끔 어떤 개수를 구할 때 무언갈 반복해서 더하고 빼는 게 포함배제의 원리를 쓰는 풀이라고 소개하는 문제들이 있지만, 일단 포함배제의 원리는 &quot;&lt;b&gt;합집합&lt;/b&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;의&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;원소의 개수&lt;/b&gt;&quot;를 구하는 방법입니다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;\[\left|\bigcup_{k=1}^{n} A_k\right| = \sum_{ 1 \leq i \leq n } |A_i| - \sum_{1 \leq i &amp;lt; j \leq n} |A_i \cap A_j| + \sum_{1 \leq i &amp;lt; j &amp;lt; k \leq n} |A_i \cap A_j \cap A_k| - ...\]&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;내용 자체는 이게 끝으로, 경우의 수 문제처럼 &quot;어떤 개수를 구하는 문제&quot;를 합집합의 원소의 개수를 구하는 문제로 바꿀 수 있으면 포함배제의 원리를 적용해 볼 수 있습니다. 고등학교 확률과 통계 시간에 얼핏 들었던 것 같은 이 개념이 PS에선 어떻게 활용되는지, 아래 두 문제를 통해 확인해 봤습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;(다음 내용부터는 &lt;a href=&quot;https://www.acmicpc.net/problem/16565&quot;&gt;16565번: N포커&lt;/a&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;a href=&quot;https://www.acmicpc.net/problem/16565&quot;&gt;백준 16565번: N포커&lt;/a&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 글을 쓰게 된 원인입니다. 포함배제의 원리를 쓰는 풀이가 일반적으로 잘 알려져 있지만, 이 문제를 풀 당시에는 &lt;a href=&quot;http://boj.kr/e43205ffec674d20a5d7c052bcdd29b0&quot;&gt;순수하게 DP로만 풀었습니다&lt;/a&gt;.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;문제는 그러고 나서 포함배제의 원리를 쓰는 풀이를 확인하지 않았습니다...&lt;br /&gt;결국 ABC423에서 이때 배우지 못한 포함배제 원리에 발목을 잡혔습니다. 문제를 풀고 나면 귀찮더라도 다른 풀이들을 꼭 확인하도록 합시다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;보통 이 문제를 포함배제의 원리로 설명할 때, &quot;1장으로 포카드를 만드는 경우의 수, 2장으로..., 3장으로..., ...&quot;를 각각 구해 더하고 빼주는 게 포함배제의 원리를 사용한 풀이라고 설명합니다.&lt;br /&gt;포함배제의 원리는 &quot;합집합의 원소의 개수&quot;를 구하는 방법인데, 합집합은 나오지도 않은 이 풀이가 왜 포함배제의 원리인지 항상 애매했었습니다. 이를 설명하기 위해, 다음 표현을 생각합시다. (편의상 A를 1로, J, Q, K를 각각 11, 12, 13으로 생각합시다)&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;\[A_x = (n장으로\,x가\,포카드가\,되는\,카드\,조합의\,집합)\\&lt;br /&gt;\Rightarrow|A_x|= \binom{52 - 4}{n - 4}\]&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;예를 들어, \(n=5\)일 때 \(x=2\)이면,&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;\[A_2 = \{\{&amp;hearts;️1,&amp;hearts;️2,&amp;spades;️2,&amp;diams;️2,&amp;clubs;️2\}, \{&amp;spades;️1,&amp;hearts;️2,&amp;spades;️2,&amp;diams;️2,&amp;clubs;️2\} , ..., \{&amp;hearts;️2,&amp;spades;️2,&amp;diams;️2,&amp;clubs;️2,&amp;clubs;️13\}\}\]&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이라고 생각할 수 있습니다. 플레이어가 이기기 위해서는 적어도 하나의 포카드가 포함되어야 하므로, 플레이어가 이기는 카드 조합의 집합은 \(A_1 \cup A_2 \cup ... \cup A_{13}\)와 같습니다. 즉, 구하는 경우의 수는 이 합집합의 원소의 개수와 같고, 포함배제의 원리로 합집합의 원소의 개수를 구할 수 있습니다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;\[\left|\bigcup_{k=1}^{13} A_k\right| = \sum_{ 1 \leq i \leq 13 } |A_i| - \sum_{1 \leq i &amp;lt; j \leq 13} |A_i \cap A_j| + \sum_{1 \leq i &amp;lt; j &amp;lt; k \leq 13} |A_i \cap A_j \cap A_k| - ...\]&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;여기까지만 와도 답을 구할 수 있습니다. 위 수식의 우변을 직접 계산하는 방법으로,&lt;br /&gt;\(T\subseteq\{A_1, ..., A_{13}\}\)인 모든 \(T\)에 대해 \((-1)^{|T| + 1} \left|\bigcap_{A\in T} A\right|\)을 모두 합한 값이 정답입니다. \(2^{13}=8092\) 이므로 &lt;a href=&quot;http://boj.kr/159010647dc2486cad0971e98f714c90&quot;&gt;\(O(8092)\)에 문제를 해결할 수 있습니다&lt;/a&gt;.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;여기서, \(\{A_1, ..., A_{13}\}\)의 모든 부분집합을 확인하는 방법 말고, 더 빠른 방법을 생각해 봅시다. 위 수식 우변의 시그마 각각을 확인합시다. 첫 번째 시그마는 포카드가 1개인 모든 경우의 수를, 두 번째는 포카드가 2개, 세 번째는 3개... 인 모든 경우의 수를 의미하는 것을 알 수 있습니다. 각각의 시그마를 이항계수를 활용해 한번에 계산할 수 있고, 위 수식을 아래와 같이 고쳐 쓸 수 있습니다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;\[\sum_{ 1 \leq i \leq 13 } |A_i| - \sum_{1 \leq i &amp;lt; j \leq 13} |A_i \cap A_j| + ... = \binom{13}{1} \binom{52 - 4}{n - 4} - \binom{13}{2} \binom{52 - 8}{n - 8} + ...\]&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;결국, 위 결과로부터 &quot;1장으로 포카드를 만드는 경우의 수, 2장으로..., 3장으로..., ...&quot;를 각각 구해 더하고 빼는 게 포함배제의 원리를 사용한 풀이와 동치임을 확인할 수 있습니다.&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 data-token-index=&quot;1&quot;&gt;&lt;a href=&quot;https://atcoder.jp/contests/abc423/tasks/abc423_f&quot;&gt;ABC 423 F - Loud Cicada&lt;/a&gt; &lt;/span&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;\(1\) 이상 \(Y\) 이하의 자연수 중 \(A_i\)의 배수를 모아놓은 집합을 \(E_i\)라 합시다. 문제에서 구하는 &quot;\(N\) 개 중 정확히 \(M\) 개의 배수가 되는 자연수의 개수&quot;를 구하기 전, 조건을 완화해 더 쉬운 문제를 해결해 봅시다.&lt;br /&gt;\(A_1, ..., A_N\) 개 중 \(M\) 개의 배수가 될 \(A_i\)의 조합이 \(\{A_1, ..., A_M\}\)로 고정되었을 때의 정답을 먼저 구해봅시다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;\(E_i\)를 이용하면 \(N\) 개 중 \(\{A_1, ..., A_M\}\)의 원소만 배수가 되는 자연수의 집합은 아래와 같이 표현할 수 있습니다.&lt;br /&gt;(편의상 \(S= E_1\cap ... \cap E_M\)이라 합시다)&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;\[\begin{align}&lt;br /&gt;S \cap E_{M+1}^\complement \cap ... \cap E_{N}^\complement &amp;amp; = S \cap (E_{M+1} \cup ... \cup E_{N})^\complement\\&lt;br /&gt;&amp;amp; = S - (E_{M+1} \cup ... \cup E_{N}) \\&lt;br /&gt;&amp;amp; = S - (S \cap (E_{M+1} \cup ... \cup E_{N})) \\ &lt;br /&gt;\end{align}\]&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;따라서, 고정된 \(S\)에 대해 &quot;\(N\) 개 중 정확히 \(M\) 개의 배수가 되는 자연수의 개수&quot;는 \(|S - (S \cap (E_{M+1} \cup ... \cup E_{N}))|\) 임을 알 수 있고, 이는 \(|S| - |S \cap (E_{M+1} \cup ... \cup E_{N})|\)와 같습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;\(|S|\)는 \(\frac{Y}{\operatorname{lcm}(A_1, ... , A_M)}\)로 쉽게 구할 수 있습니다. 문제가 되는 부분은 \(|S \cap (E_{M+1} \cup ... \cup E_{N})|\)인데, \(|S \cap (E_{M+1} \cup ... \cup E_{N})| = |(S \cap E_{M+1}) \cup ... \cup (S \cap E_{N})|\)이므로, 합집합의 원소의 개수가 되어 포함배제의 원리로 구할 수 있습니다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;\[\begin{align}&lt;br /&gt;|(S \cap E_{M+1}) \cup ... \cup (S \cap E_{N})| &amp;amp; = \sum_{\{1, ..., M\} \subset T \subseteq\{1, ..., N\}}(-1)^{|T|-M+1} \left|\bigcap_{i \in T} E_i\right| \\&lt;br /&gt;&amp;amp; = \sum_{\{1, ..., M\} \subset T \subseteq\{1, ..., N\} } (-1)^{|T|-M+1} \left\lfloor \frac{Y}{ \operatorname{lcm}(\{A _ i~|~i \in T\} )}\right\rfloor&lt;br /&gt;\end{align}\]&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;앞서 설명한 N포커의 \(O(8092)\) 풀이와 비슷한 방법입니다. 위 결과로 고정된 \(S\)에 대해서는 문제를 해결할 수 있습니다. 이를 확장해 모든 \(S\)에 대해서 답을 구해봅시다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;\(|T| &amp;gt; M\)인 \(T \subseteq\{1, ..., N\}\)를 생각합시다. \(T\)가 결정되면 \(T\)가 어떤 \(S\)에 대해 더하고 빠지는 지를 알아야 하는데, 이는 \(T\)에서 \(S\)를 구성할 인덱스를 고르는 방법으로 구할 수 있습니다. \(T\)에서 \(S\)가 될 인덱스를 고르는 경우의 수는 \(\binom{|T|}{M}\)로, 모든 \(S\)중에서 \(T\)가 더하고 빠지는 \(S\)가 \(\binom {|T|}{M}\) 개라는 의미로 이해할 수 있습니다. 따라서 구하는 답은 아래와 같습니다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;\[\sum_{T \subseteq\{1, ..., N\}, |T| \geq M}(-1)^{|T|-M} \binom{|T|}{M} \left\lfloor \frac{Y}{ \operatorname{lcm}(\{A _ i~|~i \in T\})}\right\rfloor\]&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;모든 \(T\)에 대해 계산해야 하므로, \(O(2^NN\lg Y)\)에 문제를 해결할 수 있습니다.&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;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이게 익숙해지면 집합을 각각 다 정의해서 합집합을 구하는 과정 없이, 문제를 보고 바로 1개는 더해지고, 2개는 빠지고, 3개는 더해지고... 라며 바로 풀이를 떠올릴 수 있을까 싶네요.&lt;br /&gt;... 저에겐 아직 너무 먼 이야기로만 느껴집니다.&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;참고자료&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;a href=&quot;https://ko.wikipedia.org/wiki/%ED%8F%AC%ED%95%A8%EB%B0%B0%EC%A0%9C%EC%9D%98_%EC%9B%90%EB%A6%AC&quot;&gt;포함배제의 원리 - 위키백과, 우리 모두의 백과사전&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://youtu.be/GS7dIWA6Hpo&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://youtu.be/GS7dIWA6Hpo&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description>
      <category>PS/수학</category>
      <author>la_apin</author>
      <guid isPermaLink="true">https://lapinism.tistory.com/4</guid>
      <comments>https://lapinism.tistory.com/entry/inclusion-and-exclusion#entry4comment</comments>
      <pubDate>Mon, 15 Sep 2025 21:45:19 +0900</pubDate>
    </item>
    <item>
      <title>2025 인하대학교 프로그래밍 경진대회 (IUPC) 참가 후기</title>
      <link>https://lapinism.tistory.com/entry/iupc2025</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;KakaoTalk_20250729_183103253.jpg&quot; data-origin-width=&quot;3024&quot; data-origin-height=&quot;2268&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bxGwVf/btsPCjo9PA1/0WkZtRlai2BAzyHOm6t9eK/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bxGwVf/btsPCjo9PA1/0WkZtRlai2BAzyHOm6t9eK/img.jpg&quot; data-alt=&quot;Let lapinism win shake!&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bxGwVf/btsPCjo9PA1/0WkZtRlai2BAzyHOm6t9eK/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbxGwVf%2FbtsPCjo9PA1%2F0WkZtRlai2BAzyHOm6t9eK%2Fimg.jpg&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;3024&quot; height=&quot;2268&quot; data-filename=&quot;KakaoTalk_20250729_183103253.jpg&quot; data-origin-width=&quot;3024&quot; data-origin-height=&quot;2268&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;Let lapinism win shake!&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://www.acmicpc.net/category/336&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;IUPC&lt;/a&gt;라는 대회를 알게 된 건 22년 봄입니다.&lt;br /&gt;그땐 막연히 &quot;졸업 전에 한번 우승해 보고 가야겠다&quot;라며 생각했었는데, 다행히도 올해 그 목표를 이뤄냈습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;지금 생각해 보면 운이 잘 따라준 부분이 많았습니다.&lt;br /&gt;예제 입력이 아니었으면 최소 1시간은 삽질했을 문제(K)가 있었고,&lt;br /&gt;못 풀고 있다가 뜬금없이 방법이 떠오른 문제들(G, H)이나,&lt;br /&gt;겨우 버그를 잡아낸 문제(F)가 그렇습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다음은 &lt;a href=&quot;https://shake.codes/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;shake!&lt;/a&gt; 일 텐데, 이런 걸 보면 아직 한참 부족한 것 같습니다.&lt;br /&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;br /&gt;일부 문제의 스포일러가 포함되어 있습니다.&lt;/p&gt;
&lt;div data-ke-type=&quot;moreLess&quot; data-text-more=&quot;더보기&quot; data-text-less=&quot;닫기&quot;&gt;&lt;a class=&quot;btn-toggle-moreless&quot;&gt;더보기&lt;/a&gt;
&lt;div class=&quot;moreless-content&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;~0:03 A &lt;span style=&quot;color: #009874;&quot;&gt;(+)&lt;br /&gt;&lt;/span&gt;&lt;/b&gt;&lt;b&gt;~0:09 B &lt;span style=&quot;color: #009874;&quot;&gt;(+)&lt;br /&gt;&lt;/span&gt;&lt;/b&gt;&lt;b&gt;~0:16 C &lt;span style=&quot;color: #009874;&quot;&gt;(+)&lt;br /&gt;&lt;/span&gt;&lt;/b&gt;첫 3문제는 가장 쉬운 문제라고 하길래, 첫 3문제를 먼저 풀고 나머지를 차례대로 보려고 했습니다.&lt;br /&gt;A번이 최근 나온 A번 중에선 어려웠어서...&lt;br /&gt;증명 없이 제출해서 AC를 받고 넘어갔었네요.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;~0:23 E &lt;span style=&quot;color: #009874;&quot;&gt;(+)&lt;/span&gt;&lt;/b&gt; &lt;br /&gt;차례대로 D를 봤는데... 당장 풀이가 나오진 않아서 다음 문제인 E를 잡았습니다.&lt;br /&gt;빠르게 백트래킹을 짜서 AC를 받고 넘어갔습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;~0:30 F&lt;/b&gt;&lt;br /&gt;&lt;span style=&quot;background-color: #fafafa; color: #333333; text-align: start;&quot;&gt;F를 보자마자 &lt;a href=&quot;https://www.acmicpc.net/problem/4256&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;이 문제&lt;/a&gt;가 먼저 떠올랐습니다.&lt;br /&gt;&lt;/span&gt;서브트리 루트 기준으로 좌우 나눠서 뭔갈 하면 되겠다 싶었는데, N이 20만이라 일단 나중에 생각하기로 했습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;~0:50 I&lt;/b&gt;&lt;br /&gt;&lt;span style=&quot;background-color: #fafafa; color: #333333; text-align: start;&quot;&gt;G, H를 차례대로 봤지만 당장 풀이가 떠오르지 않아서 I번까지 왔습니다.&lt;br /&gt;&lt;/span&gt;보자마자 반가웠습니다. 최근 IUPC에서 기하 문제가 많이 없길래 기하를 준비했었는데, 그게 적중했습니다.&lt;br /&gt;요구하는 바도 명확해서 바로 풀려했는데... 예제가 안 돌아갔습니다.&lt;br /&gt;30분 가까이 디버깅했지만, 이유를 찾지 못해 일단 넘어갔습니다.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;~1:00 J &lt;span style=&quot;color: #009874;&quot;&gt;(+)&lt;/span&gt;&lt;/b&gt; &lt;br /&gt;&lt;span style=&quot;background-color: #fafafa; color: #333333; text-align: start;&quot;&gt;문제의 J번입니다.&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;background-color: #fafafa; color: #333333; text-align: start;&quot;&gt;의도한 풀이는 2D BFS였다고 하지만, 시간을 1씩 증가시키며 매번 BFS를 돌리면 되겠다 싶어 바로 AC를 받았습니다.&lt;br /&gt;&lt;/span&gt;문제는... 스코어보드에서 E번 다음으로 풀린 게 J가 되어,&amp;nbsp;12문제 중 5번째로 풀린 문제가 되었습니다.&lt;br /&gt;이 때문에 많은 사람들이 더 쉬운 문제 대신 J를 도전했다고 들었고, 이 문제로 평균 솔브수가 떨어진 것 같다고 합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;~1:11 K&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #009874;&quot;&gt;(+1)&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;span style=&quot;background-color: #fafafa; color: #333333; text-align: start;&quot;&gt;문제를 읽는 데 시간이 꽤 걸렸습니다.&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;background-color: #fafafa; color: #333333; text-align: start;&quot;&gt;문제를 이해하니 요구하는 건 단순한 그리디여서 확인해 봤지만... 이것도 예제가 안 돌아갔습니다.&lt;br /&gt;다행히 e - s + 1 &amp;gt; k인 경우가 문제임을 찾아냈습니다. 예제가 없었다면 알아내는 데 최소 1시간은 썼을 것 같네요.&lt;br /&gt;한번 틀린건 중간에 배열 크기를 잘못 잡고 제출했어서...&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;~1:33 I&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #009874;&quot;&gt;(+)&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;span style=&quot;background-color: #fafafa; color: #333333; text-align: start;&quot;&gt;L은 지금은 풀 수 없음을 직감해서, 다시 I로 돌아왔습니다.&lt;br /&gt;아까 짰던 게 대체 뭐가 문제인지 알 수 없어서, 처음부터 다시 짜기로 했습니다.&lt;br /&gt;결과는 AC. 처음에 구현했던 거랑 똑같이 짰는데, 어디선가 오타를 냈던 것 같네요.&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;~1:59 D&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #009874;&quot;&gt;(+)&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;I를 해결하고 스코어보드를 확인하니 D에 제출이 몰려 있었습니다.&lt;br /&gt;혹시나 내가 놓친 게 있을까 봐 문제를 다시 확인하니 '최단 거리'라는 조건을 그제야 확인했습니다.&lt;br /&gt;최단 거리가 아닐 때를 가정하고 복잡하게 생각했던 거라... 문제 좀 꼼꼼히 읽을 걸 그랬네요.&lt;br /&gt;처음에는 최댓값만 확인하는 DP를 짰는데 예제가 안 돌아서, 최소도 같이 보는 DP를 짜서 AC를 받았습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;~2:57 F&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #dd4124;&quot;&gt;(-1)&lt;br /&gt;&lt;/span&gt;&lt;/b&gt; &lt;b&gt;~3:10 F&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #dd4124;&quot;&gt;(-2)&lt;/span&gt;&lt;/b&gt; &lt;br /&gt;남은 문제 중 정답에 가장 가까웠던 F를 잡았습니다.&lt;br /&gt;풀이를 설계해 보니 &quot;구간에서 x 이하의 값이 처음 등장하는 위치&quot;를 O(lgN)에 찾는 문제임을 확인했습니다.&lt;br /&gt;이걸 세그먼트 트리로 한 번에 O(lgN)로 짜려고 했다가... 30분 정도를 날렸습니다.&lt;br /&gt;그냥 세그먼트 트리에서 이분 탐색으로 O(lg&amp;sup2;N)에 돌아가는 풀이를 짰는데...&lt;br /&gt;결과는 WA. 디버깅 이후 제출도 WA를 받습니다.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;~3:17 H&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #009874;&quot;&gt;(+1)&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;span style=&quot;background-color: #fafafa; color: #333333; text-align: start;&quot;&gt;F에서 흔들리다가 갑자기 H번에 비둘기집 원리가 떠올랐습니다.&lt;br /&gt;m을 n개씩 끊어서 보면 n개를 모두 채우는 동작을 m/n번 한다는 걸 확인했습니다.&lt;br /&gt;결국 구하는 건 m/n의 홀짝성에 따른 동작임을 확인했고, 이를 구현해 AC를 받았습니다.&lt;br /&gt;한번 틀린 건 m/n의 홀짝을 직접 나눠 구하는 풀이를 제출해서 틀렸습니다. (왜 그랬지)&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #fafafa; color: #333333; text-align: start;&quot;&gt; &lt;b&gt;~4:35 G&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #009874;&quot;&gt;(+)&lt;/span&gt;&lt;/b&gt; &lt;br /&gt;H를 풀고 나니 누군가가 G에서 AC를 받아오길래 어쩌면 풀 수도 있겠다 싶어 G를 잡았습니다.&lt;br /&gt;수십 분 동안 진전이 없다가 (i + j) % 3 값이 같으면 서로 인접하지 않다는 걸 확인했습니다.&lt;br /&gt;여기서 다시 막혔었는데, 그냥 개수가 가장 많은 수부터 넣으면 되지 않을까 싶었습니다.&lt;br /&gt;그걸 구현하니 AC를 받았습니다. 풀고도 이게 맞나 싶어서, 다른 사람의 풀이가 궁금했던 문제였네요.&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;~4:38 F&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #dd4124;&quot;&gt;(-3)&lt;br /&gt;&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;background-color: #fafafa; color: #333333; text-align: start;&quot;&gt;&lt;b&gt; ~4:42 F&amp;nbsp;&lt;span style=&quot;color: #009874;&quot;&gt;(+3)&lt;/span&gt;&lt;/b&gt; &lt;br /&gt;이때 남은 문제는 F, L이었고, 남은 시간 모두를 F에 쓰기로 했습니다.&lt;br /&gt;&lt;/span&gt;I처럼 처음부터 다시 짜기엔 시간이 없었고 반례를 찾기 위해 가능한 모든 입력을 넣어봤습니다.&lt;br /&gt;그러다 오른쪽 서브트리를 처리하는 함수에 문제가 있는 걸 확인했고, 틀린 부분도 결국 찾아냈습니다.&lt;br /&gt;오른쪽을 구해야 할 위치에 왼쪽을 구하는 함수가 대신 적혀있었고, 이걸 수정해 AC를 받았습니다.&lt;br /&gt;1초라서 로그제곱이 안 될 줄 알았는데, 880ms로 겨우 뚫어냈네요.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;~4:59 L&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #dd4124;&quot;&gt;(-1)&lt;/span&gt;&lt;/b&gt; &lt;br /&gt;L은 시간 내에 못 풀 것 같아서, 편지를 남기기로 했습니다.&lt;/p&gt;
&lt;/div&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&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;제목 없음.png&quot; data-origin-width=&quot;900&quot; data-origin-height=&quot;675&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/OvyAJ/btsPClgeB4B/4C9Xh7gPhBtyQ8YVC8kfI0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/OvyAJ/btsPClgeB4B/4C9Xh7gPhBtyQ8YVC8kfI0/img.png&quot; data-alt=&quot;대회 중 L번에 제출한 소스코드&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/OvyAJ/btsPClgeB4B/4C9Xh7gPhBtyQ8YVC8kfI0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FOvyAJ%2FbtsPClgeB4B%2F4C9Xh7gPhBtyQ8YVC8kfI0%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;900&quot; height=&quot;675&quot; data-filename=&quot;제목 없음.png&quot; data-origin-width=&quot;900&quot; data-origin-height=&quot;675&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;대회 중 L번에 제출한 소스코드&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;좋은 대회를 준비 및 운영해 주신 운영진과 관계자 모든 분께 감사드립니다!&lt;/p&gt;</description>
      <category>PS/후기</category>
      <author>la_apin</author>
      <guid isPermaLink="true">https://lapinism.tistory.com/3</guid>
      <comments>https://lapinism.tistory.com/entry/iupc2025#entry3comment</comments>
      <pubDate>Tue, 29 Jul 2025 19:21:04 +0900</pubDate>
    </item>
  </channel>
</rss>