<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>히호 노트</title>
    <link>https://hihinote.tistory.com/</link>
    <description></description>
    <language>ko</language>
    <pubDate>Sun, 5 Apr 2026 20:02:39 +0900</pubDate>
    <generator>TISTORY</generator>
    <ttl>100</ttl>
    <managingEditor>hahihi</managingEditor>
    <image>
      <title>히호 노트</title>
      <url>https://tistory1.daumcdn.net/tistory/4072190/attach/d3a1d518e5ba4864a9a718f7c131f373</url>
      <link>https://hihinote.tistory.com</link>
    </image>
    <item>
      <title>2025년 회고</title>
      <link>https://hihinote.tistory.com/230</link>
      <description>&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년이 후딱 가버렸다. 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;주 1회 크로키 그리기는 한 달에 2번 정도만 그린 것 같지만 어떻게든 지속ㅋ 했고&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;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;클린코드&lt;/li&gt;
&lt;li&gt;아무도 상처받지 않는 대화법&lt;/li&gt;
&lt;li&gt;IT 엔지니어를 위한 네트워크 입문책&lt;/li&gt;
&lt;li&gt;소년이 온다&lt;/li&gt;
&lt;li&gt;하이디&lt;/li&gt;
&lt;li&gt;파과&lt;/li&gt;
&lt;li&gt;엑스 (어쩔수가 없다 원작 소설)&lt;/li&gt;
&lt;li&gt;모순&lt;/li&gt;
&lt;li&gt;모비딕(을 1월 초까지 완독함)&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;운동도 여러가지를 해보고 싶었는데, 이것저것 찍먹을 하다가 발목을 접지르고 지하철에서 깔린 이후로 양쪽 발목이 아파져서 필라테스로 정착?하게 됐다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;운동 목록은 다음과 같다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;테니스/헬스(PT)/복싱/필라테스(ing)/수영(놀러가서 맛보기)/달리기&amp;nbsp;&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;또, 여행도 많이 갔다. 국내 여행도 종종 가고 베트남에 휴양차 놀러가서 리조트에서만 있는 대만족스러운 경험도 했다.&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달 수강료 지원도 받았고, 합주도 한 달에 1~2번 나가고 있다. 사실 일이 너무 바빠서 2달 정도는 합주는 못하고 회식에만 참여한 것 같기도 하다 ㅎㅎ..&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;드럼은 꾸준히 다니고 있다. 매주 월요일마다 레슨을 받는데, 사실 연습을 많이 나가야 하는데 점점 바빠져서 갈 체력이 없어서.. 요 근래에는 레슨날에만 드럼을 치게 되는 것 같다. 2026년에는 좀 더 연습을 많이 해야지...&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;회사일은 일년차였지만 너무 바빴고 정신없었다. AWS 행사가 끊임없이 있었고, 국내 출장도 한 달에 2~3번 정도 있었다. 본격적으로 바빠진 것은 5월쯤 부터였는데, 6월에 한 PoC와 9월부터 시작된 프로젝트로 인해 더더욱 바빴던 것 같다. 인도네시아로 출장도 2번 갔는데 정말 다시는 가고싶지 않다. 해외여행도 별로 좋아하지 않는데 출장으로 가는 인도네시아.. 나와는 맞지 않는 것 같다. 아마 더 많은 출장이 요구된다면 깊은 생각을 해야하지 않을까 싶다^^&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;26년에 하고 싶은 일들 목록은 다음과 같다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;맛집탐방&lt;/li&gt;
&lt;li&gt;카페에서 책읽기&lt;/li&gt;
&lt;li&gt;수영 (각잡고 배우기)&lt;/li&gt;
&lt;li&gt;어딘가에서 일주일 살아보기&lt;/li&gt;
&lt;li&gt;복권 당첨되기&lt;/li&gt;
&lt;li&gt;이전에 진행하던 개인 프로젝트 완성하기&lt;/li&gt;
&lt;li&gt;뮤지컬/페스티벌/콘서트/야구 티켓팅 (올해 하반기에는 티켓팅을 많이 못한듯..)&lt;/li&gt;
&lt;li&gt;목표금액 저축하기&lt;/li&gt;
&lt;li&gt;서핑 (타다가 코가 부러진 사람 얘기를 들어서 일단 보류하긴 했음)&lt;/li&gt;
&lt;li&gt;바다거북과 수영하기&lt;/li&gt;
&lt;li&gt;현악기 배워보기 (첼로. 그치만 어디서? 아니면 일렉.)&lt;/li&gt;
&lt;/ul&gt;
&lt;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;2026년에도 열심히 살아야지~화이팅~&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>후기</category>
      <author>hahihi</author>
      <guid isPermaLink="true">https://hihinote.tistory.com/230</guid>
      <comments>https://hihinote.tistory.com/230#entry230comment</comments>
      <pubDate>Thu, 15 Jan 2026 23:15:52 +0900</pubDate>
    </item>
    <item>
      <title>완독 후기</title>
      <link>https://hihinote.tistory.com/229</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;22년도에 읽다 만 책을 회사에서 다봤다. 심지어 2월에 할거 없어서 읽었던 건데.. 블로그에 글이 2장까지 적혀있어서 머쓱한 나머지 완독 후기라도 써야할 것 같았다.&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;</description>
      <category>네트워크/IT 엔지니어를 위한 네트워크 입문</category>
      <author>hahihi</author>
      <guid isPermaLink="true">https://hihinote.tistory.com/229</guid>
      <comments>https://hihinote.tistory.com/229#entry229comment</comments>
      <pubDate>Tue, 6 May 2025 22:19:52 +0900</pubDate>
    </item>
    <item>
      <title>2025년 1분기 회고</title>
      <link>https://hihinote.tistory.com/228</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1분기 회고라는 거창한 단어를 썼지만, 연휴 기간에 갑자기 쓰고 싶어져서 2025년 1~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;1월부터 2월 초까지는 내내 신입사원 연수를 받았고, 2월 초에 인턴을 했던 팀으로 배치됐다. 한 달 내내 보던 동기들이 줄어들어서 아쉬웠지만, 운 좋게도 서울 4명은 모두 같은 층이어서 재밌었다. 2월은 사실 팀에 적응하는 시간과 업무 관련 교육을 받는 것을 제외하면 하는 일이 거의 없었던 것 같다.&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월 말부터 슬슬 업무를 조금씩 하기 시작했는데, 간단한 msp나 aws 아키텍처 구성하는 일을 했다. 처음에는 poc 계정에서 하는 일들을 주셔서 정말 부담이 적었다. 생성했다 삭제했다 수정했다를 반복하면서 aws 서비스에 익숙해져 나갔다. 또, 솔루션에서 나오는 데이터를 분석하거나 구성을 살펴보는 시간 또한 가졌다. 그러다 점점 고객사 msp 중 간단한 건은 응대하게 됐는데, 정말 쫄렸다. 사실 삭제하거나 수정하는 것만 아니면 어떤 일이 일어나지도 않지만... 고객사 계정으로 접속해서 하는 업무라서 하는 내내 쫄렸다. ㅎㅎ.. AWS 컨퍼런스에 참여해 부스 운영도 해보고 (옆에서 멀뚱히 서있었지만) 수석님 발표도 들었다. 컨퍼런스에는 항상 참관객으로만 갔는데, 파트너사 입장으로 참여해서 신기했다.&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월은 본격적인 출장/외근의 달이었다. 고객사와 미팅하러 출장/외근, 협력사 미팅하러 외근, 공장 실사하러 출장, 센서 부착하러 출장.. 미팅도 정말 많아서 미팅하고 업무하고 과제하고 출장가고 외근갔다 오니 4월이 사라져 있었다. 요새는 시간이 눈 깜짝할 새에 지나가 있다. 하루는 긴데 일주일은 짧은게 반복되니 벌써 5월이 됐다. 사실 취업하고 나서는 배우는 것들을 블로그에 정리하려고 했는데, 변명이긴 하지만 AWS 업무가 주이다 보니.. 내 계정으로 만들어서 캡쳐를 하려면 돈이 나가고.. 이미 회사 계정 원노트에는 다 정리되어 있고.. 이런저런 사정으로 회고 글만 올리게 되는 것 같다. 회사에서 노션을 사용할 수 있다면 블로그 글을 쉽게 쓸 수 있을텐데 그건 조금 아쉽다.&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;문화생활도 즐기고 취미활동도 하려고 노력은 하는데 이미 포화 상태라서 여기서 뭘 더하진 못할 것 같다. 주말에 하루는 뮤지컬/콘서트/전시회 보러가고... 평일에는 퇴근하고 밥먹고 드럼/운동/야구 중 하나를 해버리면 잘시간이 돼서 어렵다. 그래도 한 달에 업무 무관한 책을 한 권씩 보는 것과, 크로키 조금씩 그리는 것 정도까지는 할 수 있어서 나름대로 만족하고 있다. 이제 슬슬 사이드 프로젝트도 시작하려고 하는데, 정말이지 하루가 36시간이면 좋겠다..&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;span style=&quot;color: #333333; text-align: start;&quot;&gt;남은 하반기는 운동도 꾸준히 하면서 더 열심히 살아야겠다. 휴~&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>후기</category>
      <author>hahihi</author>
      <guid isPermaLink="true">https://hihinote.tistory.com/228</guid>
      <comments>https://hihinote.tistory.com/228#entry228comment</comments>
      <pubDate>Tue, 6 May 2025 20:20:12 +0900</pubDate>
    </item>
    <item>
      <title>2024년 회고</title>
      <link>https://hihinote.tistory.com/227</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;2024년은 내가 좋아하는 것이 무엇인지, 어떤 삶을 살아가고자 하는지, 어떤 개발자가 되고 싶은지, 나와 잘 맞는 사람과 아닌 사람은 어떤 특성을 가졌는지, 어떤 상황에서 스트레스를 받고 어떻게 푸는지 등등.. 나에 대한 것을 하나씩 채워나갈 수 있는 해였다. 소중했던 한 해를 정리하며 어떤 일들이 있었는지 돌아보고자 한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;상반기&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1월 2일에 싸피에 입과했고, 스타트캠프를 거쳐 반 배정을 받았다. 아는 사람 한 명 없이 20명 가량의 사람이 새로운 사람인 경우는 대학교 신입생 때를 제외하고는 없었기 때문에 초반에는 힘들었다. 하지만 매일 9시부터 6시까지 함께 수업을 듣다 보니 빠르게 친해지고 적응할 수 있었다. 싸피의 수업 내용은 프론트 부분을 제외하고는 모두 아는 내용이었다. 애초에 싸피를 들어간 이유는 '취준 과정에서 돈받기 + 2학기 프로젝트 진행하기' 였기 때문에 수업 시간에는 과제를 빠르게 진행하고 개인 공부를 했다.&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시간 40분 정도 되는 거리를 다니면서 느낀 점은 의외로 반복적인 출퇴근이 나에게 잘 맞는다는 것이었다. 대학생 때는 주 2회 공강으로 시간표를 짜고, 들쭉날쭉하게 학교를 다녀서 그런지 힘들었는데, 오히려 매일 같은 시간에 나가고 같은 시간에 집에 들어오니 아무 생각 없이 다닐 수 있어서 좋았다. 그리고 이동 시간에는 드라마나 영화를 보니 오히려 시간도 빨리 가는 느낌이고.. 회사에 출퇴근을 한 달 정도 했는데, 계속 이렇게 살아도 괜찮을 것 같다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;4월부터는 출퇴근에 어느정도 적응돼서 작년 여름에 3달 정도 배우던 드럼을 다시 배우기 시작했다.&lt;span&gt; 이전과 동일하게 주 1회 레쓴을 받고 연습실을 아무때나 사용할 수 있었다. 1학기에는 드럼을 원동력 삼아서 싸피를 다녔던 것 같다. 꾸준히 즐길 수 있는 취미로 삶이 더 건강해진 것 같아서 좋았다. 걱정은 취미가 하나씩 추가될 때마다 기존 취미에 조금 소홀해지는 것이 아닌가 싶은데, 몸이 하나니 적당히 조절해가며 즐기는 수밖에.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;&lt;span&gt;사실 상반기에 서류를 열심히 써서 2학기 시작 전에 싸탈하고 싶은 마음도 있었는데, 그런 것 치곤 서류를 4개밖에 안썼다. 그마저도 다 대충 쓴 서류들이라 모두 서탈했다. 방학 기간에 한두 군데를 썼는데, 신한 펀드 파트너스 서류가 붙어서 면접 기회를 얻었는데 면탈했다. 까비~&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;&lt;span&gt;여름 방학에는 면허를 땄다. 이때 따지 않으면 영원히 딸 수 없을 것 같아서 땄는데, 정말 좋은 선택이었던 것 같다. 3주만에 땄는데 싸피 방학 기간 동안 면허 따는 일만 해서 아쉽긴 했지만 땄으니까 다행이다. 그때 안땄으면 지금 따거나 회사 다니면서 따야 했을텐데 끔찍하다.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;&lt;span&gt;하반기&lt;/span&gt;&lt;/span&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;&lt;span&gt;싸피 2학기가 시작되고 본격적으로 프로젝트가 시작됐다. 6주의 프로젝트를 3번 진행하는데, 첫 프로젝트는 반이 랜덤 배치돼서 정말 모르는 사람들과 6인 팀프로젝트를 진행해야 했다. 우여곡절 끝에 팀을 구했고 첫 프로젝트로 재난 알리미 HotSOS 프로젝트를 진행했고 1등을 했다. 생소한 기능도 많이 사용하고 스트레스 테스트도 처음 해봤다. 이 프로젝트를 진행하면서 많은 것을 배웠고, 어떤 개발자가 되고 싶은지 다시 한 번 생각해보게 됐다. 프로젝트 진행에 큰 도움을 주신 컨설턴트님 같은 개발자가 되고 싶었는데, 이전부터 질문 버튼을 누르면 대답이 바로 튀어나오는 개발자가 되고 싶다고 생각했는데 역시 모든 것을 아는 개발자는 멋진 것 같다. 여러 분야를 경험해보고 스택을 하나씩 쌓아나가서 프로젝트 리더를 하고 싶다. 솔직히 매니저까지는 모르겠고 기술적으로 리더를 하고 싶다.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;두 번째 프로젝트로는 카드 혜택 추천 FitCard 프로젝트를 진행했고, 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;하반기에는 정말 정신없이 프로젝트를 진행하면서 자소설에 올라온 서류는 거의 다 쓴 것 같다. 그중에서 면접을 본 곳은 현대오토에버, IBK 시스템이 있었고, CJ 올리브 네트웍스는 면접을 포기했다. 금융권은 거의 서류에서 떨어졌는데 영어 성적이 문제였던 것 같다. 다시 돌아가서 준비한다면 IH는 따고 시도해볼 것 같다. 그래도 한 학기 동안 코테를 준비해서 그런지 서류 합격한 곳은 대부분 코테까지 붙었다.&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;사실 두산은 서류, DCAT, 면접 모두 기대를 안했던 곳인데 붙어서 신기했다. 인적성도 처음 준비해서 3일동안 책만 겨우 풀었는데 붙었고, 면접도 조졌다고 생각했는데 붙어서 진짜 면까몰이 있다는 것을 느꼈다. 붙고 한 달 정도 인턴을 진행했는데 운좋게 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;인턴은 12월 6일에 끝났고 사장님 면접과 회장님 면접이 있었다. 정말 떨렸지만 잘 마무리했고 최종 합격했다. 인턴 끝나기 전에는 3주 정도 쉬는 기간 동안 영화도 3편 보고, 드럼도 열심히 치고, 운동도 열심히 하는 갓생을 계획했는데 끝나자마자 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;&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;2024년이 정말 빠르게 지나갔지만 그래도 취업을 해서 다행이다. 목표는 상반기 취업이었지만 어찌 됐건 올해 취업했으니까 된거 아닐까. 회사 분위기도, 사람들도 좋은 것 같아서 3년 이상 다니고 싶다. 이제 입사까지 10일 남짓 남았는데 1년 동안 수고했고 제대로 리프레쉬해서 내년에도 열심히 살아봐야겠다.&lt;/p&gt;</description>
      <category>후기</category>
      <author>hahihi</author>
      <guid isPermaLink="true">https://hihinote.tistory.com/227</guid>
      <comments>https://hihinote.tistory.com/227#entry227comment</comments>
      <pubDate>Sat, 21 Dec 2024 23:39:10 +0900</pubDate>
    </item>
    <item>
      <title>submodule update</title>
      <link>https://hihinote.tistory.com/226</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;submodule을 사용해 한 프로젝트의 백엔드와 프론트 레포를 한 곳에서 관리했는데 fetch를 할 경우에 빈 파일이 가져와져서 submodule을 main 브랜치 기준으로 update 하는 방법을 찾아봤다.&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;먼저 submodule 상위 폴더에서 init 작업을 수행해준다.&lt;/p&gt;
