<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>oopt1234 님의 블로그</title>
    <link>https://oopt1234.tistory.com/</link>
    <description>oopt1234 님의 블로그 입니다.</description>
    <language>ko</language>
    <pubDate>Mon, 13 Jul 2026 10:55:58 +0900</pubDate>
    <generator>TISTORY</generator>
    <ttl>100</ttl>
    <managingEditor>oopt1234</managingEditor>
    <item>
      <title>카카오 테크 캠퍼스 4기 모집 중 !!!!!</title>
      <link>https://oopt1234.tistory.com/23</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;카카오테크캠퍼스 4기가 지금 모집 기간이라고 합니다 !&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아래 공식 홈페이지를 참고하여 지원하시면 좋을 거 같아요 !&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://www.kakaotechcampus.com/kakaotech/apply/list.do&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://www.kakaotechcampus.com/kakaotech/apply/list.do&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;p data-ke-size=&quot;size16&quot;&gt;아래는 4/3일 19시에 진행되는 사전 설명회 링크입니다 !!&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://forms.gle/1QPjWAfDSYHpS2r67&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://forms.gle/1QPjWAfDSYHpS2r67&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1775119014428&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;카카오테크 캠퍼스 4기 사전 설명회 신청서&quot; data-og-description=&quot;&amp;quot;카카오테크 캠퍼스에서는 함께 배우며 성장합니다&amp;quot; 온라인 사전 설명회를 통해 카카오테크 캠퍼스 4기의 자세한 내용을 확인하세요!&quot; data-og-host=&quot;docs.google.com&quot; data-og-source-url=&quot;https://forms.gle/1QPjWAfDSYHpS2r67&quot; data-og-url=&quot;https://docs.google.com/forms/d/e/1FAIpQLSeuBmF-WkBMsPyBS3iNBlto48H7toyZ3PGYYersCW2AmiaZZQ/viewform?usp=send_form&amp;amp;usp=embed_facebook&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/ddJlwM/dJMb8868908/TcKW3Z1LQFSmKHnh4N0aJ1/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630&quot;&gt;&lt;a href=&quot;https://forms.gle/1QPjWAfDSYHpS2r67&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://forms.gle/1QPjWAfDSYHpS2r67&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/ddJlwM/dJMb8868908/TcKW3Z1LQFSmKHnh4N0aJ1/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;카카오테크 캠퍼스 4기 사전 설명회 신청서&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;&quot;카카오테크 캠퍼스에서는 함께 배우며 성장합니다&quot; 온라인 사전 설명회를 통해 카카오테크 캠퍼스 4기의 자세한 내용을 확인하세요!&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;docs.google.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2700&quot; data-origin-height=&quot;2158&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bx31aG/dJMcabwUSTV/nXCAmLGhSdyG5iqz14tUm0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bx31aG/dJMcabwUSTV/nXCAmLGhSdyG5iqz14tUm0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bx31aG/dJMcabwUSTV/nXCAmLGhSdyG5iqz14tUm0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbx31aG%2FdJMcabwUSTV%2FnXCAmLGhSdyG5iqz14tUm0%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;2700&quot; height=&quot;2158&quot; data-origin-width=&quot;2700&quot; data-origin-height=&quot;2158&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <author>oopt1234</author>
      <guid isPermaLink="true">https://oopt1234.tistory.com/23</guid>
      <comments>https://oopt1234.tistory.com/23#entry23comment</comments>
      <pubDate>Thu, 2 Apr 2026 17:37:14 +0900</pubDate>
    </item>
    <item>
      <title>카카오테크캠퍼스 3기 BE 수료 후기  </title>
      <link>https://oopt1234.tistory.com/22</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;카테캠을 왜 하게 됐나 !?&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2025년, 대학교 2학년이 끝나고 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;문득 2학년 1학기 때 들었던 자바 수업이 떠올랐다. 간단한 print문부터 객체지향을 배워가며 고도화된 문법을 배웠을 때 자바라는 언어가 정말 재미있고 백엔드 개발자라는 꿈을 키울 수 있도록 뒷받침 해줬던 것 같다. 백엔드 개발자로 나아가기 위해서 어떤걸 해야할지 갈피를 못 잡고 있다가, 학교 건물에서 동기들과 우연히 카카오테크캠퍼스 3기 모집 팜플렛을 보게 됐다.&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;그러다 지난해 지원했다가 떨어졌던 카카오테크캠퍼스 2기가 다시 생각이 났다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그 당시에는 막 복학을 해서 개발에 대해 아무것도 모르는 상태에서 간절하지 않은 태도로 지원했었기에 코테랑 CS 문제를 많이 못 풀어서 탈락을 했었던 것 같다.&lt;/p&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단계 최종 합격을 받게 됐다 !&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;4월부터 11월까지 8개월 동안. 그것도 학기 중에 이런 부트캠프를 잘 해낼 수 있을지 나 자신이 못 믿어웠다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;하지만 올 한해 죽었다 생각하고 진심을 다해서 완주하겠다는 다짐을 했고, 최종적으로 참가하기로 결정했다.&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&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;1200&quot; data-origin-height=&quot;2316&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dcgjUg/dJMcaihpYdO/v2S6p6YClZDvKl2mwvhu31/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dcgjUg/dJMcaihpYdO/v2S6p6YClZDvKl2mwvhu31/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dcgjUg/dJMcaihpYdO/v2S6p6YClZDvKl2mwvhu31/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdcgjUg%2FdJMcaihpYdO%2Fv2S6p6YClZDvKl2mwvhu31%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;823&quot; height=&quot;1588&quot; data-origin-width=&quot;1200&quot; data-origin-height=&quot;2316&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;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;1단계&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1단계는 팀 스파르타 사이트에서 온라인 강의를 들으며 학습일지(TIL, &lt;span style=&quot;background-color: #ffffff; color: #0a0a0a; text-align: start;&quot;&gt;Today I Learned)를 작성하는게 주 활동이었다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #0a0a0a; text-align: start;&quot;&gt;비전공자들도 쉽게 따라올 수 있도록 DB를 다루는데 필수인 SQL 강의부터, 자바 기초 문법, Spring 기초부터 심화, Git 활용법, Docker 사용법까지 백엔드 개발자로써 갖춰야 할 필수 덕목들을 배울 수 있었다.&lt;/span&gt;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;766&quot; data-origin-height=&quot;1384&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/3seQ8/dJMcaawU16J/5u47SqDKlllT1jB8szksfK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/3seQ8/dJMcaawU16J/5u47SqDKlllT1jB8szksfK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/3seQ8/dJMcaawU16J/5u47SqDKlllT1jB8szksfK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F3seQ8%2FdJMcaawU16J%2F5u47SqDKlllT1jB8szksfK%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;477&quot; height=&quot;862&quot; data-origin-width=&quot;766&quot; data-origin-height=&quot;1384&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1654&quot; data-origin-height=&quot;1274&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bIMleO/dJMcacO2a33/lZyeEARscOPqv09OM8hZ1K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bIMleO/dJMcacO2a33/lZyeEARscOPqv09OM8hZ1K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bIMleO/dJMcacO2a33/lZyeEARscOPqv09OM8hZ1K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbIMleO%2FdJMcacO2a33%2FlZyeEARscOPqv09OM8hZ1K%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;802&quot; height=&quot;618&quot; data-origin-width=&quot;1654&quot; data-origin-height=&quot;1274&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;TIL을 작성하면서 내가 오늘 하루 뭘 공부했고, 어떤게 어려웠는지 작성할 수 있어서 하루 단위로 회고를 할 수 있다는 점이 좋았다.&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 data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;지금 최종 후기를 작성하면서 후회되는 한가지가 있는데, 이때 영상으로 공부하는게 끝이 아니라 책도 빌려가면서 추가적으로 공부를 더 많이 했으면 뒤에서 진행할 2단계, 3단계도 잘 할 수 있었을텐데.. 하는 아쉬움이 남아있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;특히 객체지향 !!!! 커리어 멘토링 진행하면서 김XX 멘토님이 객체지향 공부를 단단하게 해두는게 좋다고 하셨다.. 다시 1단계로 돌아간다면 객체지향 공부 진짜 열심히 해보고 싶다  &lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;1단계를 진행하면서 2번의 과제가 존재했고, 해당 과제의 필수 문제를 해결해야 다음 2단계를 참여할 수 있는 구조였다.&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;많은 시간을 갈아넣으며 과제를 수행했고, 간단한 계산기 만들기 과제와 일정 관리 CRUD 과제를 무사히 마칠 수 있었다.&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;계산기 만들기는 자바로 구현하는거라 익숙해서 금방 할 수 있었으나, 스프링을 처음 접해보는 입장에서 일정 관리 CRUD 구현하는게 너무나도 힘들었다. 백지 상태에서 하나하나 쌓아가는게 너무 낯설었지만 단계별로 구현하면서 프로그램이 완성되는 모습을 보니 뿌듯한 감정이 들었다  &lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;962&quot; data-origin-height=&quot;1304&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/HuKsq/dJMcabWTBMP/4rL21KaKWydjXBgZ3IZdZ0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/HuKsq/dJMcabWTBMP/4rL21KaKWydjXBgZ3IZdZ0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/HuKsq/dJMcabWTBMP/4rL21KaKWydjXBgZ3IZdZ0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FHuKsq%2FdJMcabWTBMP%2F4rL21KaKWydjXBgZ3IZdZ0%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;647&quot; height=&quot;877&quot; data-origin-width=&quot;962&quot; data-origin-height=&quot;1304&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그때 당시 일정관리 과제를 끝마치고 작성했던 회고인데 지금이랑 생각이 똑같은 것 같다 ㅋㅋ..&lt;/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;style5&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;2단계 !!&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;열심히 1단계를 수행한 덕분에 다행히 수료 처리가 됐고, 2단계까지 참여할 수 있게 됐다 !&lt;/p&gt;