&lt;pre id=&quot;code_1715645155518&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;$git submodule init&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이후 상위 폴더에 있는 .gitmodules에 fetch할 branch를 명시해주면 된다.&lt;/p&gt;
&lt;pre id=&quot;code_1715645238149&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;[submodule &quot;Repo name&quot;]
	path = 폴더명
	url = 깃 주소
	branch = main&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;마지막으로 submodule을 update 해주면 제대로 fetch가 된다.&lt;/p&gt;
&lt;pre id=&quot;code_1715645279028&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;$git submodule update --remote&lt;/code&gt;&lt;/pre&gt;</description>
      <category>git</category>
      <author>hahihi</author>
      <guid isPermaLink="true">https://hihinote.tistory.com/226</guid>
      <comments>https://hihinote.tistory.com/226#entry226comment</comments>
      <pubDate>Tue, 14 May 2024 09:08:06 +0900</pubDate>
    </item>
    <item>
      <title>백준 - 26086 어려운 스케줄링</title>
      <link>https://hihinote.tistory.com/225</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;문제&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://www.acmicpc.net/problem/26086&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://www.acmicpc.net/problem/26086&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1714120451216&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;26086번: 어려운 스케줄링&quot; data-og-description=&quot;첫째 줄에 업무의 고유번호의 범위 제한 $N$과 명령 횟수 $Q$, $k$가 주어진다. ($1\leq N,Q \leq 100\,000,\ 1\leq k \leq$ '0번 명령의 등장 횟수') 둘째 줄부터 $Q$개 줄에 걸쳐 명령에 대한 정보가 주어진다. &quot; data-og-host=&quot;www.acmicpc.net&quot; data-og-source-url=&quot;https://www.acmicpc.net/problem/26086&quot; data-og-url=&quot;https://www.acmicpc.net/problem/26086&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/880rQ/hyVSVP8z20/hs1JxygO0m40OlGmxn5CX1/img.png?width=2834&amp;amp;height=1480&amp;amp;face=0_0_2834_1480&quot;&gt;&lt;a href=&quot;https://www.acmicpc.net/problem/26086&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://www.acmicpc.net/problem/26086&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/880rQ/hyVSVP8z20/hs1JxygO0m40OlGmxn5CX1/img.png?width=2834&amp;amp;height=1480&amp;amp;face=0_0_2834_1480');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;26086번: 어려운 스케줄링&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;첫째 줄에 업무의 고유번호의 범위 제한 $N$과 명령 횟수 $Q$, $k$가 주어진다. ($1\leq N,Q \leq 100\,000,\ 1\leq k \leq$ '0번 명령의 등장 횟수') 둘째 줄부터 $Q$개 줄에 걸쳐 명령에 대한 정보가 주어진다.&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;www.acmicpc.net&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;stack 구조의 스케쥴러를 이용해 명령을 수행하고 k번째로 처리할 업무를 찾는 문제였다.&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;blockquote data-ke-style=&quot;style3&quot;&gt;0 p : 스케줄러의 맨 앞에 번호 p인 업무를 추가한다.&lt;br /&gt;1 : 스케줄러의 업무를 p 기준으로 오름차순 정렬한다.&lt;br /&gt;2 : 스케줄러의 업무 처리 순서를 뒤집는다.&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;명령 횟수는 100000, 시간 제한은 1초였다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;문제 풀이&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;명령 횟수가 100000이기 때문에 정렬이 나올 때마다 수행하게 된다면 무조건 시간 초과가 날 것 같았다.&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;스케줄러에 입력만 된다는 것에 집중했다. 입력만 들어오기 때문에 정렬은 마지막 한 번만 실행하면 된다. 따라서 전체 정렬 중 한 번만 수행해도 같은 결과가 나온다. 또, 뒤집는 것은 deque를 이용했다.&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;먼저 정렬 명령어의 맨 마지막 순서를 저장하고, 그 전까지는 0번 명령만 수행하며 무조건 벡터 뒤에 추가했다. 마지막 정렬 순서가 되면 정렬한 후에 deque에 넣었다. 정렬 이후부터는 순서 뒤집기가 나오면 isFront를 바꿔주고 추가할 때는 isFront에 맞게 앞/뒤에 추가했다.&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;이때, 정렬이 한 번도 나오지 않았다면 처음부터 deque에 넣으면서 정렬 이후 과정대로 진행했다.&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;정답은 isFront에 맞게 해당 위치를 k-1번 pop 해주고, 마지막 k번째의 맨 앞, 혹은 맨 뒤가 된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1714120463097&quot; class=&quot;cpp&quot; data-ke-language=&quot;cpp&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;int N, Q, k;
vector&amp;lt;int&amp;gt; arr; //정렬 전 저장
deque&amp;lt;int&amp;gt; d; 
vector&amp;lt;pair&amp;lt;int, int&amp;gt;&amp;gt; oper; //연산자 저장
int lastSortIndex; //마지막 정렬 위치
bool isFront; //true -&amp;gt; 포인터가 앞, fasle -&amp;gt; 포인터가 뒤

int main() {

	scanf(&quot;%d %d %d&quot;, &amp;amp;N, &amp;amp;Q, &amp;amp;k);

	oper = vector&amp;lt;pair&amp;lt;int, int&amp;gt;&amp;gt;(Q);

	lastSortIndex = Q + 1;
	for (int i = 0; i &amp;lt; Q; i++) {
		int type, num;
		num = -1;
		scanf(&quot;%d&quot;, &amp;amp;type);
		if (type == 0) {
			scanf(&quot;%d&quot;, &amp;amp;num);
		}
		oper[i] = { type, num };
		if (type == 1) {
			lastSortIndex = i;
		}
	}

	isFront = true;

	//lastSortIndex 전까지는 arr에 저장, 이후에는 deque에 저장
	if (lastSortIndex == Q + 1) { //정렬이 한 번도 나오지 않을 경우
		for (int i = 0; i &amp;lt; Q; i++) {
			if (oper[i].first == 0) {
				if (isFront) d.push_front(oper[i].second);
				else d.push_back(oper[i].second);
			}
			else {
				if (isFront) isFront = false;
				else isFront = true;
			}
		}
	}
	else {
		for (int i = 0; i &amp;lt; Q; i++) {
			if (i &amp;lt; lastSortIndex) { //arr에 넣기
				if (oper[i].first == 0) {
					arr.push_back(oper[i].second);
				}
				else if (oper[i].first == 2) {
					if (isFront) isFront = false;
					else isFront = true;
				}
			}
			else if (i == lastSortIndex) { // 1번 정렬 후 deque에 넣기
				sort(arr.begin(), arr.end());
				for (int i = 0; i &amp;lt; arr.size(); i++) {
					d.push_back(arr[i]);
					isFront = true;
				}
			}
			else { //deque에 저장			
				if (oper[i].first == 0) {
					if (isFront) d.push_front(oper[i].second);
					else d.push_back(oper[i].second);
				}
				else {
					if (isFront) isFront = false;
					else isFront = true;
				}
			}
		}
	}

	/*
	printf(&quot;\n---------------------\n&quot;);
	for (int i = 0; i &amp;lt; N; i++) {
		printf(&quot;%d &quot;, d.back());
		d.pop_back();
	}
	*/
	


	for (int i = 0; i &amp;lt; k-1; i++) {
		if (isFront) {
			d.pop_front();
		}
		else {
			d.pop_back();
		}
	}

	int answer;

	if (isFront) answer = d.front();
	else answer = d.back();

	printf(&quot;%d&quot;, answer);
	
	return 0;
}