&lt;p&gt;&lt;img style=&quot;text-align: center; caret-color: transparent; color: #333333; font-size: 16px; letter-spacing: 0px;&quot; src=&quot;https://blog.kakaocdn.net/dna/utqxA/dJMcahpheRI/AAAAAAAAAAAAAAAAAAAAAC-M9ChOsNVJLRU8_CJgHtiuKq4daiLv4AXpj3Nhz58w/img.png?credential=yqXZFxpELC7KVnFOS48ylbz2pIh7yKj8&amp;amp;expires=1764514799&amp;amp;allow_ip=&amp;amp;allow_referer=&amp;amp;signature=AWz8QBAOF%2FhbLIQGrVAOdyquN%2Fg%3D&quot; data-origin-width=&quot;1200&quot; data-origin-height=&quot;2159&quot; data-is-animation=&quot;false&quot; /&gt;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&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;2단계는 시작하자마자 같은 학교 쿠키즈들과 친해지라고 카테캠 측에서 커넥팅데이(팀빌딩 워크샵)를 개최해줬다-!!&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;여수 디오션 리조트에서 진행됐고, 경북대, 부산대, 전남대 쿠키즈들이 같이 모여서 진행했다 !!&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1206&quot; data-origin-height=&quot;1220&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/lLSfV/dJMcafdVoNx/Y4xxRJKvs1fkOKEKSrsGRK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/lLSfV/dJMcafdVoNx/Y4xxRJKvs1fkOKEKSrsGRK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/lLSfV/dJMcafdVoNx/Y4xxRJKvs1fkOKEKSrsGRK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FlLSfV%2FdJMcafdVoNx%2FY4xxRJKvs1fkOKEKSrsGRK%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;695&quot; height=&quot;703&quot; data-origin-width=&quot;1206&quot; data-origin-height=&quot;1220&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;766&quot; data-origin-height=&quot;896&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bsaeK4/dJMcafEZIhG/Caj50c6xhk4BeSE0ksPobk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bsaeK4/dJMcafEZIhG/Caj50c6xhk4BeSE0ksPobk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bsaeK4/dJMcafEZIhG/Caj50c6xhk4BeSE0ksPobk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbsaeK4%2FdJMcafEZIhG%2FCaj50c6xhk4BeSE0ksPobk%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;740&quot; height=&quot;866&quot; data-origin-width=&quot;766&quot; data-origin-height=&quot;896&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&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;이렇게 열심히 1단계를 달린 후, 숨 고르기를 적절하게 해주니 남은 2단계도 수월하게 진행할 수 있었던 것 같습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2단계는 크게 3가지의 활동으로 이뤄졌는데요 !!&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;매주 2번씩 진행되는 클론 코딩 라이브 특강 ! 우테코 캡틴인 제이슨이 직접 해주는 스프링의 깊은 이해와 활용법 강의가 너무 좋았습니다. 혼자 공부하기 적적하고 막막했는데, 해당 특강 덕분에 공부 방향성도 잘 잡게 됐고, 꾸준한 성장을 이룰 수 있었습니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2346&quot; data-origin-height=&quot;1156&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/xbGlM/dJMcahivtNj/J1tU0UZVV7EBzT1wcAorP1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/xbGlM/dJMcahivtNj/J1tU0UZVV7EBzT1wcAorP1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/xbGlM/dJMcahivtNj/J1tU0UZVV7EBzT1wcAorP1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FxbGlM%2FdJMcahivtNj%2FJ1tU0UZVV7EBzT1wcAorP1%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;2346&quot; height=&quot;1156&quot; data-origin-width=&quot;2346&quot; data-origin-height=&quot;1156&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다음으로는 매일 3시간씩 수행되는 모각코 !! 오후에 3시간 동안 Zep이라는 멀티버스 공간에서 팀원끼리 모여서 공부를 수행하고, 자기가 공부했던 내용들을 공유하며 서로 학습의 능률을 높일 수 있었습니다.&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;1038&quot; data-origin-height=&quot;1174&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bQUowL/dJMcafdVpsM/2UveDr2qhgzxk94oCeqxbk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bQUowL/dJMcafdVpsM/2UveDr2qhgzxk94oCeqxbk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bQUowL/dJMcafdVpsM/2UveDr2qhgzxk94oCeqxbk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbQUowL%2FdJMcafdVpsM%2F2UveDr2qhgzxk94oCeqxbk%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;1038&quot; height=&quot;1174&quot; data-origin-width=&quot;1038&quot; data-origin-height=&quot;1174&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;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;또한 1단계에서 진행됐던 TIL도 꾸준히 작성했습니다 ! 오늘의 소감 &amp;amp; 느낀점, 배운 개념 정리, 오늘 진행한 과제나 프로젝트 내용 같은걸 작성해야 했는데, 다른 사람이 기록한 TIL도 몰래몰래 보면서 자극 받았던 기억이 있어요 !&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1088&quot; data-origin-height=&quot;660&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/C0pLA/dJMcacVN1iO/lic1nIACVRCMhCDBT8O3ck/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/C0pLA/dJMcacVN1iO/lic1nIACVRCMhCDBT8O3ck/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/C0pLA/dJMcacVN1iO/lic1nIACVRCMhCDBT8O3ck/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FC0pLA%2FdJMcacVN1iO%2Flic1nIACVRCMhCDBT8O3ck%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;1088&quot; height=&quot;660&quot; data-origin-width=&quot;1088&quot; data-origin-height=&quot;660&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;940&quot; data-origin-height=&quot;808&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bYdp1t/dJMcagYcK9n/jZUVdMca7D2qRvOUYpzBoK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bYdp1t/dJMcagYcK9n/jZUVdMca7D2qRvOUYpzBoK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bYdp1t/dJMcagYcK9n/jZUVdMca7D2qRvOUYpzBoK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbYdp1t%2FdJMcagYcK9n%2FjZUVdMca7D2qRvOUYpzBoK%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;730&quot; height=&quot;627&quot; data-origin-width=&quot;940&quot; data-origin-height=&quot;808&quot;/&gt;&lt;/span&gt;&lt;/figure&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;style5&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;마지막으로 클론 코딩 라이브 특강을 듣고 수행되는 클론 코딩 과제입니다 ! 카카오 선물하기 API를 단계별로 구현해나가면서 스프링의 핵심 어노테이션들과 기능들을 깊이 있게 공부할 수 있는 경험이었습니다. 구조적으로 깊이 공부를 할 수 있도록 JPA와 Spring Security 사용이 제한이 됐었고 그 덕분에 자바와 스프링을 보다 깊이 있게 이해할 수 있었습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;주차별 미션별로 깃허브 레포지토리를 새로 생성하여 코드를 구현하는 방식으로 진행됐고, 처음으로 PR과 브랜치 전략에 대해 배울 수 있었습니다 ! 특히 현직 개발자 멘토님들의 1대1 마크 코드 리뷰가 너무 좋았던 것 같아요.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다시 돌아보면 이런 기회가 진짜 흔치 않을텐데 더 열심히 해볼걸 약간의 후회가 되긴 합니다 ... ! 그래도 그 당시에는 최선을 다했으니 만족해요 !&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1328&quot; data-origin-height=&quot;904&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cfeYmw/dJMcagcPMzG/xscmaepzctUpDNnyrkTqUk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cfeYmw/dJMcagcPMzG/xscmaepzctUpDNnyrkTqUk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cfeYmw/dJMcagcPMzG/xscmaepzctUpDNnyrkTqUk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcfeYmw%2FdJMcagcPMzG%2FxscmaepzctUpDNnyrkTqUk%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;1328&quot; height=&quot;904&quot; data-origin-width=&quot;1328&quot; data-origin-height=&quot;904&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;마지막 미션 수행했던 README와 깃허브 링크입니다 ^_^ !!&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://github.com/sanghyeon1225/spring-gift-order&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://github.com/sanghyeon1225/spring-gift-order&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1763540507271&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;object&quot; data-og-title=&quot;GitHub - sanghyeon1225/spring-gift-order&quot; data-og-description=&quot;Contribute to sanghyeon1225/spring-gift-order development by creating an account on GitHub.&quot; data-og-host=&quot;github.com&quot; data-og-source-url=&quot;https://github.com/sanghyeon1225/spring-gift-order&quot; data-og-url=&quot;https://github.com/sanghyeon1225/spring-gift-order&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/bUwfK5/hyZNJjysEn/Ssa9kaOYz1AOEGFPd6HrJ0/img.png?width=1200&amp;amp;height=600&amp;amp;face=0_0_1200_600,https://scrap.kakaocdn.net/dn/bNSDlF/hyZNPZlCrO/XmDl7re8tkfUQY9bBavn50/img.png?width=1200&amp;amp;height=600&amp;amp;face=0_0_1200_600&quot;&gt;&lt;a href=&quot;https://github.com/sanghyeon1225/spring-gift-order&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://github.com/sanghyeon1225/spring-gift-order&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/bUwfK5/hyZNJjysEn/Ssa9kaOYz1AOEGFPd6HrJ0/img.png?width=1200&amp;amp;height=600&amp;amp;face=0_0_1200_600,https://scrap.kakaocdn.net/dn/bNSDlF/hyZNPZlCrO/XmDl7re8tkfUQY9bBavn50/img.png?width=1200&amp;amp;height=600&amp;amp;face=0_0_1200_600');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;GitHub - sanghyeon1225/spring-gift-order&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;Contribute to sanghyeon1225/spring-gift-order development by creating an account on GitHub.&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;github.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;3단계!&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;대망의 마지막 3단계이다..!&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;같은 학교 내에서 프론트 2명 백엔드 4명씩 랜덤으로 팀을 구성하여 8월부터 11월초까지 진행했다.&lt;/p&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;기획 특강을 들으면서 5Whys?, 유저 플로우, 페르소나, 경쟁사 분석 등을 배웠는데, 일일 PM이 된 기분이 들었다 ㅎㅎ&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;무박 2일로 진행되는 행사였고, 용인 카카오 AI 캠퍼스에서 진행 됐다.&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;그만큼 다른 쿠키즈들도 대단하다는 것 아니겠는가 !?!? 대단한 사람들이 있는 집단에서 같이 하는건 부끄러운게 아니라 내가 성장할 수 있는 원동력이라고 생각한다 !!&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이렇게 깊은 통찰과 개발 지식을 배울 수 있는 집단이 바로 카카오테크캠퍼스다 !! 안할래야 안할 수가 없다 !!!!!!! 카테캠 짱 ❤️&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;4000&quot; data-origin-height=&quot;3000&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bnEQdM/dJMcajm2w8A/cnKGkzQsGJ19MlkQnVWEC0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bnEQdM/dJMcajm2w8A/cnKGkzQsGJ19MlkQnVWEC0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bnEQdM/dJMcajm2w8A/cnKGkzQsGJ19MlkQnVWEC0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbnEQdM%2FdJMcajm2w8A%2FcnKGkzQsGJ19MlkQnVWEC0%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;4000&quot; height=&quot;3000&quot; data-origin-width=&quot;4000&quot; data-origin-height=&quot;3000&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;3000&quot; data-origin-height=&quot;4000&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bfcxe6/dJMcaaXZnWO/YKnzzAocwKxlV71rRDEvs0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bfcxe6/dJMcaaXZnWO/YKnzzAocwKxlV71rRDEvs0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bfcxe6/dJMcaaXZnWO/YKnzzAocwKxlV71rRDEvs0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbfcxe6%2FdJMcaaXZnWO%2FYKnzzAocwKxlV71rRDEvs0%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;3000&quot; height=&quot;4000&quot; data-origin-width=&quot;3000&quot; data-origin-height=&quot;4000&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이렇게 아이디어톤을 통해 우리의 최종 기획을 마쳤고, 9월부터 11월까지는 각 스프린트 별 목표를 설정하고 개발에 몰입하는 기간이었다. 우리 팀은 매주 화요일마다 학교 도서관에 있는 그룹 스터디룸을 빌려서 진행 상황 공유 및 다음 스프린트 목표 설정을 했다.&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;각 주차별로 프로젝트 진행 상황 및 회고를 작성했고, 3주 간격의 스프린트마다 한번씩 팀별 멘토님들과 멘토링을 진행하며 소통할 수 있었다. 우리 백엔드 멘토님이셨던 엘시에게 정말로 감사 인사를 드리고 싶다. 우리가 성장할 수 있도록 좋은 조언을 많이 해주시고 기술적인 피드백을 많이 해주셔서 개발의 방향성이 잘 잡혔던 것 같다 !&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;2488&quot; data-origin-height=&quot;632&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/rV2Ci/dJMcacIgYZb/b6QfmkaWKTP8EnpoHYafl1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/rV2Ci/dJMcacIgYZb/b6QfmkaWKTP8EnpoHYafl1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/rV2Ci/dJMcacIgYZb/b6QfmkaWKTP8EnpoHYafl1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FrV2Ci%2FdJMcacIgYZb%2Fb6QfmkaWKTP8EnpoHYafl1%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;2488&quot; height=&quot;632&quot; data-origin-width=&quot;2488&quot; data-origin-height=&quot;632&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이렇게 프로젝트 개발 기간이 종료돼고 11월 13일 최종 발표회 날짜가 됐다 !&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;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;4032&quot; data-origin-height=&quot;3024&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Ti6t1/dJMcabvPllJ/J14K51W70nCIraVyBVu8p1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Ti6t1/dJMcabvPllJ/J14K51W70nCIraVyBVu8p1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Ti6t1/dJMcabvPllJ/J14K51W70nCIraVyBVu8p1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FTi6t1%2FdJMcabvPllJ%2FJ14K51W70nCIraVyBVu8p1%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;4032&quot; height=&quot;3024&quot; data-origin-width=&quot;4032&quot; data-origin-height=&quot;3024&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이렇게 길다면 길고 짧다면 짧은 카카오테크캠퍼스 3기가 끝을 맺었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;카테캠을 시작하던 지난 4월의 나와 비교했을 때, 나는 많이 성장했는가?&lt;/p&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;이뿐만 아니라 3단계를 수행하면서 협업에서 겪는 어려움, 팀원과 소통 잘하는 방법들.. 여러 소프트 스킬을 배울 수 있었던 것 같다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;당연히 개발 실력도 성장했고.. !&lt;/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;정말 1년을 갈아가며 성장할 수 있는 기회가 흔하지 않고, 누구보다 빠르게 성장할 수 있는 기회는 더더욱 드물다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;카테캠 덕분에 많이 배웠고, 앞으로도 성장하며 괴물 신인 개발자가 되겠습니다 !!!&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;빌어먹게 감사했습니다 !!!!!!!!!!!!!!!!!!&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;매니저님들 1년간 소통해주시느라 정말 많이 고생하셨습니다 !!&lt;/p&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&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;491&quot; data-origin-height=&quot;802&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/uW1HE/dJMcabo3HzW/ZJAghpss1wpuNxim6FjO7k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/uW1HE/dJMcabo3HzW/ZJAghpss1wpuNxim6FjO7k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/uW1HE/dJMcabo3HzW/ZJAghpss1wpuNxim6FjO7k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FuW1HE%2FdJMcabo3HzW%2FZJAghpss1wpuNxim6FjO7k%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;432&quot; height=&quot;706&quot; data-origin-width=&quot;491&quot; data-origin-height=&quot;802&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <author>oopt1234</author>
      <guid isPermaLink="true">https://oopt1234.tistory.com/22</guid>
      <comments>https://oopt1234.tistory.com/22#entry22comment</comments>
      <pubDate>Wed, 19 Nov 2025 18:35:10 +0900</pubDate>
    </item>
    <item>
      <title>  2025 ACPC AWS x Codetree 프로그래밍 경진대회  </title>
      <link>https://oopt1234.tistory.com/21</link>
      <description>&lt;p style=&quot;color: #444444;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;a style=&quot;color: #666666; text-align: start;&quot;&gt;[ 홍보 게시 이벤트 참가용 글 및 포스터 ]&lt;br /&gt;&lt;br /&gt;  2025 ACPC AWS x Codetree 프로그래밍 경진대회  &lt;br /&gt;&lt;br /&gt;프로그래밍 실력을 뽐낼 준비가 되셨나요? 세계 최고의 클라우드 서비스인 AWS 인프라를 활용하여, 국제정보올림피아드 출신들로 구성된 코드트리 팀이 직접 출제 및 관리하는 프로그래밍 경진대회가 열립니다!&lt;br /&gt;&lt;br /&gt;✅ 온라인 예선: 4월 21일(월) ~ 5월 16일(금)&lt;br /&gt;✅ 본선 대회: 5월 25일(일) 13:00~17:00 (AWS 코리아 본사)&lt;br /&gt;✅ 참가 자격: 대학(원) 재학생 또는 휴학생&lt;br /&gt;✅ 사용 가능 언어: Python, Java, C/C++&lt;br /&gt;&lt;br /&gt;최대 300만원의 상금과 국제정보올림피아드(IOI), ICPC 수상자들의 멘토링 기회까지!&lt;br /&gt;지금 바로 참가 신청하고 최고의 알고리즘 대회에서 당신의 역량을 펼쳐보세요.&lt;br /&gt;&lt;br /&gt;  참가 신청:&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/a&gt;&lt;a href=&quot;https://discord.com/invite/6nSjApMwmF&quot;&gt;https://discord.com/invite/6nSjApMwmF&lt;/a&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;(ACPC 디스코드 채널)&lt;br /&gt;&lt;br /&gt;&lt;a style=&quot;color: #588d92;&quot; href=&quot;https://everytime.kr/375208/hashtag/ACPC&quot;&gt;#ACPC&lt;/a&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;a style=&quot;color: #588d92;&quot; href=&quot;https://everytime.kr/375208/hashtag/AWS&quot;&gt;#AWS&lt;/a&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;a style=&quot;color: #588d92;&quot; href=&quot;https://everytime.kr/375208/hashtag/Codetree&quot;&gt;#Codetree&lt;/a&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;a style=&quot;color: #588d92;&quot; href=&quot;https://everytime.kr/375208/hashtag/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D%EA%B2%BD%EC%A7%84%EB%8C%80%ED%9A%8C&quot;&gt;#프로그래밍경진대회&lt;/a&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;a style=&quot;color: #588d92;&quot; href=&quot;https://everytime.kr/375208/hashtag/%EB%8C%80%ED%95%99%EC%83%9D&quot;&gt;#대학생&lt;/a&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;a style=&quot;color: #588d92;&quot; href=&quot;https://everytime.kr/375208/hashtag/%EA%B0%9C%EB%B0%9C%EC%9E%90&quot;&gt;#개발자&lt;/a&gt;&lt;/p&gt;</description>
      <author>oopt1234</author>
      <guid isPermaLink="true">https://oopt1234.tistory.com/21</guid>
      <comments>https://oopt1234.tistory.com/21#entry21comment</comments>
      <pubDate>Wed, 14 May 2025 04:35:44 +0900</pubDate>
    </item>
    <item>
      <title>백준 [3085 사탕 게임] 파이썬 풀이</title>
      <link>https://oopt1234.tistory.com/20</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1734&quot; data-origin-height=&quot;1266&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/7Ga2t/btsMtumvAZX/f6l0YWbktzFKCzRpBLSJPk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/7Ga2t/btsMtumvAZX/f6l0YWbktzFKCzRpBLSJPk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/7Ga2t/btsMtumvAZX/f6l0YWbktzFKCzRpBLSJPk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F7Ga2t%2FbtsMtumvAZX%2Ff6l0YWbktzFKCzRpBLSJPk%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;1734&quot; height=&quot;1266&quot; data-origin-width=&quot;1734&quot; data-origin-height=&quot;1266&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;1774&quot; data-origin-height=&quot;1140&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bT9VxE/btsMsOlI9Lu/rhIEogRjSXPaf3r9haBPs1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bT9VxE/btsMsOlI9Lu/rhIEogRjSXPaf3r9haBPs1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bT9VxE/btsMsOlI9Lu/rhIEogRjSXPaf3r9haBPs1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbT9VxE%2FbtsMsOlI9Lu%2FrhIEogRjSXPaf3r9haBPs1%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;1774&quot; height=&quot;1140&quot; data-origin-width=&quot;1774&quot; data-origin-height=&quot;1140&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h3 style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span&gt; &lt;/span&gt;&amp;nbsp;문제 탐색하기&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc; color: #333333; text-align: start;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;list-style-type: disc; color: #000000;&quot;&gt;N X N 크기의 보드에 4가지 종류의 사탕(C, P, Z, Y)이 놓여져 있다.&lt;/li&gt;