/*
*/&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>알고리즘/구현</category>
      <author>hahihi</author>
      <guid isPermaLink="true">https://hihinote.tistory.com/225</guid>
      <comments>https://hihinote.tistory.com/225#entry225comment</comments>
      <pubDate>Fri, 26 Apr 2024 17:43:29 +0900</pubDate>
    </item>
    <item>
      <title>백준 - 31476 :blob_twintail_thinking:</title>
      <link>https://hihinote.tistory.com/224</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;문제&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://www.acmicpc.net/problem/31476&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://www.acmicpc.net/problem/31476&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1713923619849&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;31476번: :blob_twintail_thinking:&quot; data-og-description=&quot;첫째 줄에는 양갈래 굴의 방 중 가장 깊은 곳의 깊이 $D(1 \le D \le 12)$와 파손된 길목의 수 $N(0 \le N \le 2^D-2)$, 각 블롭 세력이 기본적으로 탐색하는 시간인 $U(1 \le U \le 100)$와 양갈래 블롭들이 갈라&quot; data-og-host=&quot;www.acmicpc.net&quot; data-og-source-url=&quot;https://www.acmicpc.net/problem/31476&quot; data-og-url=&quot;https://www.acmicpc.net/problem/31476&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/o4xSz/hyVSXNAFT5/qSSSkiYt1PIgNOOWKYtdg1/img.png?width=2834&amp;amp;height=1480&amp;amp;face=0_0_2834_1480,https://scrap.kakaocdn.net/dn/c6I17K/hyVSSZUeAq/dmaLlE4YKqsvvvPYLznRh1/img.png?width=2048&amp;amp;height=1740&amp;amp;face=0_0_2048_1740&quot;&gt;&lt;a href=&quot;https://www.acmicpc.net/problem/31476&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://www.acmicpc.net/problem/31476&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/o4xSz/hyVSXNAFT5/qSSSkiYt1PIgNOOWKYtdg1/img.png?width=2834&amp;amp;height=1480&amp;amp;face=0_0_2834_1480,https://scrap.kakaocdn.net/dn/c6I17K/hyVSSZUeAq/dmaLlE4YKqsvvvPYLznRh1/img.png?width=2048&amp;amp;height=1740&amp;amp;face=0_0_2048_1740');&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;31476번: :blob_twintail_thinking:&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;첫째 줄에는 양갈래 굴의 방 중 가장 깊은 곳의 깊이 $D(1 \le D \le 12)$와 파손된 길목의 수 $N(0 \le N \le 2^D-2)$, 각 블롭 세력이 기본적으로 탐색하는 시간인 $U(1 \le U \le 100)$와 양갈래 블롭들이 갈라&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;www.acmicpc.net&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;트리를 레벨 순회, 중위순회 하는 문제였다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;양갈래 블롭
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;같은 레벨은 가장 오래 걸린 시간이 소요된다.&lt;/li&gt;
&lt;li&gt;이때, 분기할 때마다 소요 시간이 T만큼 증가한다 (U+T, U+2*T, U+3*T...)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;포니테일 블롭
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;중위순회 하면서 갔다가 돌아오는 길에도 탐색 시간이 U만큼 소요된다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;문제 풀이&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;트리 그래프를 먼저 만들어줬다. 완전이진트리여서 단순하게 현재 노드의 좌, 우, 즉 0,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;연결을 끊는 것은 end에서부터 start까지 parent를 이용해 거슬러 올라가면서 연결을 끊었다. 해당 노드가 짝수일 경우에는 왼쪽 노드, 홀수일 경우에는 오른쪽 노드로&amp;nbsp; 간주했고 부모 노드의 해당 방향과 연결된 노드를 -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;포니테일 순회는 중위순회를 돌며 방문할 때와 돌아올 때 U를 더해줬다. 이때, 마지막 노드에서 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;해당 레벨에서 분기가 한 번이라도 있다면 분기 카운트를 늘렸다. 그리고 queue에서 현재 레벨과 이전 레벨이 달라질 때 해당 레벨의 시간인 (U+T*분기 count)를 더해줬다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1713923635939&quot; class=&quot;cpp&quot; data-ke-language=&quot;cpp&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;int D, N, U, T;
vector&amp;lt;vector&amp;lt;int&amp;gt;&amp;gt; G;
vector&amp;lt;int&amp;gt; parent;
int lastNum;
int ponyCnt, twinCnt;
int ponyLast=1;