&lt;li style=&quot;list-style-type: disc; color: #000000;&quot;&gt;색이 다른 인접한 두 사탕의 위치를 바꾼 후, 보드에서 같은 행이나 열에 같은 색상의 사탕이 연속으로 놓여져있는 최대 개수를 세어야 한다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p style=&quot;color: #222222; text-align: start;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;  알고리즘 선택&lt;/span&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc; color: #333333; text-align: start;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;list-style-type: disc; color: #000000;&quot;&gt;브루트 포스 알고리즘을 활용하여 보드 전체에 대해서 사탕 교환 과정을 처리해야 할 것 같다.&lt;/li&gt;
&lt;li style=&quot;list-style-type: disc; color: #000000;&quot;&gt;한 좌표에 대해서 상, 하, 우 범위에 자신과 다른 색의 사탕이 있다면 둘의 위치를 바꾸고, 현재 보드판에 같은 색상의 사탕이 직선 상에 몇개 놓여져 있는지 확인하는 함수를 구현하여 최대 값을 찾아야 할 것 같다.&amp;nbsp;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span&gt; &lt;/span&gt;&amp;nbsp;코드 설계하기&lt;/h3&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;1. 문제의 input을 입력 받아서 원본 보드판을 구현한다.&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;2. 원본 보드판에서 일렬로 놓여진 사탕의 최대 개수를 구한다.&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;3. 보드판에 같은 색으로 놓여진 사탕이 일직선 상에 몇개 있는지 판별하는 check_board 함수를 구현한다.&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;4. 보드판을 차례대로 돌면서 오른쪽, 아래쪽 범위에 자신과 다른 사탕이 놓여져 있다면 둘의 위치를 바꾸고, check_board 함수를 호출하여 바뀐 사탕들이 포함된 행과 열에 놓여진 사탕의 최대 개수를 저장한다.&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;(오른쪽 방향으로 순차적으로 탐색하므로 왼쪽, 위쪽방향은 계산X)&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;5. 보드판의 전체 범위를 돌고, 함수를 통해 구한 사탕의 최대 개수를 호출한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span&gt; &lt;/span&gt;&amp;nbsp;시도 회차 수정 사항 (Optional)&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1회차&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;기존에는 사탕의 위치를 변경하고, 전체 보드판에 대해서 일자로 놓인 사탕의 개수를 세도록 했었으나, 수행 시간을 단축하고 싶어서 바뀐 사탕이 위치한 행과 열에서만 개수 판단을 하도록 수정하였다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;844&quot; data-origin-height=&quot;92&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/T4hYj/btsMtRofb6i/GJdtUmZOM23VccH0TbPkf1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/T4hYj/btsMtRofb6i/GJdtUmZOM23VccH0TbPkf1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/T4hYj/btsMtRofb6i/GJdtUmZOM23VccH0TbPkf1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FT4hYj%2FbtsMtRofb6i%2FGJdtUmZOM23VccH0TbPkf1%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;844&quot; height=&quot;92&quot; data-origin-width=&quot;844&quot; data-origin-height=&quot;92&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;기존 방식에 비해서 수정한 방식이 수행 시간이 훨씬 빠른걸 볼 수 있음.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;기존 코드&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1740230412589&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;n = int(input())
board = [list(input()) for _ in range(n)]
answer = 1