void printParent() {
	for (int i = 1; i &amp;lt; lastNum; i++) {
		printf(&quot;%d &quot;, parent[i]);
	}
	printf(&quot;\n------------------\n&quot;);
}

void makeTree() {
	queue&amp;lt;int&amp;gt; q;
	q.push(1);

	int n = 2;
	parent[1] = 1;
	while (n&amp;lt;lastNum) {
		int nowNum = q.front();
		q.pop();

		G[nowNum].push_back(n);
		G[nowNum].push_back(n+1);
		parent[n] = nowNum;
		parent[n + 1] = nowNum;
		
		q.push(n);
		q.push(n + 1);

		n += 2;
	}
}

void makeDisconnect(int s, int e) {

	int n = e;
	while (true) {		

		if (n % 2 == 0)
			G[parent[n]][0] = -1;
		else G[parent[n]][1] = -1;

		n = parent[n];
		
		if (n == s)
			break;
	}
}

void ponySearch(int n) {
	ponyLast = n;

	if(G[n].size()&amp;gt;0) {
		if (G[n][0] != -1) {
			ponyCnt += U;
			ponySearch(G[n][0]);
		}

		if (G[n][1] != -1) {
			ponyCnt += U;
			ponySearch(G[n][1]);
		}
	}

	
	ponyCnt += U;
}

void twinSearch(int start) {
	queue&amp;lt;pair&amp;lt;int,int&amp;gt;&amp;gt; q; //node, level
	q.push({ start,0});

	int beforeLevel = 0;
	bool isSeperate = false;
	int seperateCnt = 0;
	while (!q.empty()) {
		int n = q.front().first;
		int nowLevel = q.front().second;
		q.pop();

		if (beforeLevel != nowLevel) {			
			if (isSeperate) seperateCnt++;
			twinCnt += (U + T * seperateCnt);			
			beforeLevel = nowLevel;			
			isSeperate = false;
		}
		
		int cnt = 0;
		for (int i = 0; i &amp;lt; G[n].size(); i++) {			
			int nextNode = G[n][i];
			if (nextNode != -1) {
				q.push({ nextNode,nowLevel + 1 });
				cnt++;
			}
		}
		if (cnt == 2) {		
			isSeperate = true;
		}
	}
}

int calDoubleSum(int n) {
	int result = 0;

	while (true) {
		if (n == 1) break;
		result += U;
		n = parent[n];
	}

	//1도 두번 체크됨
	result += U;

	return result;
}

int main() {

	scanf(&quot;%d %d %d %d&quot;, &amp;amp;D, &amp;amp;N, &amp;amp;U, &amp;amp;T);
	lastNum = pow(2, D);
	G = vector&amp;lt;vector&amp;lt;int&amp;gt;&amp;gt;(lastNum, vector&amp;lt;int&amp;gt;());
	parent = vector&amp;lt;int&amp;gt;(lastNum, false);

	makeTree();
	//printParent();

	//끊어진 구간
	for (int i = 0; i &amp;lt; N; i++) {
		int s, e;
		scanf(&quot;%d %d&quot;, &amp;amp;s, &amp;amp;e);
		makeDisconnect(s, e);
	}
	ponyCnt = 0;
	twinCnt = 0;

	//포니테일 순회
	ponySearch(1);

	ponyCnt -= calDoubleSum(ponyLast);

	twinSearch(1);

	if (ponyCnt &amp;gt; twinCnt)
		printf(&quot;:blob_twintail_aww:&quot;);
	else if (ponyCnt &amp;lt; twinCnt)
		printf(&quot;:blob_twintail_sad:&quot;);
	else
		printf(&quot;:blob_twintail_thinking:&quot;);
	return 0;
}

/*
4 3 1 4
2 5
3 7
3 6
*/&lt;/code&gt;&lt;/pre&gt;</description>
      <category>알고리즘/트리</category>
      <author>hahihi</author>
      <guid isPermaLink="true">https://hihinote.tistory.com/224</guid>
      <comments>https://hihinote.tistory.com/224#entry224comment</comments>
      <pubDate>Wed, 24 Apr 2024 11:04:34 +0900</pubDate>
    </item>
    <item>
      <title>sts xml 다운로드 안되는 오류</title>
      <link>https://hihinote.tistory.com/223</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;xml 파일에서 다운로드가 안돼서 모든 곳이 다 빨간 밑줄이 쳐졌었다. 실행은 돼서 그냥 보이는 오륜가? 하고 넘겼는데 어느 순간부터 실행이 잘 안됐다..&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;705&quot; data-origin-height=&quot;587&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cONoqy/btsGPoUbUTy/y9wTmSJcdnAmFYkTb12yKK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cONoqy/btsGPoUbUTy/y9wTmSJcdnAmFYkTb12yKK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cONoqy/btsGPoUbUTy/y9wTmSJcdnAmFYkTb12yKK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcONoqy%2FbtsGPoUbUTy%2Fy9wTmSJcdnAmFYkTb12yKK%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;705&quot; height=&quot;587&quot; data-origin-width=&quot;705&quot; data-origin-height=&quot;587&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;Window의 Preferences에서 XML(Wild Web Developer)에 들어가면 Download 선택하는 것이 있는데 체크가 해제되어 있었다. 이를 체크하니 잘 다운받아졌고 빨간 밑줄이 사라졌다. 휴~&lt;/p&gt;</description>
      <category>spring</category>
      <author>hahihi</author>
      <guid isPermaLink="true">https://hihinote.tistory.com/223</guid>
      <comments>https://hihinote.tistory.com/223#entry223comment</comments>
      <pubDate>Tue, 23 Apr 2024 14:37:41 +0900</pubDate>
    </item>
    <item>
      <title>백준 - 24461 그래프의 줄기</title>
      <link>https://hihinote.tistory.com/222</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;문제&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://www.acmicpc.net/problem/24461&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://www.acmicpc.net/problem/24461&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1713485582835&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;24461번: 그래프의 줄기&quot; data-og-description=&quot;그래프에서 사이클이란, 한 정점에서 같은 정점까지, 반복되는 간선이 없으며, 길이가 $0$이 아닌 경로이다. 사이클이 존재하지 않는 그래프가 주어진다. 우리는 이 그래프의 정점 중에서 연결된&quot; data-og-host=&quot;www.acmicpc.net&quot; data-og-source-url=&quot;https://www.acmicpc.net/problem/24461&quot; data-og-url=&quot;https://www.acmicpc.net/problem/24461&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/0da1G/hyVS5cne7E/AkK4QHRiYcdz9EpVZruzNk/img.png?width=2834&amp;amp;height=1480&amp;amp;face=0_0_2834_1480&quot;&gt;&lt;a href=&quot;https://www.acmicpc.net/problem/24461&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://www.acmicpc.net/problem/24461&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/0da1G/hyVS5cne7E/AkK4QHRiYcdz9EpVZruzNk/img.png?width=2834&amp;amp;height=1480&amp;amp;face=0_0_2834_1480');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;24461번: 그래프의 줄기&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;그래프에서 사이클이란, 한 정점에서 같은 정점까지, 반복되는 간선이 없으며, 길이가 $0$이 아닌 경로이다. 사이클이 존재하지 않는 그래프가 주어진다. 우리는 이 그래프의 정점 중에서 연결된&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;www.acmicpc.net&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;가장자리 정점을 '동시에' 없애는 행동을 가장자리 정점이 2개 이하로 남을 때까지, 즉 일직선이 될 때까지 반복하고 남은 일직선의 정점을 오름차순으로 출력하는 문제였다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;문제 풀이&lt;/h2&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;그래프를 생성하면서 in, out 배열을 만든다.&lt;/li&gt;