def check_board():
    global answer
    for i in range(n):
        row_count = 1  
        col_count = 1  

        for j in range(n - 1):
            # 행 검사
            if board[i][j] == board[i][j+1]:
                row_count += 1
            else:
                row_count = 1

            # 열 검사
            if board[j][i] == board[j+1][i]:
                col_count += 1
            else:
                col_count = 1

            answer = max(answer, row_count, col_count)


dx = [0, 1] # 오른쪽 방향으로 순차적으로 탐색하므로 왼쪽, 위쪽 방향은 구하지 않음
dy = [1, 0]

for i in range(n):
    for j in range(n):
        currentColor = board[i][j]
        for k in range(2):
            nx = i + dx[k]
            ny = j + dy[k]
            if n &amp;gt; nx &amp;gt;= 0 and n &amp;gt; ny &amp;gt;= 0 and currentColor != board[nx][ny]:
                board[i][j], board[nx][ny] = board[nx][ny], board[i][j]
                check_board()
                board[i][j], board[nx][ny] = board[nx][ny], board[i][j]

print(answer)&lt;/code&gt;&lt;/pre&gt;
&lt;h3 style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;&amp;nbsp;&lt;/h3&gt;
&lt;h3 style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span&gt; &lt;/span&gt;&amp;nbsp;정답 코드&lt;/h3&gt;
&lt;pre id=&quot;code_1740228965597&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;n = int(input())
board = [list(input()) for _ in range(n)]
answer = 1

# 원본 보드에서 개수 세기기
for i in range(n):
    row_count = 1  
    col_count = 1  

    for j in range(n - 1):
        # 행 검사
        if board[i][j] == board[i][j+1]:
            row_count += 1
        else:
            row_count = 1

        # 열 검사
        if board[j][i] == board[j+1][i]:
            col_count += 1
        else:
            col_count = 1

        answer = max(answer, row_count, col_count)

def check_board(i, j, nx, ny, k):
    global answer
    if k == 0: # 오른쪽 사탕과 교환
        a = board[i]
        b = [r[j] for r in board]
        c = [r[ny] for r in board]
        
    elif k == 1: # 아래쪽 사탕과 교환
        a = board[i]
        b = board[nx]
        c = [r[j] for r in board]
        
    data = [a, b, c]
    for s in data:
        count = 1
        for idx in range(n-1):
            if s[idx] == s[idx+1]:
                count += 1
            else:
                count = 1
            answer = max(answer, count)

dx = [0, 1] # 오른쪽 방향으로 순차적으로 탐색하므로 왼쪽, 위쪽 방향은 구하지 않음
dy = [1, 0]

for i in range(n):
    for j in range(n):
        currentColor = board[i][j]
        for k in range(2):
            nx = i + dx[k]
            ny = j + dy[k]
            if n &amp;gt; nx &amp;gt;= 0 and n &amp;gt; ny &amp;gt;= 0 and currentColor != board[nx][ny]:
                board[i][j], board[nx][ny] = board[nx][ny], board[i][j]
                check_board(i, j, nx, ny, k)
                board[i][j], board[nx][ny] = board[nx][ny], board[i][j]

print(answer)&lt;/code&gt;&lt;/pre&gt;</description>
      <author>oopt1234</author>
      <guid isPermaLink="true">https://oopt1234.tistory.com/20</guid>
      <comments>https://oopt1234.tistory.com/20#entry20comment</comments>
      <pubDate>Sat, 22 Feb 2025 21:56:47 +0900</pubDate>
    </item>
    <item>
      <title>백준 [13901 로봇] 파이썬 풀이</title>
      <link>https://oopt1234.tistory.com/19</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1856&quot; data-origin-height=&quot;1222&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bHRiLu/btsMqKDGNrP/Lfv8R62J7nuboYxBMq4WrK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bHRiLu/btsMqKDGNrP/Lfv8R62J7nuboYxBMq4WrK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bHRiLu/btsMqKDGNrP/Lfv8R62J7nuboYxBMq4WrK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbHRiLu%2FbtsMqKDGNrP%2FLfv8R62J7nuboYxBMq4WrK%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;1856&quot; height=&quot;1222&quot; data-origin-width=&quot;1856&quot; data-origin-height=&quot;1222&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1852&quot; data-origin-height=&quot;806&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bk9V9q/btsMru1nz5H/QklMxd5JqZmeQ31WKOvKPK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bk9V9q/btsMru1nz5H/QklMxd5JqZmeQ31WKOvKPK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bk9V9q/btsMru1nz5H/QklMxd5JqZmeQ31WKOvKPK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbk9V9q%2FbtsMru1nz5H%2FQklMxd5JqZmeQ31WKOvKPK%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;1852&quot; height=&quot;806&quot; data-origin-width=&quot;1852&quot; data-origin-height=&quot;806&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h3 style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span&gt; &lt;/span&gt;&amp;nbsp;문제 탐색하기&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc; color: #333333; text-align: start;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;list-style-type: disc; color: #000000;&quot;&gt;R X C 크기의 방에서 로봇에게 이동 방향을 미리 주고 이동시켜 로봇의 최종 위치를 판단하는 문제이다.&lt;/li&gt;
&lt;li style=&quot;list-style-type: disc; color: #000000;&quot;&gt;로봇은 장애물이 있는 좌표로는 이동이 불가능하고, 왔던 길로도 이동할 수 없다.&lt;/li&gt;
&lt;li style=&quot;list-style-type: disc; color: #000000;&quot;&gt;로봇에게 주어진 방향이 장애물이나 왔던 길로 가는 방향이라면 다음 이동 방향으로 움직일 수 있다.&lt;/li&gt;
&lt;li style=&quot;list-style-type: disc; color: #000000;&quot;&gt;주어진 이동 방향의 마지막까지 이동했다면 방향 설정을 처음부터 다시 한다.&lt;/li&gt;
&lt;li style=&quot;list-style-type: disc; color: #000000;&quot;&gt;방향이 (1, 2, 3, 4)로 주어졌다면 (1, 2, 3, 4 방향으로 이동하다가 다시 1로 이동함)&lt;/li&gt;
&lt;/ul&gt;
&lt;p style=&quot;color: #222222; text-align: start;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;  알고리즘 선택&lt;/span&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc; color: #333333; text-align: start;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;list-style-type: disc; color: #000000;&quot;&gt;2차원 배열을 통해 방과 방의 내부를 구현하고, 로봇의 현재 좌표를 수정해가면서 움직임을 구현해야 한다.&lt;/li&gt;
&lt;li style=&quot;list-style-type: disc; color: #000000;&quot;&gt;로봇이 주어진 이동 방향에 따라 움직이다가 장애물, 왔던 길, 벽을 만나면 이동 방향을 다음 방향으로 바꿔서 계속 이동하게 하고, 이동 방향을 바꿨을 때 마다 blockCount를 세어서 주어진 방향의 갯수와 동일해지면 더 이상 움직일 수 없다고 판단하여 최종 좌표를 출력한다.&lt;/li&gt;
&lt;li style=&quot;list-style-type: disc; color: #000000;&quot;&gt;정상적으로 이동을 한번이라도 했다면 blockCount를 다시 0으로 초기화하여 이동을 계속 한다.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span&gt; &lt;/span&gt;&amp;nbsp;코드 설계하기&lt;/h3&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;1. 문제의 input을 입력 받아서 r, c (방의 크기)에 값을 할당한다.&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;2. r x c 크기의 2차원 배열 room 리스트를 만들고, 장애물의 위치를 입력 받아서 room에 'x'로 표시한다.&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;3. 로봇이 더 이상 움직일 수 없을 때 까지 주어진 조건에 따라 로봇을 이동 방향에 따라서 움직인다.&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;4. &lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;현재 방향에 따라 맞게 이동했다면&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;지나온 길은 room에 1로 저장하고 로봇의 x, y 좌표를 바꿔주고, blockCount를 0으로 초기화 한다.&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;5. 방향을 따라서 이동했으나 이동할 수 없는 좌표라면 blockCount +1를 해서 막힌 횟수를 세고, idx +1를 해서 이동 방향을 다음 방향으로 바꿔준다.&lt;/p&gt;
&lt;h3 style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span&gt; &lt;/span&gt;&amp;nbsp;시도 회차 수정 사항 (Optional)&lt;/h3&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;1회차&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;pre id=&quot;code_1740115771807&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;dx = [-1, 1, 0, 0]
dy = [0, 0, -1, 1]

nx = x + dx[direction[idx % len(direction)] - 1]
ny = y + dy[direction[idx % len(direction)] - 1]&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다음과 같이 idx % len(direction)을 해서 이동 방향을 처음부터 끝까지 반복할 수 있도록 하였고, dx의 인덱스가 0부터 시작하므로 direction[idx % len(direction)] - 1를 해줘서 사용자가 이동 방향을 1로 설정했을 때, dx와 dy에서 0번 인덱스를 불러오도록 하였다.&lt;/p&gt;
&lt;h3 style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span&gt; &lt;/span&gt;&amp;nbsp;정답 코드&lt;/h3&gt;
&lt;pre id=&quot;code_1740114809380&quot; class=&quot;python&quot; style=&quot;background-color: #f8f8f8; color: #383a42; text-align: start;&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;r, c = map(int, input().split())

room = [[0] * c for _ in range(r)]

object = int(input())
obPos = []
for i in range(object):
    x, y = map(int, input().split())
    obPos.append((x, y))

startX, startY = map(int, input().split())

direction = list(map(int, input().split()))

for i, j in obPos:
    room[i][j] = 'x'

dx = [-1, 1, 0, 0]
dy = [0, 0, -1, 1]