&lt;li&gt;초기 가장자리 정점 queue를 생성한다.&lt;br /&gt;in, out이 모두 1인 정점이 가장자리 정점이 된다.&lt;/li&gt;
&lt;li&gt;가장자리 정점 제거
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;queue에 담긴 정점을 제거한다.&lt;br /&gt;제거 후 연결된 정점의 in/out이 1이 된다면 queue에 담는다.&lt;br /&gt;제거 시 해당 정점의 visit를 true로 변경해준다.&lt;/li&gt;
&lt;li&gt;반복하다가 해당 level의 queue size가 2 이하가 되면 끝이 난다.&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li&gt;정점의 visit가 false인 정점들이 정답이 된다.&lt;/li&gt;
&lt;/ol&gt;
&lt;pre id=&quot;code_1713485592115&quot; class=&quot;cpp&quot; data-ke-language=&quot;cpp&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;typedef struct Node {
	int a; //삭제할 정점
	int b; //연결된 정점
	int level; //레벨
}node;

int N;
vector&amp;lt;vector&amp;lt;int&amp;gt;&amp;gt; G;
vector&amp;lt;int&amp;gt; in, out;
queue&amp;lt;node&amp;gt; leaf;
vector&amp;lt;bool&amp;gt; visit;

void initLeaf() {
	for (int i = 0; i &amp;lt; N; i++) {
		if (in[i] == 1 &amp;amp;&amp;amp; out[i] == 1) {
			leaf.push({ i,G[i][0], 0 });
			//printf(&quot;%d &quot;, i);
		}
	}
}

void deleteLeaf() {
	//2) queue에 담긴 정점을 제거, 제거 후 연결된 정점의 in/out이 1이 된다면 queue에 담기
	//제거 - 간선의 visit를 true로
	//3) 반복하다가 해당 level의 queue size가 2 이하가 되면 끝
	int beforeLevel = -1;
	bool isDone = false;
	while (!leaf.empty()) {
		node nowNode = leaf.front();

		int a = nowNode.a;
		int b = nowNode.b;
		int level = nowNode.level;

		if (beforeLevel != level) { //다음 레벨로 넘어감
			if (leaf.size() &amp;lt;= 2) { //끝!
				isDone = true;
				break;
			}			
			beforeLevel = level;
		}

		//printf(&quot;%d %d %d\n&quot;, a, b, level);

		leaf.pop();

		visit[a] = true;

		in[a]--;
		out[a]--;
		in[b]--;
		out[b]--;
		if (in[b] == 1 &amp;amp;&amp;amp; out[b] == 1) { //연결된 노드도 leaf 됨
			//b와 연결된 노드 찾기
			int connectB;
			int i;
			for (i = 0; i &amp;lt; G[b].size(); i++) {
				if (!visit[G[b][i]]) {
					connectB = G[b][i];
					break;
				}
			}
			leaf.push({ b,connectB, level + 1 });
		}
	}
}

int main() {

	scanf(&quot;%d&quot;, &amp;amp;N);

	G = vector&amp;lt;vector&amp;lt;int&amp;gt;&amp;gt;(N, vector&amp;lt;int&amp;gt;());
	visit = vector&amp;lt;bool&amp;gt;(N, false);
	in = vector&amp;lt;int&amp;gt;(N, 0);
	out = vector&amp;lt;int&amp;gt;(N, 0);

	for (int i = 0; i &amp;lt; N-1; i++) {
		int a, b;
		scanf(&quot;%d %d&quot;, &amp;amp;a, &amp;amp;b);
		G[a].push_back(b);
		G[b].push_back(a);

		in[b]++;
		out[b]++;
		in[a]++;
		out[a]++;
	}

	//2. 초기 가장자리 정점 queue 생성
	initLeaf();

	//3. 가장자리 정점 제거
	deleteLeaf();

	for (int i = 0; i &amp;lt; N; i++) {
		if (!visit[i]) {
			printf(&quot;%d &quot;, i);
		}
	}

	return 0;
}

/*

*/&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>알고리즘/구현</category>
      <author>hahihi</author>
      <guid isPermaLink="true">https://hihinote.tistory.com/222</guid>
      <comments>https://hihinote.tistory.com/222#entry222comment</comments>
      <pubDate>Fri, 19 Apr 2024 09:33:37 +0900</pubDate>
    </item>
    <item>
      <title>백준 - 9252 LCS 2</title>
      <link>https://hihinote.tistory.com/221</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;문제&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://www.acmicpc.net/problem/9252&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://www.acmicpc.net/problem/9252&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1712626064657&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;9252번: LCS 2&quot; data-og-description=&quot;LCS(Longest Common Subsequence, 최장 공통 부분 수열)문제는 두 수열이 주어졌을 때, 모두의 부분 수열이 되는 수열 중 가장 긴 것을 찾는 문제이다. 예를 들어, ACAYKP와 CAPCAK의 LCS는 ACAK가 된다.&quot; data-og-host=&quot;www.acmicpc.net&quot; data-og-source-url=&quot;https://www.acmicpc.net/problem/9252&quot; data-og-url=&quot;https://www.acmicpc.net/problem/9252&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/dB2yVV/hyVMUWzNj1/9biyiNWTcDNwk4aBIzksk1/img.png?width=2834&amp;amp;height=1480&amp;amp;face=0_0_2834_1480&quot;&gt;&lt;a href=&quot;https://www.acmicpc.net/problem/9252&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://www.acmicpc.net/problem/9252&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/dB2yVV/hyVMUWzNj1/9biyiNWTcDNwk4aBIzksk1/img.png?width=2834&amp;amp;height=1480&amp;amp;face=0_0_2834_1480');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;9252번: LCS 2&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;LCS(Longest Common Subsequence, 최장 공통 부분 수열)문제는 두 수열이 주어졌을 때, 모두의 부분 수열이 되는 수열 중 가장 긴 것을 찾는 문제이다. 예를 들어, ACAYKP와 CAPCAK의 LCS는 ACAK가 된다.&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;www.acmicpc.net&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;두 수열의 공통 부분 수열 중 가장 긴 것을 찾는 문제였다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;문제 풀이&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;dp를 사용해 풀었다. dp 점화식을 말에서 식으로 바꾸는 것이 조금 헷갈렸지만 표를 그려보니 바로 이해가 됐다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;110&quot; data-origin-height=&quot;116&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bZPCQo/btsGvrIGsI3/NFmilpUIeM4T2RB8iZ2PVk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bZPCQo/btsGvrIGsI3/NFmilpUIeM4T2RB8iZ2PVk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bZPCQo/btsGvrIGsI3/NFmilpUIeM4T2RB8iZ2PVk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbZPCQo%2FbtsGvrIGsI3%2FNFmilpUIeM4T2RB8iZ2PVk%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;110&quot; height=&quot;116&quot; data-origin-width=&quot;110&quot; data-origin-height=&quot;116&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;주어진 예시를 이용해 dp 배열을 만들면 위와 같은 모양이 된다. 0행 1열은 AC와 C의 LCS 길이, 1행 2열은 ACA와 CA의 LCS 길이가 된다. 그 전 dp값의 max 값이 현재 dp 값이 되고, 만약 A와 B 문자열의 현재 위치의 문자가 같다면 +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;LCS 문자열은 마지막 문자에서 거슬러 올라가면서 구했다. 위와 왼쪽이 같은 길이가 아니라면 현재 위치에서 +1 된 것이기 때문에 정답 문자열에 추가했고 이와 같은 과정을 반복해 구했다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1712626214768&quot; class=&quot;cpp&quot; data-ke-language=&quot;cpp&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;string A, B;