x = startX
y = startY
idx = 0
flag = True
blockCount = 0
while(flag):
    nx = x + dx[direction[idx % len(direction)] - 1]
    ny = y + dy[direction[idx % len(direction)] - 1]
    
    if (r &amp;gt; nx &amp;gt;= 0 and c &amp;gt; ny &amp;gt;= 0 and room[nx][ny] == 0):
        room[x][y] = 1
        x = nx
        y = ny
        blockCount =    0
    else:
        if blockCount == len(direction):
            flag = False
            print(x, y)
        blockCount += 1
        idx += 1&lt;/code&gt;&lt;/pre&gt;</description>
      <author>oopt1234</author>
      <guid isPermaLink="true">https://oopt1234.tistory.com/19</guid>
      <comments>https://oopt1234.tistory.com/19#entry19comment</comments>
      <pubDate>Fri, 21 Feb 2025 14:31:21 +0900</pubDate>
    </item>
    <item>
      <title>백준 [2823 유턴 싫어] 파이썬 풀이</title>
      <link>https://oopt1234.tistory.com/18</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1746&quot; data-origin-height=&quot;1434&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/sMdgu/btsMqaJBhI9/40DAGHvV300wzgl4pgQMy1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/sMdgu/btsMqaJBhI9/40DAGHvV300wzgl4pgQMy1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/sMdgu/btsMqaJBhI9/40DAGHvV300wzgl4pgQMy1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FsMdgu%2FbtsMqaJBhI9%2F40DAGHvV300wzgl4pgQMy1%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;1746&quot; height=&quot;1434&quot; data-origin-width=&quot;1746&quot; data-origin-height=&quot;1434&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1764&quot; data-origin-height=&quot;1124&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/lysLu/btsMsMtmCYg/UhZiUUWyEoNKOpjjfLgsz0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/lysLu/btsMsMtmCYg/UhZiUUWyEoNKOpjjfLgsz0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/lysLu/btsMsMtmCYg/UhZiUUWyEoNKOpjjfLgsz0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FlysLu%2FbtsMsMtmCYg%2FUhZiUUWyEoNKOpjjfLgsz0%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;1764&quot; height=&quot;1124&quot; data-origin-width=&quot;1764&quot; data-origin-height=&quot;1124&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h3 style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span&gt; &lt;/span&gt;&amp;nbsp;문제 탐색하기&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc; color: #333333; text-align: start;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;list-style-type: disc; color: #000000;&quot;&gt;R X C 크기의 지도에 빌딩(X), 도로(.)이 표시되어 있다. 임의의 도로 한 점에서 시작했을 때, 유턴을 하지 않고 시작 지점으로 돌아올 수 있는지 판단하는 문제이다.&lt;/li&gt;
&lt;li style=&quot;list-style-type: disc; color: #000000;&quot;&gt;문제에서 말하는 유턴이란 (1, 1) 위치에서 (1, 2)로 이동한 후, 바로 다시 (1, 1)로 이동하는 것을 말한다.&lt;/li&gt;
&lt;li style=&quot;list-style-type: disc; color: #000000;&quot;&gt;즉 유턴을 하지 않고 원점으로 돌아가기 위해서는 현재 위치해 있는 도로와 연결된 다른 도로가 최소 2개 이상이어야 한다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p style=&quot;color: #222222; text-align: start;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;  알고리즘 선택&lt;/span&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc; color: #333333; text-align: start;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;list-style-type: disc; color: #000000;&quot;&gt;지도에 있는 임의의 도로에서 BFS를 활용하여 상하좌우에 다른 도로가 2개 이상인지 확인하면 될 것 같다.&lt;/li&gt;
&lt;li style=&quot;list-style-type: disc; color: #000000;&quot;&gt;모든 도로가 서로 연결되어 있으므로 어느 점에서 시작하든 상관이 없을 것이다.&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1740114322607&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;def BFS(start):
    queue = deque([start])
    visited[start[0]][start[1]] = 1
    while queue:
        count = 0
        x, y = queue.popleft()
        for i in range(4):
            nx = x + dx[i]
            ny = y + dy[i]
            if r &amp;gt; nx &amp;gt;= 0 and c &amp;gt; ny &amp;gt;= 0 and map[nx][ny] == '.':
                count += 1
                
                if visited[nx][ny] == False:
                    visited[nx][ny] = True
                    queue.append((nx, ny))
                    
        if count &amp;lt; 2:
            return 1
        
    return 0&lt;/code&gt;&lt;/pre&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;다음과 같이 BFS 내부에서 네 방향을 탐색하고, 각각의 좌표가 유효한 범위이고 도로가 맞으면 count를 1 증가시킨다.&lt;/li&gt;
&lt;li&gt;네 방향을 모두 탐색했을 때, count가 2보다 작다면 유턴 없이 원점으로 돌아갈 수 없다고 판단하여 1을 return하고 그렇지 않다면 계속 BFS를 탐색하게 했다.&amp;nbsp;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span&gt; &lt;/span&gt;&amp;nbsp;코드 설계하기&lt;/h3&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;1. 문제의 input을 받아서 r, c, map을 구현한다.&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;2. r x c 크기만큼 visited 리스트를 생성하여 방문 유무를 관리한다.&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;3. 위에 기술했던 것 같이 BFS를 구현하고 임의의 도로부터 탐색을 시작하여 연결된 도로가 2개 이상인지 확인한다.&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;4. BFS에서 return된 값을 출력한다.&lt;/p&gt;
&lt;h3 style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span&gt; &lt;/span&gt;&amp;nbsp;시도 회차 수정 사항 (Optional)&lt;/h3&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;1회차&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;실수로 BFS 함수 내부에서 count 갯수를 판단할 때, 조건문을 if count &amp;lt; 1로 해버려서 틀렸음.&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;-&amp;gt; 도로가 2개 이상이어야 유턴 없이 원점으로 돌아갈 수 있으므로 조건문을 if count &amp;lt; 2로 수정함.&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span&gt; &lt;/span&gt;&amp;nbsp;정답 코드&lt;/h3&gt;
&lt;pre id=&quot;code_1740114066612&quot; class=&quot;python&quot; style=&quot;background-color: #f8f8f8; color: #383a42; text-align: start;&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;from collections import deque
r, c = map(int, input().split())

map = []
for i in range(r):
    map.append(input())

visited = [[False] * c for _ in range(r)]

dx = [0, 0, 1, -1]
dy = [1, -1, 0, 0]

def BFS(start):
    queue = deque([start])
    visited[start[0]][start[1]] = 1
    while queue:
        count = 0
        x, y = queue.popleft()
        for i in range(4):
            nx = x + dx[i]
            ny = y + dy[i]
            if r &amp;gt; nx &amp;gt;= 0 and c &amp;gt; ny &amp;gt;= 0 and map[nx][ny] == '.':
                count += 1
                
                if visited[nx][ny] == False:
                    visited[nx][ny] = True
                    queue.append((nx, ny))
                    
        if count &amp;lt; 2:
            return 1
        
    return 0

for i in range(r):
    for j in range(c):
        if map[i][j] == '.':
            start = (i, j)

print(BFS(start))&lt;/code&gt;&lt;/pre&gt;</description>
      <author>oopt1234</author>
      <guid isPermaLink="true">https://oopt1234.tistory.com/18</guid>
      <comments>https://oopt1234.tistory.com/18#entry18comment</comments>
      <pubDate>Fri, 21 Feb 2025 14:12:07 +0900</pubDate>
    </item>
    <item>
      <title>백준 [2659 십자카드 문제] 파이썬 풀이</title>
      <link>https://oopt1234.tistory.com/17</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1746&quot; data-origin-height=&quot;1162&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/3IdCc/btsMo8Zfa54/ctKvj3csZYdqxo6OhGmho0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/3IdCc/btsMo8Zfa54/ctKvj3csZYdqxo6OhGmho0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/3IdCc/btsMo8Zfa54/ctKvj3csZYdqxo6OhGmho0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F3IdCc%2FbtsMo8Zfa54%2FctKvj3csZYdqxo6OhGmho0%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;1746&quot; height=&quot;1162&quot; data-origin-width=&quot;1746&quot; data-origin-height=&quot;1162&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1780&quot; data-origin-height=&quot;902&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/boEujr/btsMqJ4S7H7/Bu317fwFPFawDMpRKbKb40/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/boEujr/btsMqJ4S7H7/Bu317fwFPFawDMpRKbKb40/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/boEujr/btsMqJ4S7H7/Bu317fwFPFawDMpRKbKb40/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FboEujr%2FbtsMqJ4S7H7%2FBu317fwFPFawDMpRKbKb40%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;1780&quot; height=&quot;902&quot; data-origin-width=&quot;1780&quot; data-origin-height=&quot;902&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h3 style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span&gt; &lt;/span&gt;&amp;nbsp;문제 탐색하기&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc; color: #333333; text-align: start;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;list-style-type: disc; color: #000000;&quot;&gt;십자 모양의 카드의 모서리에 1~9까지 숫자가 쓰여져있을 때, 한 숫자를 기점으로 시계 방향으로 돌렸을 때 얻어지는 수들 중에서 가장 작은 수를 시계수라고 한다.&lt;/li&gt;
&lt;li style=&quot;list-style-type: disc; color: #000000;&quot;&gt;주어진 입력에 대해서 구할 수 있는 시계수가 모든 시계수 중에서 몇 번째로 작은지 확인해야 한다.&lt;/li&gt;
&lt;li style=&quot;list-style-type: disc; color: #000000;&quot;&gt;만들 수 있는 시계수를 모두 구해서 리스트에 정렬해두고, 입력으로 받은 값에서 시계수를 찾아 몇 번째로 작은지 구하면 될 것 같다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p style=&quot;color: #222222; text-align: start;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;  알고리즘 선택&lt;/span&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc; color: #333333; text-align: start;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;list-style-type: disc; color: #000000;&quot;&gt;브루트포스를 활용하여 1111부터 입력된 값의 시계수까지 시계수를 모두 구해서 리스트로 만들어야 한다.&lt;/li&gt;
&lt;li style=&quot;list-style-type: disc; color: #000000;&quot;&gt;주어진 값의 시계수를 구하기 위해 각각의 자릿수부터 시계 방향으로 4자리 숫자를 구성한다.&lt;/li&gt;
&lt;li style=&quot;list-style-type: disc; color: #000000;&quot;&gt;그렇게 구해진 4자리 숫자 4개 중에서 가장 작은 값을 시계수라 판단하고, 시계수를 저장하는 리스트에 추가한다.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span&gt; &lt;/span&gt;&amp;nbsp;코드 설계하기&lt;/h3&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;1. 문제의 input을 받고 join()을 통해 string 형태로 값을 저장한다.&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;2. input 값의 0, 1, 2, 3번 인덱스부터 각각 시계 방향으로 값을 구해서 inputClock 리스트에 저장한다.&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;3. inputClock 리스트에서 가장 작은 값이 입력 값에 대한 시계수가 된다.&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;4. 1111부터 입력 값의 시계수까지 위 과정을 반복하여 각각의 숫자에 대한 시계수를 구하고 clockNum 리스트에 저장한다.&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;5. clockNum 리스트에서 입력 값의 시계수의 인덱스를 찾아서 출력한다.&lt;/p&gt;
&lt;h3 style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span&gt; &lt;/span&gt;&amp;nbsp;시도 회차 수정 사항 (Optional)&lt;/h3&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;1회차&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;전체 시계수 리스트를 만들 때, 1111~9999까지 모든 네 자리 수에 대한 시계수를 구하게 했었는데&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;(사실 9999까지 구해도 시간 초과 에러는 발생하지 않는다..)&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;아무튼 실행 시간을 줄이기 위해서 for i in range(1111, 10000) 에서 for i in range(1111, min(inputClock)+1)로 코드를 수정해줬다.&lt;/p&gt;
&lt;h3 style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span&gt; &lt;/span&gt;&amp;nbsp;정답 코드&lt;/h3&gt;
&lt;pre id=&quot;code_1740045083636&quot; class=&quot;python&quot; style=&quot;background-color: #f8f8f8; color: #383a42; text-align: start;&quot; data-ke-type=&quot;codeblock&quot; data-ke-language=&quot;python&quot;&gt;&lt;code&gt;inputNum = ''.join(input().split())
inputClock = []
for i in range(4):
    temp = int(inputNum[i:] + inputNum[:i])
    inputClock.append(temp)

clockNum = []
for i in range(1111, min(inputClock)+1):
    i = str(i)
    if '0' not in i:
        check = []
        for j in range(4):
            temp = int(i[j:] + i[:j])
            check.append(temp)
        if min(check) not in clockNum:
            clockNum.append(min(check))


print(clockNum.index(min(inputClock)) + 1)&lt;/code&gt;&lt;/pre&gt;</description>
      <author>oopt1234</author>
      <guid isPermaLink="true">https://oopt1234.tistory.com/17</guid>
      <comments>https://oopt1234.tistory.com/17#entry17comment</comments>
      <pubDate>Thu, 20 Feb 2025 19:07:18 +0900</pubDate>
    </item>
    <item>
      <title>백준 [2012 등수 매기기] 파이썬 풀이</title>
      <link>https://oopt1234.tistory.com/16</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1876&quot; data-origin-height=&quot;1200&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/EkNiE/btsMnMnUN9j/wVPKacrP7CGHk5IBpF7xIk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/EkNiE/btsMnMnUN9j/wVPKacrP7CGHk5IBpF7xIk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/EkNiE/btsMnMnUN9j/wVPKacrP7CGHk5IBpF7xIk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FEkNiE%2FbtsMnMnUN9j%2FwVPKacrP7CGHk5IBpF7xIk%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;1876&quot; height=&quot;1200&quot; data-origin-width=&quot;1876&quot; data-origin-height=&quot;1200&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1864&quot; data-origin-height=&quot;452&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dvsFe1/btsMoQpomrG/cfEdk3CK7bTdmYrJ3pgHJ0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dvsFe1/btsMoQpomrG/cfEdk3CK7bTdmYrJ3pgHJ0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dvsFe1/btsMoQpomrG/cfEdk3CK7bTdmYrJ3pgHJ0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdvsFe1%2FbtsMoQpomrG%2FcfEdk3CK7bTdmYrJ3pgHJ0%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;1864&quot; height=&quot;452&quot; data-origin-width=&quot;1864&quot; data-origin-height=&quot;452&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h3 style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span&gt;&lt;br /&gt; &lt;/span&gt;&amp;nbsp;문제 탐색하기&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc; color: #333333; text-align: start;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;list-style-type: disc; color: #000000;&quot;&gt;N명의 학생의 예상 등수가 N개의 줄에 걸쳐서 입력된다.&lt;/li&gt;
&lt;li style=&quot;list-style-type: disc; color: #000000;&quot;&gt;예상 등수와 실제 등수의 차이인 불만도가 최소가 되도록 실제 등수를 배정해야 한다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p style=&quot;color: #222222; text-align: start;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;  알고리즘 선택&lt;/span&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc; color: #333333; text-align: start;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;list-style-type: disc; color: #000000;&quot;&gt;그리디 알고리즘을 사용해서 주어진 상황에서 가장 좋은 것만 고르게 해야할 것 같다.&lt;/li&gt;
&lt;li style=&quot;list-style-type: disc; color: #000000;&quot;&gt;예상 등수를 오름차순으로 정렬하고 인덱스에 따른 실제 등수와의 차이를 구하면 불만도를 최소화 할 수 있다.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span&gt; &lt;/span&gt;&amp;nbsp;코드 설계하기&lt;/h3&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;1. 문제의 input을 리스트 형식으로 입력받음&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;2. 저장한 예상 점수를 오름차순으로 정렬함&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;3. for문을 활용해 인덱스에 따른 실제 등수와 예상 등수의 차이의 절댓값을 계산하여 diff 변수에 더해줌&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;4. diff 값을 출력함&lt;/p&gt;
&lt;h3 style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span&gt; &lt;/span&gt;&amp;nbsp;시도 회차 수정 사항 (Optional)&lt;/h3&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;1회차&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;문제의 입력을 받을 때 input()으로 받게 했는데, 시간 초과가 발생함.&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;input() -&amp;gt; sys.stdin.readline()으로 변경하여 해결.&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span&gt; &lt;/span&gt;&amp;nbsp;정답 코드&lt;/h3&gt;
&lt;pre id=&quot;code_1739945108781&quot; class=&quot;python&quot; style=&quot;background-color: #f8f8f8; color: #383a42; text-align: start;&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import sys

n = int(sys.stdin.readline())

rank = []

for _ in range(n):
    rank.append(int(sys.stdin.readline()))
    
rank.sort()
diff = 0
for i in range(n):
    diff += abs(rank[i] - (i+1))

print(diff)&lt;/code&gt;&lt;/pre&gt;</description>
      <author>oopt1234</author>
      <guid isPermaLink="true">https://oopt1234.tistory.com/16</guid>
      <comments>https://oopt1234.tistory.com/16#entry16comment</comments>
      <pubDate>Wed, 19 Feb 2025 15:14:51 +0900</pubDate>
    </item>
    <item>
      <title>백준 [4803 트리] 파이썬 풀이</title>
      <link>https://oopt1234.tistory.com/15</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1874&quot; data-origin-height=&quot;1198&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bFxCUt/btsMm2RFkOq/PI0AffYe2VbfxbTHPC2yu1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bFxCUt/btsMm2RFkOq/PI0AffYe2VbfxbTHPC2yu1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bFxCUt/btsMm2RFkOq/PI0AffYe2VbfxbTHPC2yu1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbFxCUt%2FbtsMm2RFkOq%2FPI0AffYe2VbfxbTHPC2yu1%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;1874&quot; height=&quot;1198&quot; data-origin-width=&quot;1874&quot; data-origin-height=&quot;1198&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1860&quot; data-origin-height=&quot;928&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/pJXL8/btsMnx4Oxci/VCLc78flaiOtjhD8TMuYU1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/pJXL8/btsMnx4Oxci/VCLc78flaiOtjhD8TMuYU1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/pJXL8/btsMnx4Oxci/VCLc78flaiOtjhD8TMuYU1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FpJXL8%2FbtsMnx4Oxci%2FVCLc78flaiOtjhD8TMuYU1%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;1860&quot; height=&quot;928&quot; data-origin-width=&quot;1860&quot; data-origin-height=&quot;928&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h3 style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span&gt; &lt;/span&gt;&amp;nbsp;문제 탐색하기&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc; color: #333333; text-align: start;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;list-style-type: disc; color: #000000;&quot;&gt;입력으로 여러 개의 테스트 케이스가 주어지며 각각의 테스트 케이스에서는 노드와 간선의 갯수, 간선의 구성 노드들이 주어진다.&lt;/li&gt;