int lengthA, lengthB;
vector&amp;lt;vector&amp;lt;int&amp;gt;&amp;gt; dp;

void printDP() {
	printf(&quot;  &quot;);
	for (int i = 0; i &amp;lt; lengthB; i++) {
		printf(&quot;%c &quot;, B[i]);
	}
	printf(&quot;\n&quot;);
	for (int i = 0; i &amp;lt; lengthA; i++) {
		printf(&quot;%c &quot;, A[i]);
		for (int j = 0; j &amp;lt; lengthB; j++) {
			printf(&quot;%d &quot;, dp[i][j]);
		}
		printf(&quot;\n&quot;);
	}
}

int leftLength(int x, int y) {
	y--;
	if (x &amp;lt; 0 || x &amp;gt;= lengthA || y &amp;lt; 0 || y &amp;gt;= lengthB) return -1;
	return dp[x][y];
}

int upLength(int x, int y) {
	x--;
	if (x &amp;lt; 0 || x &amp;gt;= lengthA || y &amp;lt; 0 || y &amp;gt;= lengthB) return -1;
	return dp[x][y];
}

int main() {

	//dp에서 A가 행, B가 열


	cin &amp;gt;&amp;gt; A;
	cin &amp;gt;&amp;gt; B;

	lengthA = A.length();
	lengthB = B.length();

	dp = vector&amp;lt;vector&amp;lt;int&amp;gt;&amp;gt;(lengthA, vector&amp;lt;int&amp;gt;(lengthB, 0));

	//테두리 dp 초기화
	if (A[0] == B[0]) dp[0][0] = 1;
	for (int i = 1; i &amp;lt; lengthA; i++) {
		if (A[i] == B[0]) dp[i][0] = 1;
		dp[i][0] = max(dp[i][0], dp[i - 1][0]);
	}
	for (int i = 1; i &amp;lt; lengthB; i++) {
		if (A[0] == B[i]) dp[0][i] = 1;
		dp[0][i] = max(dp[0][i], dp[0][i - 1]);
	}
	
	
	//나머지 dp 계산
	for (int i = 1; i &amp;lt; lengthA; i++) {
		for (int j = 1; j &amp;lt; lengthB; j++) {
			//max 값 만들기		
			dp[i][j] = max(dp[i - 1][j], dp[i][j - 1]);

			if (A[i] == B[j]) { //맨 끝 글자와 같다면 +1
				dp[i][j] = dp[i - 1][j - 1] + 1;
			}
		}
	}

	//printDP();

	//LCS 문자열 찾기
	//위, 왼쪽으로 가면서 현재 length 마지막 위치 찾기
	string str = &quot;&quot;;
	int nowLength = dp[lengthA - 1][lengthB - 1];
	int x = lengthA - 1;
	int y = lengthB - 1;
	while (true) {
		//printf(&quot;dp[%d][%d]: %d\n&quot;, x, y, dp[x][y]);		
		if (upLength(x, y) == nowLength) {
			x -= 1; 
			if (leftLength(x, y) == nowLength) {
				y -= 1;
			}
		}
		else if (leftLength(x, y) == nowLength) {
			y -= 1;
			if (upLength(x, y) == nowLength) {
				x -= 1;
			}
		}
		else { //왼쪽, 위 모두 다름 -&amp;gt; 여기에서 바뀜
			//printf(&quot;------------change!!----------\n&quot;);
			if (x == 0 &amp;amp;&amp;amp; y == 0 &amp;amp;&amp;amp; dp[0][0] == 0) break;
			str = A[x] + str;
			nowLength--;
			if (x == 0 &amp;amp;&amp;amp; y == 0) break;
		}	
	}

	printf(&quot;%d\n&quot;, dp[lengthA-1][lengthB-1]);
	if(dp[lengthA - 1][lengthB - 1] != 0) 
		cout &amp;lt;&amp;lt; str &amp;lt;&amp;lt; endl;

	return 0;
}

/*

*/&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>알고리즘/동적 계획법 (DP)</category>
      <author>hahihi</author>
      <guid isPermaLink="true">https://hihinote.tistory.com/221</guid>
      <comments>https://hihinote.tistory.com/221#entry221comment</comments>
      <pubDate>Tue, 9 Apr 2024 10:43:09 +0900</pubDate>
    </item>
  </channel>
</rss>