&lt;li style=&quot;list-style-type: disc; color: #000000;&quot;&gt;해당 테스트 케이스에서 트리가 몇 개 존재하는지 판단하는 문제이다.&lt;/li&gt;
&lt;li style=&quot;list-style-type: disc; color: #000000;&quot;&gt;트리는 사이클이 존재하지 않는 그래프이기 때문에 사이클의 유무 판단이 중요할 것이다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p style=&quot;color: #222222; text-align: start;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;  알고리즘 선택&lt;/span&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc; color: #333333; text-align: start;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;list-style-type: disc; color: #000000;&quot;&gt;&lt;span style=&quot;color: #000000; text-align: left;&quot;&gt;부모와 자식을 구분할 수 없는 간선이 입력으로 주어지므로 간선 정보를 양방향으로 저장할 필요가 있다.&lt;/span&gt;&lt;/li&gt;
&lt;li style=&quot;list-style-type: disc; color: #000000;&quot;&gt;&lt;span style=&quot;color: #000000; text-align: left;&quot;&gt;그 후 BFS를 사용하여 queue를 탐색하는 과정에서 이미 방문했던 노드를 발견하는지 찾아서 사이클을 확인할 수 있다.&lt;/span&gt;&lt;/li&gt;
&lt;li style=&quot;list-style-type: disc; color: #000000;&quot;&gt;&lt;span style=&quot;color: #000000; text-align: left;&quot;&gt;기존 BFS에서는 queue에 값을 추가하면서 방문 표시도 같이 해줬지만, 위와 같은 경우에선 queue에서 값을 뽑으면서 방문 표시를 해줘야한다. 그래야 트리 구조를 그리면서 마지막에 추가된 노드가 사이클을 구성하는지 발견할 수 있다.&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span&gt; &lt;/span&gt;&amp;nbsp;코드 설계하기&lt;/h3&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;1. 문제의 input을 받음.&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;2. 간선 정보를 양방향으로 저장하기 위해 graph[a].append(b), graph[b].append(a)를 하여 노드들 간에 연결을 확인한다.&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;3. BFS를 구현하되, queue에서 값을 뽑으면서 방문 처리를 하도록 세부 설계를 바꿔준다.&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;4. 모든 노드 각각을 시작점으로 하여금 BFS를 하여 연결이 없는 노드가 하나인 트리의 갯수도 세어준다.&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;5. 각각의 테스트 케이스에서 caseNumber와 count(트리 갯수)를 조건에 맞게끔 출력한다.&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span&gt; &lt;/span&gt;&amp;nbsp;시도 회차 수정 사항 (Optional)&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;1회차에 성공&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span&gt; &lt;/span&gt;&amp;nbsp;정답 코드&lt;/h3&gt;
&lt;pre id=&quot;code_1739889838276&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;from collections import deque
import sys

def BFS(start):
    answer = True
    queue = deque([start])
    while queue:
        v = queue.popleft()
        if visited[v] == 1:
            answer = False
        visited[v] = 1
        
        for i in graph[v]:
            if visited[i] == 0:
                queue.append(i)
    return answer

caseNumber = 0

while(True):
    caseNumber += 1
    n, m = map(int, input().split())
    if n == 0 and m == 0:
        break
    visited = [0] * (n+1)
    graph = [[] for _ in range(n+1)]
    for _ in range(m): # 간선 정보 추가
        a, b = map(int, sys.stdin.readline().split())
        graph[a].append(b)
        graph[b].append(a)
        
    count = 0
    for i in range(1, n+1):
        if visited[i] == 1:
            continue
        if BFS(i) is True:
            count += 1
    
    if count == 0:
        print(f&quot;Case {caseNumber}: No trees.&quot;)
    elif count == 1:
        print(f&quot;Case {caseNumber}: There is one tree.&quot;)
    else:
        print(f&quot;Case {caseNumber}: A forest of {count} trees.&quot;)&lt;/code&gt;&lt;/pre&gt;</description>
      <author>oopt1234</author>
      <guid isPermaLink="true">https://oopt1234.tistory.com/15</guid>
      <comments>https://oopt1234.tistory.com/15#entry15comment</comments>
      <pubDate>Tue, 18 Feb 2025 23:44:01 +0900</pubDate>
    </item>
    <item>
      <title>백준 [1916 최소비용 구하기] 파이썬 풀이</title>
      <link>https://oopt1234.tistory.com/14</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1552&quot; data-origin-height=&quot;932&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Pabg5/btsMkCzy72i/UNZK4JzfrIiNLh7MZg1Usk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Pabg5/btsMkCzy72i/UNZK4JzfrIiNLh7MZg1Usk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Pabg5/btsMkCzy72i/UNZK4JzfrIiNLh7MZg1Usk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FPabg5%2FbtsMkCzy72i%2FUNZK4JzfrIiNLh7MZg1Usk%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;1552&quot; height=&quot;932&quot; data-origin-width=&quot;1552&quot; data-origin-height=&quot;932&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1580&quot; data-origin-height=&quot;550&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/daMA44/btsMmZsJiRM/ksOAplqIP8iGfsOTXZUYwk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/daMA44/btsMmZsJiRM/ksOAplqIP8iGfsOTXZUYwk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/daMA44/btsMmZsJiRM/ksOAplqIP8iGfsOTXZUYwk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdaMA44%2FbtsMmZsJiRM%2FksOAplqIP8iGfsOTXZUYwk%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;1580&quot; height=&quot;550&quot; data-origin-width=&quot;1580&quot; data-origin-height=&quot;550&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h3 style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span&gt; &lt;/span&gt;&amp;nbsp;문제 탐색하기&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc; color: #333333; text-align: start;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;list-style-type: disc; color: #000000;&quot;&gt;간선 별로 가중치가 다르고, 음의 가중치가 없는 최단 거리 구하기 문제이다.&lt;/li&gt;
&lt;li style=&quot;list-style-type: disc; color: #000000;&quot;&gt;입력으로 도시(노드)의 갯수, 버스(간선)의 갯수, 버스 정보(출발점, 도착점, 가중치)가 주어진다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p style=&quot;color: #222222; text-align: start;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;  알고리즘 선택&lt;/span&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc; color: #333333; text-align: start;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;list-style-type: disc; color: #000000;&quot;&gt;&lt;span style=&quot;color: #000000; text-align: left;&quot;&gt;가중치가 다르기 때문에 BFS는 사용할 수 없고, 다익스트라 알고리즘을 활용해야 한다.&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span&gt; &lt;/span&gt;&amp;nbsp;코드 설계하기&lt;/h3&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;1. 문제의 input을 받음.&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;2. 버스 정보를 저장할 data 리스트를 만들고, 출발점을 인덱스로 하여 도착점과 가중치를 저장한다.&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;3. 다익스트라 알고리즘을 구현하고, 힙 자료구조를 활용하여 빠른 시간 안에 탐색을 마칠 수 있게 구현한다.&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;4. 도착점의 거리를 출력한다.&lt;/p&gt;
&lt;h3 style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span&gt; &lt;/span&gt;&amp;nbsp;시도 회차 수정 사항 (Optional)&lt;/h3&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;1회차에 성공&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span&gt; &lt;/span&gt;&amp;nbsp;정답 코드&lt;/h3&gt;
&lt;pre id=&quot;code_1739801815349&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import heapq

n = int(input())
m = int(input())
INF = 1e8

data = [[] for _ in range(n+1)]
for i in range(m):
    start, end, cost = map(int, input().split())
    data[start].append((end, cost))

start, end = map(int, input().split())

distance = [INF] * (n+1)

def dijkstra(start):
    distance[start] = 0
    heap = [(0, start)]
    
    while heap:
        cost, current = heapq.heappop(heap)
        if distance[current] &amp;lt; cost:
            continue
        
        for dest, cost in data[current]:
            new_cost = distance[current] + cost
            if distance[dest] &amp;gt; new_cost:
                distance[dest] = new_cost
                heapq.heappush(heap, (new_cost, dest))

dijkstra(start)
print(distance[end])&lt;/code&gt;&lt;/pre&gt;</description>
      <author>oopt1234</author>
      <guid isPermaLink="true">https://oopt1234.tistory.com/14</guid>
      <comments>https://oopt1234.tistory.com/14#entry14comment</comments>
      <pubDate>Mon, 17 Feb 2025 23:22:44 +0900</pubDate>
    </item>
  </channel>
</rss>