<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>Azure Zest</title>
    <link>https://d-tail.tistory.com/</link>
    <description></description>
    <language>ko</language>
    <pubDate>Fri, 10 Apr 2026 16:44:25 +0900</pubDate>
    <generator>TISTORY</generator>
    <ttl>100</ttl>
    <managingEditor>LABONG_R</managingEditor>
    <image>
      <title>Azure Zest</title>
      <url>https://tistory1.daumcdn.net/tistory/3036094/attach/93e880c0112b4e9ba482b87d3b85670a</url>
      <link>https://d-tail.tistory.com</link>
    </image>
    <item>
      <title>[ 2022 하나은행 채용연계형 인턴 ] 하나은행 인턴 후기 2</title>
      <link>https://d-tail.tistory.com/83</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;그렇게 나는 하나은행 을지로 본점에 위치하고 있는 디지털과 관련된 부서로 배정받고, 6주간의 여정을 시작하게 되었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;인턴 기간동안 하는 일은 정말 각 부서별로 너무 다양했고, 그래서 그 내용을 담기는 조금 힘들 것 같다.&lt;/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;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style8&quot; /&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;b&gt;01. 을지로 입구역 '1'번 출구에 위치하고 있는 '1'(하나) 은행 을지로 본점&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;인턴들끼리 같이 우연일까 농담하면서 을지로 입구역 1번 출구에 하나은행 본점이 위치하고 있어서 신기했었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그리고 지하철을 내릴 때마다 하나은행 관련해서 방송이 나올때 괜시리 마음속으로 신기하고, 뿌듯(?)하기도 했다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;인턴 기간 중 인상깊었던 점 중 하나는 을지로 본점의 건물이 너무 이뻤다는 것이다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2419&quot; data-origin-height=&quot;2419&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/RXw8h/btrMIIsgWCx/Oh24yGyIMKQeV5aYSxppHK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/RXw8h/btrMIIsgWCx/Oh24yGyIMKQeV5aYSxppHK/img.png&quot; data-alt=&quot;하나은행 을지로 본점 야경(?)&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/RXw8h/btrMIIsgWCx/Oh24yGyIMKQeV5aYSxppHK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FRXw8h%2FbtrMIIsgWCx%2FOh24yGyIMKQeV5aYSxppHK%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;2419&quot; height=&quot;2419&quot; data-origin-width=&quot;2419&quot; data-origin-height=&quot;2419&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;하나은행 을지로 본점 야경(?)&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;건물이 얄쌍하고, 높게 위치하고 있어서 을지로 입구 쪽 식당을 지나가다 휙 하고 돌면 잘 보였다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;특히, 이렇게 밤에 볼때 불빛이 반짝반짝 빛나고 있어서 이뻤다.&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;24시간 가동하는 층&lt;/b&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;b&gt; CU 편의점&lt;/b&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&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/bwh00R/btrMIWjwqQF/jVjd5oXByMHKKh9imkCnbk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bwh00R/btrMIWjwqQF/jVjd5oXByMHKKh9imkCnbk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bwh00R/btrMIWjwqQF/jVjd5oXByMHKKh9imkCnbk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbwh00R%2FbtrMIWjwqQF%2FjVjd5oXByMHKKh9imkCnbk%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;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;1125&quot; data-origin-height=&quot;380&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bCG7ny/btrMINAje3q/pUQeFjsKVpMuQohgJCLS00/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bCG7ny/btrMINAje3q/pUQeFjsKVpMuQohgJCLS00/img.png&quot; data-alt=&quot;무인 편의점 이용&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bCG7ny/btrMINAje3q/pUQeFjsKVpMuQohgJCLS00/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbCG7ny%2FbtrMINAje3q%2FpUQeFjsKVpMuQohgJCLS00%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;1125&quot; height=&quot;380&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;1125&quot; data-origin-height=&quot;380&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;무인 편의점 이용&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;또한, 24시간 개방되는 도서관 등등 건물이 정말 직원들 복지에 좋게 잘 구성되어 있어서 너무 기분이 좋았고, 다시.. 또 다시 한번 들어오고 싶다는 생각을 하게 되었다..ㅎㅎ...&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;b&gt;02. 인턴들과의 인연...?&lt;/b&gt;&lt;/h2&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;정말 6주간 보고 헤어지는 게 아쉬울 정도로 너무 좋은 사람들이 많았던 것 같다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;특히, 같은 부서 인턴들끼리는 어느 곳이든 정말 다 친해진 것 같고 우리 역시 그랬다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;처음에 어색했던 것이 무색하리만큼 친해졌고, 또 경쟁이라는 생각이 하나도 들지 않을 만큼 즐기면서 인턴생활을 했고,&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;개인 프로젝트도 서로 피드백해주면서 진심어린 조언을 했던 것 같다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;특히, 나같은 경우도 정말 부족한 부분이 많았는데 같은 부서 인턴들의 조언을 들으며 미처 생각치 못했던 부분에 대해 다시금 생각할 수 있었고, 이런 지식적인 일적인 부분 뿐만 아니라 다양하게 많은 것들을 배울 수 있었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;생활적인 부분에서도 인턴 생활에 적응할 수 있도록 서로가 큰 힘이 되었던 것 같고, 이 자리를 빌어서(?) 다시 한 번 정말 고마웠다고 말하고 싶다ㅎㅎ&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그래서 인턴 생활에 끝이 있다는 게 더욱 아쉬웠지만, 멘토님께서도 말씀하셨듯이&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 인연이 여기서 끝나는 것이 아니고, 친해져서 어느 곳에 있든 서로에게 좋은 영향을 미칠 것이라고 생각한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;좋은 사람들인만큼 정말 어느 곳에서든 원하는 바를 다 이뤘으면 좋겠고, 연락도 지속할 수 있으면 좋겠다..ㅎㅎ&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;03. 인사부와의 만남&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;내가 알기로는 전에 체험형으로는 인턴을 뽑았었지만, 하나은행에서 주최하는 채용연계형 인턴은 아마 이번이 처음..?이라고 알고 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;처음인만큼 초기 기획과는 다르게 흘러갔을 수도 있고, 이런 많은 인원을 통제하거나 관리하는 것이 힘들 것 같은데 정말 인턴 생활은 걱정없이 잘 즐길만큼(?) 문제없이 진행되었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그러기 위해서는 인사부 직원분들의 노력이 있었고, 특히 인턴들끼리도 서로 친해질 수 있도록 많은 방면에서 도와주셨다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&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;b&gt; 인사부와의 점심&lt;/b&gt;을 통해 서로 말 한마디라도 더 할 수 있었던 것 같다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;매일 같은 식당에서 식사하시기도 힘드셨을텐데, 인턴들끼리 친해지고 또 인사부 직원분들께서도 우리의 이야기를 듣기 위해 이런 기획을 하신 것 같았다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;또, &lt;b&gt;여러가지 프로그램&lt;/b&gt;을 통해서 인턴들끼리 친해질 수 있는 시간을 가지기도 했다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;우리들만의 CF를 찍는다든지 (정말 엄청난 CF가 나왔었다! 마지막 반전!), 하나은행의 핵심 가치를 담은 조명을 만든다든지 등의 활동을 통해 인턴들끼리 조 모임으로 서로 소통할 수 있었고, 재미있었다.&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;b&gt;04. 친절함&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;마지막으로 하고 싶은 말은 하나은행의 이미지이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;본점 부서에 있을 때도 그렇고, 영업점 OJT를 갔을 때도 그렇고 정말 하나같이 직원분들께서 너무 친절히 대해주셨다.&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;먼저, 인사부 부서 분들부터 시작해서 인턴십이 진행되는 도중 인턴들의 편의를 많이 봐주신다는 것을 느꼈고, 항상 웃으시면서 반겨주시고 배려해주셨다.&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;영업점은 나중에 또 쓸테지만 나에게 뿐만 아니라 영업점에 방문하시는 손님들께 정말 친절하게 대해주셨고, 따뜻했다. 영업점은 나중에 기회가 된다면 좀 더 자세히 쓰고싶다.&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;style8&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;정말 인턴을 마치면서 많은 생각이 들었는데, 그 중 하나는 질러보길 잘했다! 였다.&lt;/p&gt;
&lt;p 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;b&gt;인턴 마지막 수료식 때 들었던 생각은 정말 전환에 대한 결과와 상관없이 이 기회 자체만으로 좋은 경험이었기 때문에 후회가 없었다는 것이다. &lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;금융이나 하나은행에 대해 많은 것을 알게 되었고,&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt; 또 같은 고민을 공유할 수 있는 친구들을 알게 되었고, &lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;마지막으로 내가 은행과 맞을지에 대해 생각해보고 나 자신에 대해 한 걸음 더 알게 되었다.&lt;/b&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;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;또, 공채 이전에 인턴 기회가 있다면 특히 인턴에 도전해봤으면 좋겠다!&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;당연히 모든 은행들이 다 좋겠지만, 이 인턴 기회를 통해 하나은행은 나한테 특별해졌고, 함께 일하고 싶은 사람들이 있기에 더욱 가고 싶은 곳이 되었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이렇게 막연하게 지원했지만 뜻깊은 결과가 생길 수 있기 때문에 많은 사람들이 도전을 해봤으면 좋겠고,&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 글이 얼마나 도움이 될지는 모르겠지만 조금이나마 도움이 되었으면 좋겠다ㅎㅎ&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;취준생들 모두 파이팅ㅎㅎㅎ&lt;/p&gt;</description>
      <category>기타 여러가지</category>
      <category>2022 하나은행 인턴 후기</category>
      <category>인턴 후기</category>
      <category>하나은행</category>
      <category>하나은행 공채</category>
      <category>하나은행 인턴</category>
      <category>하나은행 인턴 후기</category>
      <category>하나은행 채용연계형 인턴</category>
      <author>LABONG_R</author>
      <guid isPermaLink="true">https://d-tail.tistory.com/83</guid>
      <comments>https://d-tail.tistory.com/83#entry83comment</comments>
      <pubDate>Thu, 22 Sep 2022 03:57:50 +0900</pubDate>
    </item>
    <item>
      <title>[ 2022 하나은행 채용연계형 인턴 ] 하나은행 인턴 후기 1</title>
      <link>https://d-tail.tistory.com/82</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;인턴들은 &lt;b&gt;미래성장 / 디지털 분야&lt;/b&gt;로 각각 선발 되었고, &lt;span style=&quot;color: #456771;&quot;&gt;&lt;b&gt;하나은행 을지로 본점&lt;/b&gt;&lt;/span&gt;에서 인턴 생활을 시작하게 되었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;먼저, 처음 이틀은 OT 형식으로 진행되었고 아래와 같은 활동을 하게 되었다.&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;b&gt;01. 웰컴키트&lt;/b&gt;&lt;/h2&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;1500&quot; data-origin-height=&quot;1125&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bqkA43/btrMKVqobGd/WfHFrh8jGp8Ct6WbkcuOhK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bqkA43/btrMKVqobGd/WfHFrh8jGp8Ct6WbkcuOhK/img.png&quot; data-alt=&quot;2022년 하나은행 인턴십 웰컴키트&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bqkA43/btrMKVqobGd/WfHFrh8jGp8Ct6WbkcuOhK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbqkA43%2FbtrMKVqobGd%2FWfHFrh8jGp8Ct6WbkcuOhK%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;1500&quot; height=&quot;1125&quot; data-origin-width=&quot;1500&quot; data-origin-height=&quot;1125&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;2022년 하나은행 인턴십 웰컴키트&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;내용물은 알차게 구성되어 있었는데,&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;무선 충전기, 머그컵, 모나미펜, 수첩(+수첩을 꾸밀 하나은행 캐릭터 별돌이 스티커), 사원증, 명찰&lt;/b&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;b&gt;사원증&lt;/b&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;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;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;02. 인재개발 연수&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;위에서 OT 형식이라고 말했었는데, 일정으로는 인재개발 연수로 되어 있고 &lt;b&gt;기본 교육&lt;/b&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;b&gt; 하나은행에 대한 소개&lt;/b&gt;를 비롯하여 &lt;b&gt;딜링룸, 화폐 전시관 소개&lt;/b&gt; 및 여러 강의를 들을 수 있었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;특히 &lt;b&gt;하나은행의 ESG, 비즈니스, 글로벌, 디지털 전략&lt;/b&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;이렇게 인턴이 시작되는 이틀동안 강의를 통해서 금융에 대해, 또&amp;nbsp; 하나은행에 대해 알찬 정보를 알아갈 수 있어서 좋았다.&lt;/b&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;b&gt;03. 멘토와의 만남&lt;/b&gt;&lt;/h2&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-3명씩 배치되었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;특히, &lt;b&gt;인턴들을 배치할 때 최대한 자소서를 참고하여 인턴들과 유관한 부서로 배치할 수 있도록 인사부에서 노력하신 것 같았다.&lt;/b&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;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>기타 여러가지</category>
      <category>2022 하나은행 인턴 후기</category>
      <category>인턴 후기</category>
      <category>채용전환형 인턴</category>
      <category>하나은행</category>
      <category>하나은행 공채</category>
      <category>하나은행 인턴</category>
      <category>하나은행 인턴 후기</category>
      <author>LABONG_R</author>
      <guid isPermaLink="true">https://d-tail.tistory.com/82</guid>
      <comments>https://d-tail.tistory.com/82#entry82comment</comments>
      <pubDate>Thu, 22 Sep 2022 02:28:43 +0900</pubDate>
    </item>
    <item>
      <title>[ 2022 하나은행 채용연계형 인턴 ] 실무진 면접(1차 면접) 전형 후기</title>
      <link>https://d-tail.tistory.com/81</link>
      <description>&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;1695&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bNruZN/btrMFi8bOkB/BvfmpQKkr5O1Bq4780Hmd1/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bNruZN/btrMFi8bOkB/BvfmpQKkr5O1Bq4780Hmd1/img.jpg&quot; data-alt=&quot;2022 하나은행 채용 연계형 인턴 모집 포스터&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bNruZN/btrMFi8bOkB/BvfmpQKkr5O1Bq4780Hmd1/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbNruZN%2FbtrMFi8bOkB%2FBvfmpQKkr5O1Bq4780Hmd1%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1200&quot; height=&quot;1695&quot; data-origin-width=&quot;1200&quot; data-origin-height=&quot;1695&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;2022 하나은행 채용 연계형 인턴 모집 포스터&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&amp;nbsp;&lt;/h3&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;[ 하나은행 채용연계형 인턴 모집 전형 ]&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- &lt;b&gt;기간&lt;/b&gt; : 6월 서류 시작, 7월 말 최종 결과 발표&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- &lt;b&gt;전형&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;1. 서류전형&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;2. 필기전형 ( 미래성장 - NCS + TOPCIT 비즈니스 영역, 디지털 - TOPCIT 전영역 )&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;2-1. 필기전형 ( 미래성장, 디지털 - 온라인 인성검사 )&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;3. 실무진 면접전형 ( 행동사례 면접, PT 면접 )&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;4. 건강검사&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;5. 인턴십 수행&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;6. 임원 면접전형&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style7&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;우선 4번까지의 과정을 거쳐서 합격이 되어, 8월 1일부터 6주간 하나은행에서 인턴을 할 수 있었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;합격과 불합격 결과를 떠나서 좋은 추억을 만들 수 있었던 인턴 활동이었기 때문에, 혹시나 관심있는 누군가에게 도움이 될 수 있길 바라며 후기글을 써본다!&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;(또한, 하반기 공채전형이 시작되어서 하나은행에 관심 있는 사람들에게 더욱 도움이 되었으면 하는 마음에..ㅎㅎ)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;먼저, 서류와 필기전형은 건너뛰고!! 면접 전형부터 말할까 한다..&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;(글이 길어져서 이번 글은 면접전형만 다루게 되었다.)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;[ 실무진 면접전형 ]&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;실무진 면접전형은 청라에 위치한 &lt;a href=&quot;https://m.place.naver.com/place/824250980/review/ugc?type=list&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;&lt;b&gt;하나 글로벌캠퍼스&lt;/b&gt;&lt;/a&gt;에서 진행되었다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;3024&quot; data-origin-height=&quot;3024&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bh0yGP/btrMHJK6fB2/mouUOxWUoyiVFkKa3Ydqc1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bh0yGP/btrMHJK6fB2/mouUOxWUoyiVFkKa3Ydqc1/img.png&quot; data-alt=&quot;하나은행 면접 전형 위치 안내&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bh0yGP/btrMHJK6fB2/mouUOxWUoyiVFkKa3Ydqc1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbh0yGP%2FbtrMHJK6fB2%2FmouUOxWUoyiVFkKa3Ydqc1%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;3024&quot; height=&quot;3024&quot; data-origin-width=&quot;3024&quot; data-origin-height=&quot;3024&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;하나은행 면접 전형 위치 안내&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;나는 차를 타고 가서 몰랐지만, 다른 친구들 이야기를 들어보면 공항철도 청라 국제도시 역에서부터 이런 안내 푯말이 있었다고 한다. (&lt;span style=&quot;color: #8cb3be;&quot;&gt;&lt;b&gt;친절친절&lt;/b&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;/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;b&gt;PT 면접&lt;/b&gt;으로 구성되어 있었는데,&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;행동사례면접&lt;/b&gt;은 서류 전형에서 쓴 자소서를 기반으로 진행되는 면접이었고,&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;PT 면접&lt;/b&gt;은 종이 한 장에 두가지의 PT 주제와 관련된 글을 읽고, 한가지의 주제를 골라 주어진 시간내에 자신의 의견을 발표하는 면접이었다.&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: #ef5369;&quot;&gt;&lt;b&gt;면접 분위기&lt;/b&gt;&lt;/span&gt; 였다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;정말 &lt;b&gt;면접관&lt;/b&gt; 분들이 엄청 잘 반응해주시면서, 웃어주시고 지원자들의 긴장감을 덜 수 있도록 배려해주셨다는 걸 강하게 느낄 수 있었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;또한, 면접 진행을 총괄하셨을 것으로 예상되는 &lt;b&gt;인사부 부서&lt;/b&gt; 분들께서도 진행하시면서도 지원자들이 긴장감을 덜 수 있게 말씀도 계속 해주시고, 분위기가 무겁지 않도록 이끌어 주시면서도 면접 진행하면서 발생하는 대기 시간을 효율적으로 보내게 하기 위해서 고민하신 것이 눈에 띄었다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;특히, &lt;b&gt;마지막에 모든 면접이 끝나고 지원자들이 나갈 때 인사부 부서 분들께서 환영(이별?)의 박수를 쳐주시면서 고생하셨다고, 수고하셨다고 배웅해주셨는데,&lt;/b&gt;&amp;nbsp; &lt;b&gt;이렇게 모든 인원 분들이 나오셔서 배웅해주는 면접은 처음이었어서&lt;/b&gt; &lt;b&gt;감동의 눈물 한 방울이 찔끔 나올 정도로 따땃한 기분이 들고 정말 결과에 상관없이 좋은 면접 기억으로 남을 것 같았다.&lt;/b&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: #ef5369;&quot;&gt;&lt;b&gt;면접 기념품&lt;/b&gt;&lt;/span&gt; 이었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다른 곳에서도 면접비를 주는 것은 알지만, 하나은행에서는 &lt;b&gt;면접비 플러스 각자의 이름이 각인된 LAMY 볼펜&lt;/b&gt;을 주었다..ㅎㅎ&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bjbhSg/btrMIrXAktW/ZHZzBnc6m7bbZnxJQ922OK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bjbhSg/btrMIrXAktW/ZHZzBnc6m7bbZnxJQ922OK/img.png&quot; data-origin-width=&quot;2365&quot; data-origin-height=&quot;2437&quot; data-is-animation=&quot;false&quot; style=&quot;width: 36.2551%; margin-right: 10px;&quot; data-widthpercent=&quot;36.68&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bjbhSg/btrMIrXAktW/ZHZzBnc6m7bbZnxJQ922OK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbjbhSg%2FbtrMIrXAktW%2FZHZzBnc6m7bbZnxJQ922OK%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;2365&quot; height=&quot;2437&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/OpUUq/btrMEs4v8IK/Y6o0cKmITOHMxOod45SJK1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/OpUUq/btrMEs4v8IK/Y6o0cKmITOHMxOod45SJK1/img.png&quot; data-origin-width=&quot;2367&quot; data-origin-height=&quot;1413&quot; data-is-animation=&quot;false&quot; style=&quot;width: 62.5821%;&quot; data-widthpercent=&quot;63.32&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/OpUUq/btrMEs4v8IK/Y6o0cKmITOHMxOod45SJK1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FOpUUq%2FbtrMEs4v8IK%2FY6o0cKmITOHMxOod45SJK1%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;2367&quot; height=&quot;1413&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
  &lt;figcaption&gt;면접비와 볼펜&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;특히, &lt;b&gt;'하나로 연결된 모두의 금융'&lt;/b&gt; 이 하나은행의 2030 비전인데, 여기에 이름을 넣어서 &lt;b&gt;'하나로 연결된 000'&lt;/b&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;&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&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;1095&quot; data-origin-height=&quot;205&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/78b6i/btrMIGNMohO/Wxr3YojMZqNYaaHvQKdwr1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/78b6i/btrMIGNMohO/Wxr3YojMZqNYaaHvQKdwr1/img.png&quot; data-alt=&quot;밑은 건강 검진 안내&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/78b6i/btrMIGNMohO/Wxr3YojMZqNYaaHvQKdwr1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F78b6i%2FbtrMIGNMohO%2FWxr3YojMZqNYaaHvQKdwr1%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;1095&quot; height=&quot;205&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;1095&quot; data-origin-height=&quot;205&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;밑은 건강 검진 안내&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>기타 여러가지</category>
      <category>2022 하나은행 인턴 후기</category>
      <category>HBTI</category>
      <category>금융권 취업</category>
      <category>하나은행</category>
      <category>하나은행 공채</category>
      <category>하나은행 면접</category>
      <category>하나은행 면접 후기</category>
      <category>하나은행 인턴</category>
      <category>하나은행 취업</category>
      <author>LABONG_R</author>
      <guid isPermaLink="true">https://d-tail.tistory.com/81</guid>
      <comments>https://d-tail.tistory.com/81#entry81comment</comments>
      <pubDate>Wed, 21 Sep 2022 15:12:19 +0900</pubDate>
    </item>
    <item>
      <title>[ Level 2 ] 튜플 - 파이썬</title>
      <link>https://d-tail.tistory.com/78</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;문제 설명&lt;/b&gt;&lt;/p&gt;
&lt;div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;셀수있는 수량의 순서있는 열거 또는 어떤 순서를 따르는 요소들의 모음을 튜플(tuple)이라고 합니다. n개의 요소를 가진 튜플을 n-튜플(n-tuple)이라고 하며, 다음과 같이 표현할 수 있습니다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;(a1, a2, a3, ..., an)&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;튜플은 다음과 같은 성질을 가지고 있습니다.&lt;/p&gt;
&lt;ol style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;중복된 원소가 있을 수 있습니다. ex : (2, 3, 1, 2)&lt;/li&gt;
&lt;li&gt;원소에 정해진 순서가 있으며, 원소의 순서가 다르면 서로 다른 튜플입니다. ex : (1, 2, 3) &amp;ne; (1, 3, 2)&lt;/li&gt;
&lt;li&gt;튜플의 원소 개수는 유한합니다.&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;원소의 개수가 n개이고,&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;u&gt;&lt;b&gt;중복되는 원소가 없는&lt;/b&gt;&lt;/u&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;튜플&lt;span&gt;&amp;nbsp;&lt;/span&gt;(a1, a2, a3, ..., an)이 주어질 때(단, a1, a2, ..., an은 자연수), 이는 다음과 같이 집합 기호 '{', '}'를 이용해 표현할 수 있습니다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;{{a1}, {a1, a2}, {a1, a2, a3}, {a1, a2, a3, a4}, ... {a1, a2, a3, a4, ..., an}}&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;예를 들어 튜플이 (2, 1, 3, 4)인 경우 이는&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;{{2}, {2, 1}, {2, 1, 3}, {2, 1, 3, 4}}&lt;/li&gt;
&lt;/ul&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;{{2}, {2, 1}, {2, 1, 3}, {2, 1, 3, 4}}&lt;/li&gt;
&lt;li&gt;{{2, 1, 3, 4}, {2}, {2, 1, 3}, {2, 1}}&lt;/li&gt;
&lt;li&gt;{{1, 2, 3}, {2, 1}, {1, 2, 4, 3}, {2}}&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;는 모두 같은 튜플 (2, 1, 3, 4)를 나타냅니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;특정 튜플을 표현하는 집합이 담긴 문자열 s가 매개변수로 주어질 때, s가 표현하는 튜플을 배열에 담아 return 하도록 solution 함수를 완성해주세요.&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;[제한사항]&lt;/b&gt;&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;s의 길이는 5 이상 1,000,000 이하입니다.&lt;/li&gt;
&lt;li&gt;s는 숫자와 '{', '}', ',' 로만 이루어져 있습니다.&lt;/li&gt;
&lt;li&gt;숫자가 0으로 시작하는 경우는 없습니다.&lt;/li&gt;
&lt;li&gt;s는 항상 중복되는 원소가 없는 튜플을 올바르게 표현하고 있습니다.&lt;/li&gt;
&lt;li&gt;s가 표현하는 튜플의 원소는 1 이상 100,000 이하인 자연수입니다.&lt;/li&gt;
&lt;li&gt;return 하는 배열의 길이가 1 이상 500 이하인 경우만 입력으로 주어집니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;&lt;b&gt;[입출력 예]&lt;/b&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;592&quot; data-origin-height=&quot;311&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/beUOo9/btrGB4muJaD/AuuBU5CeNcCBPdn46P3J9k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/beUOo9/btrGB4muJaD/AuuBU5CeNcCBPdn46P3J9k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/beUOo9/btrGB4muJaD/AuuBU5CeNcCBPdn46P3J9k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbeUOo9%2FbtrGB4muJaD%2FAuuBU5CeNcCBPdn46P3J9k%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;592&quot; height=&quot;311&quot; data-origin-width=&quot;592&quot; data-origin-height=&quot;311&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;b&gt;입출력 예에 대한 설명&lt;/b&gt;&lt;b&gt;입출력 예 #1&lt;/b&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;문제 예시와 같습니다.&lt;/p&gt;
&lt;b&gt;입출력 예 #2&lt;/b&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;문제 예시와 같습니다.&lt;/p&gt;
&lt;b&gt;입출력 예 #3&lt;/b&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;(111, 20)을 집합 기호를 이용해 표현하면 {{111}, {111,20}}이 되며, 이는 {{20,111},{111}}과 같습니다.&lt;/p&gt;
&lt;b&gt;입출력 예 #4&lt;/b&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;(123)을 집합 기호를 이용해 표현하면 {{123}} 입니다.&lt;/p&gt;
&lt;b&gt;입출력 예 #5&lt;/b&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;(3, 2, 4, 1)을 집합 기호를 이용해 표현하면 {{3},{3,2},{3,2,4},{3,2,4,1}}이 되며, 이는 {{4,2,3},{3},{2,3,4,1},{2,3}}과 같습니다.&lt;/p&gt;
&lt;/div&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style8&quot; /&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;size18&quot;&gt;1. 주어진 문장을 각 글자대로 넣어서 새로운 리스트 생성하기&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;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;b&gt;1번&lt;/b&gt;의 경우, 먼저 {{}} 으로 주어지는 값중 제일 바깥쪽의 {}은 필요 없으므로 반복문에서 둘을 제외하고 순환하도록 했다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그리고 '{'와 ',' 다음으로 시작하는 문자의 인덱스 값을 저장해두고, '}'나 ','로 닫힐 때 임시 리스트안에 요소를 추가하였다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;시작하는 문자의 인덱스 값을 정해둔 이유는 한 자리수면 else로 처리했겠지만, 111과 같은 두 자리, 세자리 이상의 숫자를 처리하기 위해서이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;2번&lt;/b&gt;은 단순히 key와 람다를 이용해서 길이를 통해 정렬하고, 길이가 짧은 요소부터 순환하면서 정답 리스트에 요소가 안들어가 있으면 추가하였다. (길이가 제일 긴 요소를 그냥 넣으면 되는 게 아니라, (a1), (a1,a2), (a1,a2,a3) .. 의 순서로 요소가 정렬 되어야하기 때문)&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;pre id=&quot;code_1657033728940&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;def solution(s):
    tup = []
    
    s = list(s)
    tmp, ck = [], 1
    for i in range(1,len(s)-1):
        if  s[i] == &quot;}&quot;:
            tmp.append(int(''.join(s[ck:i])))
            tup.append(tmp)
            tmp = []
        elif s[i] == &quot;,&quot; and s[i-1] != &quot;}&quot;:
            tmp.append(int(''.join(s[ck:i])))
        elif s[i-1] == &quot;,&quot; or s[i-1] == &quot;{&quot;:
            ck = i
            
    tup = sorted(tup, key = lambda x:len(x), reverse = False)
    
    answer = []
    for i in range(len(tup)):
        for j in range(len(tup[i])):
            if tup[i][j] not in answer:
                answer.append(tup[i][j])
    
    return answer&lt;/code&gt;&lt;/pre&gt;</description>
      <category>프로그래머스 풀이</category>
      <category>Python</category>
      <category>튜플</category>
      <category>파이썬</category>
      <category>프로그래머스</category>
      <author>LABONG_R</author>
      <guid isPermaLink="true">https://d-tail.tistory.com/78</guid>
      <comments>https://d-tail.tistory.com/78#entry78comment</comments>
      <pubDate>Wed, 6 Jul 2022 00:14:30 +0900</pubDate>
    </item>
    <item>
      <title>[ Level 2 ] 수식 최대화 - 파이썬</title>
      <link>https://d-tail.tistory.com/77</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;문제 설명&lt;/b&gt;&lt;/p&gt;
&lt;div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;IT 벤처 회사를 운영하고 있는&lt;span&gt;&amp;nbsp;&lt;/span&gt;라이언은 매년 사내 해커톤 대회를 개최하여 우승자에게 상금을 지급하고 있습니다.&lt;br /&gt;이번 대회에서는 우승자에게 지급되는 상금을 이전 대회와는 다르게 다음과 같은 방식으로 결정하려고 합니다.&lt;br /&gt;해커톤 대회에 참가하는 모든 참가자들에게는 숫자들과 3가지의 연산문자(+, -, *) 만으로 이루어진 연산 수식이 전달되며, 참가자의 미션은 전달받은 수식에 포함된 연산자의 우선순위를 자유롭게 재정의하여 만들 수 있는 가장 큰 숫자를 제출하는 것입니다.&lt;br /&gt;단, 연산자의 우선순위를 새로 정의할 때, 같은 순위의 연산자는 없어야 합니다. 즉,&lt;span&gt;&amp;nbsp;&lt;/span&gt;+&lt;span&gt;&amp;nbsp;&lt;/span&gt;&amp;gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;-&lt;span&gt;&amp;nbsp;&lt;/span&gt;&amp;gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;*&lt;span&gt;&amp;nbsp;&lt;/span&gt;또는&lt;span&gt;&amp;nbsp;&lt;/span&gt;-&lt;span&gt;&amp;nbsp;&lt;/span&gt;&amp;gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;*&lt;span&gt;&amp;nbsp;&lt;/span&gt;&amp;gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;+&lt;span&gt;&amp;nbsp;&lt;/span&gt;등과 같이 연산자 우선순위를 정의할 수 있으나&lt;span&gt;&amp;nbsp;&lt;/span&gt;+,*&lt;span&gt;&amp;nbsp;&lt;/span&gt;&amp;gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;-&lt;span&gt;&amp;nbsp;&lt;/span&gt;또는&lt;span&gt;&amp;nbsp;&lt;/span&gt;*&lt;span&gt;&amp;nbsp;&lt;/span&gt;&amp;gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;+,-처럼 2개 이상의 연산자가 동일한 순위를 가지도록 연산자 우선순위를 정의할 수는 없습니다. 수식에 포함된 연산자가 2개라면 정의할 수 있는 연산자 우선순위 조합은 2! = 2가지이며, 연산자가 3개라면 3! = 6가지 조합이 가능합니다.&lt;br /&gt;만약 계산된 결과가 음수라면 해당 숫자의 절댓값으로 변환하여 제출하며 제출한 숫자가 가장 큰 참가자를 우승자로 선정하며, 우승자가 제출한 숫자를 우승상금으로 지급하게 됩니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;예를 들어, 참가자 중&lt;span&gt;&amp;nbsp;&lt;/span&gt;네오가 아래와 같은 수식을 전달받았다고 가정합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&quot;100-200*300-500+20&quot;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;일반적으로 수학 및 전산학에서 약속된 연산자 우선순위에 따르면 더하기와 빼기는 서로 동등하며 곱하기는 더하기, 빼기에 비해 우선순위가 높아&lt;span&gt;&amp;nbsp;&lt;/span&gt;*&lt;span&gt;&amp;nbsp;&lt;/span&gt;&amp;gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;+,-&lt;span&gt;&amp;nbsp;&lt;/span&gt;로 우선순위가 정의되어 있습니다.&lt;br /&gt;대회 규칙에 따라&lt;span&gt;&amp;nbsp;&lt;/span&gt;+&lt;span&gt;&amp;nbsp;&lt;/span&gt;&amp;gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;-&lt;span&gt;&amp;nbsp;&lt;/span&gt;&amp;gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;*&lt;span&gt;&amp;nbsp;&lt;/span&gt;또는&lt;span&gt;&amp;nbsp;&lt;/span&gt;-&lt;span&gt;&amp;nbsp;&lt;/span&gt;&amp;gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;*&lt;span&gt;&amp;nbsp;&lt;/span&gt;&amp;gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;+&lt;span&gt;&amp;nbsp;&lt;/span&gt;등과 같이 연산자 우선순위를 정의할 수 있으나&lt;span&gt;&amp;nbsp;&lt;/span&gt;+,*&lt;span&gt;&amp;nbsp;&lt;/span&gt;&amp;gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;-&lt;span&gt;&amp;nbsp;&lt;/span&gt;또는&lt;span&gt;&amp;nbsp;&lt;/span&gt;*&lt;span&gt;&amp;nbsp;&lt;/span&gt;&amp;gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;+,-&lt;span&gt;&amp;nbsp;&lt;/span&gt;처럼 2개 이상의 연산자가 동일한 순위를 가지도록 연산자 우선순위를 정의할 수는 없습니다.&lt;br /&gt;수식에 연산자가 3개 주어졌으므로 가능한 연산자 우선순위 조합은 3! = 6가지이며, 그 중&lt;span&gt;&amp;nbsp;&lt;/span&gt;+&lt;span&gt;&amp;nbsp;&lt;/span&gt;&amp;gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;-&lt;span&gt;&amp;nbsp;&lt;/span&gt;&amp;gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;*&lt;span&gt;&amp;nbsp;&lt;/span&gt;로 연산자 우선순위를 정한다면 결괏값은 22,000원이 됩니다.&lt;br /&gt;반면에&lt;span&gt;&amp;nbsp;&lt;/span&gt;*&lt;span&gt;&amp;nbsp;&lt;/span&gt;&amp;gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;+&lt;span&gt;&amp;nbsp;&lt;/span&gt;&amp;gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;-&lt;span&gt;&amp;nbsp;&lt;/span&gt;로 연산자 우선순위를 정한다면 수식의 결괏값은 -60,420 이지만, 규칙에 따라 우승 시 상금은 절댓값인 60,420원이 됩니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;참가자에게 주어진 연산 수식이 담긴 문자열 expression이 매개변수로 주어질 때, 우승 시 받을 수 있는 가장 큰 상금 금액을 return 하도록 solution 함수를 완성해주세요.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;b&gt;[제한사항]&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;expression은 길이가 3 이상 100 이하인 문자열입니다.&lt;/li&gt;
&lt;li&gt;expression은 공백문자, 괄호문자 없이 오로지 숫자와 3가지의 연산자(+, -, *) 만으로 이루어진 올바른 중위표기법(연산의 두 대상 사이에 연산기호를 사용하는 방식)으로 표현된 연산식입니다. 잘못된 연산식은 입력으로 주어지지 않습니다.
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;즉,&lt;span&gt;&amp;nbsp;&lt;/span&gt;&quot;402+-561*&quot;처럼 잘못된 수식은 올바른 중위표기법이 아니므로 주어지지 않습니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;expression의 피연산자(operand)는 0 이상 999 이하의 숫자입니다.
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;즉,&lt;span&gt;&amp;nbsp;&lt;/span&gt;&quot;100-2145*458+12&quot;처럼 999를 초과하는 피연산자가 포함된 수식은 입력으로 주어지지 않습니다.&lt;/li&gt;
&lt;li&gt;&quot;-56+100&quot;처럼 피연산자가 음수인 수식도 입력으로 주어지지 않습니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;expression은 적어도 1개 이상의 연산자를 포함하고 있습니다.&lt;/li&gt;
&lt;li&gt;연산자 우선순위를 어떻게 적용하더라도, expression의 중간 계산값과 최종 결괏값은 절댓값이 263&lt;span&gt;&amp;nbsp;&lt;/span&gt;- 1 이하가 되도록 입력이 주어집니다.&lt;/li&gt;
&lt;li&gt;같은 연산자끼리는 앞에 있는 것의 우선순위가 더 높습니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;&lt;b&gt;입출력 예&lt;/b&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;467&quot; data-origin-height=&quot;170&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bsNzC3/btrGhZeTPCx/46u1V57HvKloJPdFM780IK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bsNzC3/btrGhZeTPCx/46u1V57HvKloJPdFM780IK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bsNzC3/btrGhZeTPCx/46u1V57HvKloJPdFM780IK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbsNzC3%2FbtrGhZeTPCx%2F46u1V57HvKloJPdFM780IK%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;467&quot; height=&quot;170&quot; data-origin-width=&quot;467&quot; data-origin-height=&quot;170&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;b&gt;입출력 예에 대한 설명&lt;/b&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;입출력 예 #1&lt;/b&gt;&lt;br /&gt;*&lt;span&gt;&amp;nbsp;&lt;/span&gt;&amp;gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;+&lt;span&gt;&amp;nbsp;&lt;/span&gt;&amp;gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;-&lt;span&gt;&amp;nbsp;&lt;/span&gt;로 연산자 우선순위를 정했을 때, 가장 큰 절댓값을 얻을 수 있습니다.&lt;br /&gt;연산 순서는 아래와 같습니다.&lt;br /&gt;100-200*300-500+20&lt;br /&gt;=&lt;span&gt;&amp;nbsp;&lt;/span&gt;100-(200*300)-500+20&lt;br /&gt;=&lt;span&gt;&amp;nbsp;&lt;/span&gt;100-60000-(500+20)&lt;br /&gt;=&lt;span&gt;&amp;nbsp;&lt;/span&gt;(100-60000)-520&lt;br /&gt;=&lt;span&gt;&amp;nbsp;&lt;/span&gt;(-59900-520)&lt;br /&gt;=&lt;span&gt;&amp;nbsp;&lt;/span&gt;-60420&lt;br /&gt;따라서, 우승 시 받을 수 있는 상금은 |-60420| = 60420 입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;입출력 예 #2&lt;/b&gt;&lt;br /&gt;-&lt;span&gt;&amp;nbsp;&lt;/span&gt;&amp;gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;*&lt;span&gt;&amp;nbsp;&lt;/span&gt;로 연산자 우선순위를 정했을 때, 가장 큰 절댓값을 얻을 수 있습니다.&lt;br /&gt;연산 순서는 아래와 같습니다.(expression에서&lt;span&gt;&amp;nbsp;&lt;/span&gt;+&lt;span&gt;&amp;nbsp;&lt;/span&gt;연산자는 나타나지 않았으므로, 고려할 필요가 없습니다.)&lt;br /&gt;50*6-3*2&lt;br /&gt;=&lt;span&gt;&amp;nbsp;&lt;/span&gt;50*(6-3)*2&lt;br /&gt;=&lt;span&gt;&amp;nbsp;&lt;/span&gt;(50*3)*2&lt;br /&gt;=&lt;span&gt;&amp;nbsp;&lt;/span&gt;150*2&lt;br /&gt;=&lt;span&gt;&amp;nbsp;&lt;/span&gt;300&lt;br /&gt;따라서, 우승 시 받을 수 있는 상금은 300 입니다.&lt;/p&gt;
&lt;/div&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style8&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;먼저 크게 세 구역을 문제를 나눠볼 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;1. 숫자와 연산기호를 나누어 리스트를 생성한다. 이 때, 따로 연산기호가 어떤것이 있는지 나타내주는 리스트도 생성한다.&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;2. 연산기호를 수행하는 수학 함수를 생성한다.&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;3. 연산기호의 모든 우선순위를 생성하여 각각에 대한 값을 구하고 절댓값의 최대값을 구한다.&lt;/b&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;b&gt;1번&lt;/b&gt;의 경우, 리스트를 순환하다가 연산기호를 만나면, 그 앞까지를 숫자 리스트에 넣어주고, 연산기호를 연산기호 리스트에 넣어준다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;이 때, 마지막 숫자는 안들어가므로 따로 한 줄을 작성해주어야 한다!&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;또한, tmp라는 리스트를 하나 더 만들어 주어 중복없는 연산기호 리스트를 만든다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;(지금 쓰다보니, set()을 이용해서 중복을 없애는 게 더 나을 수도!)&lt;/p&gt;
&lt;pre id=&quot;code_1656711433703&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;tmp = []
    num, sc, sc1 = [], [], 0
    for i in range(len(expression)):
        if expression[i] in ['-','+','*']:
            num.append(int(expression[sc1:i]))
            sc.append(expression[i])
            sc1 = i+1
            if expression[i] not in tmp:
                tmp.append(expression[i])
    num.append(int(expression[sc1:]))&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;2번&lt;/b&gt;은 각각 연산기호에 해당하는 수학 연산을 해주는 간단한 함수이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;연산기호가 str 형태이므로 바로 사용하면 그 연산을 못하고 그냥 문자일뿐이기 때문에 이 함수가 필요하다.&lt;/p&gt;
&lt;pre id=&quot;code_1656711476503&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;def mathh(a, b):
        answer = 0
        if b == '-':
            answer = a[0]-a[1]
        elif b == '+':
            answer = a[0]+a[1]
        else:
            answer = a[0]*a[1]
        return answer&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;마지막으로 &lt;b&gt;3번&lt;/b&gt;은 연산기호의 우선순위를 나타내주는 모든 경우의 수를 구하고 (permutations 이용)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;각각에 따라 연산을 진행하면서 결과의 절댓값의 최댓값을 구해준다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;역시나 pop()을 쓰게 되면, 인덱싱에서 실수를 하게 된다..ㅠㅠ&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 부분을 항상 유의하면서 코드를 짜야할 것 같다.&lt;/p&gt;
&lt;pre id=&quot;code_1656711527927&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;priority = list(map(''.join,permutations(tmp,len(tmp))))
    
    for i in range(len(priority)):
        num1, sc1 = deepcopy(num), deepcopy(sc)
        for j in priority[i]:
            q=0
            while q&amp;lt;=len(sc1)-1:
                if sc1[q] == j:
                    tmp = mathh([num1.pop(q), num1.pop(q)], sc1.pop(q))
                    num1.insert(q, tmp)
                    q-=1
                q+=1
        
        answer = max(answer, abs(num1[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;
&lt;p data-ke-size=&quot;size16&quot;&gt;위의 과정을 모두 합치면 아래와 같은 코드를 구현할 수 있다.&lt;/p&gt;
&lt;pre id=&quot;code_1656711256851&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;from itertools import permutations
from copy import deepcopy
def solution(expression):
    answer = 0
    
    tmp = []
    num, sc, sc1 = [], [], 0
    for i in range(len(expression)):
        if expression[i] in ['-','+','*']:
            num.append(int(expression[sc1:i]))
            sc.append(expression[i])
            sc1 = i+1
            if expression[i] not in tmp:
                tmp.append(expression[i])
    num.append(int(expression[sc1:]))
        
    def mathh(a, b):
        answer = 0
        if b == '-':
            answer = a[0]-a[1]
        elif b == '+':
            answer = a[0]+a[1]
        else:
            answer = a[0]*a[1]
        return answer
    
    priority = list(map(''.join,permutations(tmp,len(tmp))))
    
    for i in range(len(priority)):
        num1, sc1 = deepcopy(num), deepcopy(sc)
        for j in priority[i]:
            q=0
            while q&amp;lt;=len(sc1)-1:
                if sc1[q] == j:
                    tmp = mathh([num1.pop(q), num1.pop(q)], sc1.pop(q))
                    num1.insert(q, tmp)
                    q-=1
                q+=1
        
        answer = max(answer, abs(num1[0]))
   
    return answer&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;길이가,,ㅎㅎ,,&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;역시나 파이썬같지 않은 코드...&lt;/p&gt;</description>
      <category>프로그래머스 풀이</category>
      <category>Python</category>
      <category>수식 최대화</category>
      <category>파이썬</category>
      <category>프로그래머스</category>
      <author>LABONG_R</author>
      <guid isPermaLink="true">https://d-tail.tistory.com/77</guid>
      <comments>https://d-tail.tistory.com/77#entry77comment</comments>
      <pubDate>Sat, 2 Jul 2022 06:41:26 +0900</pubDate>
    </item>
    <item>
      <title>[ Level 2 ] 뉴스 클러스터링 - 파이썬</title>
      <link>https://d-tail.tistory.com/76</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;문제 설명&lt;/b&gt;&lt;/p&gt;
&lt;div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;여러 언론사에서 쏟아지는 뉴스, 특히 속보성 뉴스를 보면 비슷비슷한 제목의 기사가 많아 정작 필요한 기사를 찾기가 어렵다. Daum 뉴스의 개발 업무를 맡게 된 신입사원 튜브는 사용자들이 편리하게 다양한 뉴스를 찾아볼 수 있도록 문제점을 개선하는 업무를 맡게 되었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;개발의 방향을 잡기 위해 튜브는 우선 최근 화제가 되고 있는 &quot;카카오 신입 개발자 공채&quot; 관련 기사를 검색해보았다.&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;카카오, 신입 공채.. &quot;코딩 실력만 본다&quot;&lt;/li&gt;
&lt;li&gt;카카오 &quot;코딩 능력만으로 2018 신입 개발자 뽑는다&quot;&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;기사의 제목을 기준으로 &quot;블라인드 전형&quot;에 주목하는 기사와 &quot;코딩 테스트&quot;에 주목하는 기사로 나뉘는 걸 발견했다. 튜브는 이들을 각각 묶어서 보여주면 카카오 공채 관련 기사를 찾아보는 사용자에게 유용할 듯싶었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;유사한 기사를 묶는 기준을 정하기 위해서 논문과 자료를 조사하던 튜브는 &quot;자카드 유사도&quot;라는 방법을 찾아냈다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;자카드 유사도는 집합 간의 유사도를 검사하는 여러 방법 중의 하나로 알려져 있다. 두 집합&lt;span&gt;&amp;nbsp;&lt;/span&gt;A,&lt;span&gt;&amp;nbsp;&lt;/span&gt;B&lt;span&gt;&amp;nbsp;&lt;/span&gt;사이의 자카드 유사도&lt;span&gt;&amp;nbsp;&lt;/span&gt;J(A, B)는 두 집합의 교집합 크기를 두 집합의 합집합 크기로 나눈 값으로 정의된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;예를 들어 집합&lt;span&gt;&amp;nbsp;&lt;/span&gt;A&lt;span&gt;&amp;nbsp;&lt;/span&gt;= {1, 2, 3}, 집합&lt;span&gt;&amp;nbsp;&lt;/span&gt;B&lt;span&gt;&amp;nbsp;&lt;/span&gt;= {2, 3, 4}라고 할 때, 교집합&lt;span&gt;&amp;nbsp;&lt;/span&gt;A &amp;cap; B&lt;span&gt;&amp;nbsp;&lt;/span&gt;= {2, 3}, 합집합&lt;span&gt;&amp;nbsp;&lt;/span&gt;A &amp;cup; B&lt;span&gt;&amp;nbsp;&lt;/span&gt;= {1, 2, 3, 4}이 되므로, 집합&lt;span&gt;&amp;nbsp;&lt;/span&gt;A,&lt;span&gt;&amp;nbsp;&lt;/span&gt;B&lt;span&gt;&amp;nbsp;&lt;/span&gt;사이의 자카드 유사도&lt;span&gt;&amp;nbsp;&lt;/span&gt;J(A, B)&lt;span&gt;&amp;nbsp;&lt;/span&gt;= 2/4 = 0.5가 된다. 집합 A와 집합 B가 모두 공집합일 경우에는 나눗셈이 정의되지 않으니 따로&lt;span&gt;&amp;nbsp;&lt;/span&gt;J(A, B)&lt;span&gt;&amp;nbsp;&lt;/span&gt;= 1로 정의한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;자카드 유사도는 원소의 중복을 허용하는 다중집합에 대해서 확장할 수 있다. 다중집합&lt;span&gt;&amp;nbsp;&lt;/span&gt;A는 원소 &quot;1&quot;을 3개 가지고 있고, 다중집합&lt;span&gt;&amp;nbsp;&lt;/span&gt;B는 원소 &quot;1&quot;을 5개 가지고 있다고 하자. 이 다중집합의 교집합&lt;span&gt;&amp;nbsp;&lt;/span&gt;A &amp;cap; B는 원소 &quot;1&quot;을 min(3, 5)인 3개, 합집합&lt;span&gt;&amp;nbsp;&lt;/span&gt;A &amp;cup; B는 원소 &quot;1&quot;을 max(3, 5)인 5개 가지게 된다. 다중집합&lt;span&gt;&amp;nbsp;&lt;/span&gt;A&lt;span&gt;&amp;nbsp;&lt;/span&gt;= {1, 1, 2, 2, 3}, 다중집합&lt;span&gt;&amp;nbsp;&lt;/span&gt;B&lt;span&gt;&amp;nbsp;&lt;/span&gt;= {1, 2, 2, 4, 5}라고 하면, 교집합&lt;span&gt;&amp;nbsp;&lt;/span&gt;A &amp;cap; B&lt;span&gt;&amp;nbsp;&lt;/span&gt;= {1, 2, 2}, 합집합&lt;span&gt;&amp;nbsp;&lt;/span&gt;A &amp;cup; B&lt;span&gt;&amp;nbsp;&lt;/span&gt;= {1, 1, 2, 2, 3, 4, 5}가 되므로, 자카드 유사도&lt;span&gt;&amp;nbsp;&lt;/span&gt;J(A, B)&lt;span&gt;&amp;nbsp;&lt;/span&gt;= 3/7, 약 0.42가 된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이를 이용하여 문자열 사이의 유사도를 계산하는데 이용할 수 있다. 문자열 &quot;FRANCE&quot;와 &quot;FRENCH&quot;가 주어졌을 때, 이를 두 글자씩 끊어서 다중집합을 만들 수 있다. 각각 {FR, RA, AN, NC, CE}, {FR, RE, EN, NC, CH}가 되며, 교집합은 {FR, NC}, 합집합은 {FR, RA, AN, NC, CE, RE, EN, CH}가 되므로, 두 문자열 사이의 자카드 유사도&lt;span&gt;&amp;nbsp;&lt;/span&gt;J(&quot;FRANCE&quot;, &quot;FRENCH&quot;)&lt;span&gt;&amp;nbsp;&lt;/span&gt;= 2/8 = 0.25가 된다.&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;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;입력으로는&lt;span&gt;&amp;nbsp;&lt;/span&gt;str1과&lt;span&gt;&amp;nbsp;&lt;/span&gt;str2의 두 문자열이 들어온다. 각 문자열의 길이는 2 이상, 1,000 이하이다.&lt;/li&gt;
&lt;li&gt;입력으로 들어온 문자열은 두 글자씩 끊어서 다중집합의 원소로 만든다. 이때 영문자로 된 글자 쌍만 유효하고, 기타 공백이나 숫자, 특수 문자가 들어있는 경우는 그 글자 쌍을 버린다. 예를 들어 &quot;ab+&quot;가 입력으로 들어오면, &quot;ab&quot;만 다중집합의 원소로 삼고, &quot;b+&quot;는 버린다.&lt;/li&gt;
&lt;li&gt;다중집합 원소 사이를 비교할 때, 대문자와 소문자의 차이는 무시한다. &quot;AB&quot;와 &quot;Ab&quot;, &quot;ab&quot;는 같은 원소로 취급한다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;출력 형식&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;입력으로 들어온 두 문자열의 자카드 유사도를 출력한다. 유사도 값은 0에서 1 사이의 실수이므로, 이를 다루기 쉽도록 65536을 곱한 후에 소수점 아래를 버리고 정수부만 출력한다.&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;/div&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;501&quot; data-origin-height=&quot;287&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cxeBRc/btrGfyDDqIN/hPKwtNdstofGc06xpNg4D0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cxeBRc/btrGfyDDqIN/hPKwtNdstofGc06xpNg4D0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cxeBRc/btrGfyDDqIN/hPKwtNdstofGc06xpNg4D0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcxeBRc%2FbtrGfyDDqIN%2FhPKwtNdstofGc06xpNg4D0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;501&quot; height=&quot;287&quot; data-origin-width=&quot;501&quot; data-origin-height=&quot;287&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;style8&quot; /&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;우선, 대문자와 소문자의 구분이 없다고 했으므로 lower() 함수를 통해 다 소문자로 통일해준다.&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;size18&quot;&gt;&lt;b&gt;1. 연이은 두가지 글자로 다중집합의 원소 만들기 ( def wonso )&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;2. 두 다중집합의 교집합 구하기 ( def gyo )&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;4. 자카드 유사도 구하기 ( def ja )&lt;/b&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;b&gt;1번&lt;/b&gt;은 단순히 연이은 두가지 글자를 새로운 리스트의 원소로 넣어주면 된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 때 유의할 점은 알파벳 소문자만 가능하고, 나머지 숫자나 특수문자면 다중집합의 원소로 들어갈 수 없다는 점이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이를 정규식을 통해 해결하였다. (정규식에 대해 나중에 좀더 공부해야할 것 같다.)&lt;/p&gt;
&lt;pre id=&quot;code_1656707527101&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;def wonso(str):
        res = []
        for i in range(len(str)-1):
            if re.search('[^a-z]', str[i]) or re.search('[^a-z]', str[i+1]):
                continue
            else:
                res.append(str[i:i+2])
        return res&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;2번&lt;/b&gt;은 생각보다 은근 고려하지 않은 케이스들로 고생했던 함수이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;두 다중집합의 교집합을 구하는 건데, set은 다중집합을 지원하지 않으므로(아닐 수도 있다) 직접 구현해야했다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;이 때, 같은 원소가 있을 수 있다보니 단순히 'a에 있는 원소가 b에 있으면' 으로는 충족하지 않았다.&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;그래서 해당 원소에 대해 카운트를 했으면 다른 집합에서 해당 원소를 pop 해주었다.&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1656707637734&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;def gyo(a, b):
        res = 0
        for i in a:
            if i in b:
                res += 1
                b.pop(b.index(i))
        return res&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;마지막으로&lt;b&gt; 3번&lt;/b&gt;에서 유의할 점은 교집합을 구할 때 한 집합에서 원소들을 pop 했으므로 온전하지 않을 수 있다는 점이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이에 따라 &lt;b&gt;합집합의 원소의 개수&lt;/b&gt;를 구할 때 원래라면 [ 집합 a 원소의 수 + 집합 b 원소의 수 - a, b 교집합 원소의 수] 였을 테지만, 이미 교집합 원소의 수가 빼진 상태와 같으므로 &lt;b&gt;[ 집합 a 원소의 수 + 집합 b 원소의 수 ]&lt;/b&gt; 를 사용하였다.&lt;/p&gt;
&lt;pre id=&quot;code_1656707767332&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;def ja(a, b):
        if not a and not b:
            return 1
        else:
            gyo_list = gyo(a,b)
            hap = len(a)+len(b)
            return gyo_list/hap&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;그 이후로는 문제의 조건에 맞게 나온 자카드 유사도에 65536을 곱해주고, 소숫점을 버리기 위해 int()를 이용해주었다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;전체 코드는 다음과 같다.&lt;/p&gt;
&lt;pre id=&quot;code_1656707326019&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import re
def solution(str1, str2):
    answer = 0
    str1, str2 = str1.lower(), str2.lower()
    
    def wonso(str):
        res = []
        for i in range(len(str)-1):
            if re.search('[^a-z]', str[i]) or re.search('[^a-z]', str[i+1]):
                continue
            else:
                res.append(str[i:i+2])
        return res

    def gyo(a, b):
        res = 0
        for i in a:
            if i in b:
                res += 1
                b.pop(b.index(i))
        return res
            
    def ja(a, b):
        if not a and not b:
            return 1
        else:
            gyo_list = gyo(a,b)
            hap = len(a)+len(b)
            return gyo_list/hap
        
    str1, str2 = wonso(str1), wonso(str2)
    answer = int(ja(str1, str2) * 65536)
    return answer&lt;/code&gt;&lt;/pre&gt;</description>
      <category>프로그래머스 풀이</category>
      <category>Python</category>
      <category>교집합</category>
      <category>뉴스 클러스터링</category>
      <category>정규식</category>
      <category>파이썬</category>
      <category>프로그래머스</category>
      <author>LABONG_R</author>
      <guid isPermaLink="true">https://d-tail.tistory.com/76</guid>
      <comments>https://d-tail.tistory.com/76#entry76comment</comments>
      <pubDate>Sat, 2 Jul 2022 05:37:50 +0900</pubDate>
    </item>
    <item>
      <title>[ Level 2 ] 괄호 변환 - 파이썬</title>
      <link>https://d-tail.tistory.com/75</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;문제 설명&lt;/b&gt;&lt;/p&gt;
&lt;div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;카카오에 신입 개발자로 입사한&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;&quot;콘&quot;&lt;/b&gt;은 선배 개발자로부터 개발역량 강화를 위해 다른 개발자가 작성한 소스 코드를 분석하여 문제점을 발견하고 수정하라는 업무 과제를 받았습니다. 소스를 컴파일하여 로그를 보니 대부분 소스 코드 내 작성된 괄호가 개수는 맞지만 짝이 맞지 않은 형태로 작성되어 오류가 나는 것을 알게 되었습니다.&lt;br /&gt;수정해야 할 소스 파일이 너무 많아서 고민하던 &quot;콘&quot;은 소스 코드에 작성된 모든 괄호를 뽑아서 올바른 순서대로 배치된 괄호 문자열을 알려주는 프로그램을 다음과 같이 개발하려고 합니다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;용어의 정의&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;'('&lt;/b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;와&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;')'&lt;/b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;로만 이루어진 문자열이 있을 경우, '(' 의 개수와 ')' 의 개수가 같다면 이를&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;균형잡힌 괄호 문자열&lt;/b&gt;이라고 부릅니다.&lt;br /&gt;그리고 여기에 '('와 ')'의 괄호의 짝도 모두 맞을 경우에는 이를&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;올바른 괄호 문자열&lt;/b&gt;이라고 부릅니다.&lt;br /&gt;예를 들어,&lt;span&gt;&amp;nbsp;&lt;/span&gt;&quot;(()))(&quot;와 같은 문자열은 &quot;균형잡힌 괄호 문자열&quot; 이지만 &quot;올바른 괄호 문자열&quot;은 아닙니다.&lt;br /&gt;반면에&lt;span&gt;&amp;nbsp;&lt;/span&gt;&quot;(())()&quot;와 같은 문자열은 &quot;균형잡힌 괄호 문자열&quot; 이면서 동시에 &quot;올바른 괄호 문자열&quot; 입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;'(' 와 ')' 로만 이루어진 문자열 w가 &quot;균형잡힌 괄호 문자열&quot; 이라면 다음과 같은 과정을 통해 &quot;올바른 괄호 문자열&quot;로 변환할 수 있습니다.&lt;/p&gt;
&lt;div&gt;
&lt;pre class=&quot;lsl&quot;&gt;&lt;code&gt;1. 입력이 빈 문자열인 경우, 빈 문자열을 반환합니다. 
2. 문자열 w를 두 &quot;균형잡힌 괄호 문자열&quot; u, v로 분리합니다. 단, u는 &quot;균형잡힌 괄호 문자열&quot;로 더 이상 분리할 수 없어야 하며, v는 빈 문자열이 될 수 있습니다. 
3. 문자열 u가 &quot;올바른 괄호 문자열&quot; 이라면 문자열 v에 대해 1단계부터 다시 수행합니다. 
  3-1. 수행한 결과 문자열을 u에 이어 붙인 후 반환합니다. 
4. 문자열 u가 &quot;올바른 괄호 문자열&quot;이 아니라면 아래 과정을 수행합니다. 
  4-1. 빈 문자열에 첫 번째 문자로 '('를 붙입니다. 
  4-2. 문자열 v에 대해 1단계부터 재귀적으로 수행한 결과 문자열을 이어 붙입니다. 
  4-3. ')'를 다시 붙입니다. 
  4-4. u의 첫 번째와 마지막 문자를 제거하고, 나머지 문자열의 괄호 방향을 뒤집어서 뒤에 붙입니다. 
  4-5. 생성된 문자열을 반환합니다.
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&quot;균형잡힌 괄호 문자열&quot;&lt;/b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;p가 매개변수로 주어질 때, 주어진 알고리즘을 수행해&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;&quot;올바른 괄호 문자열&quot;&lt;/b&gt;로 변환한 결과를 return 하도록 solution 함수를 완성해 주세요.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;매개변수 설명&lt;/b&gt;&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;p는 '(' 와 ')' 로만 이루어진 문자열이며 길이는 2 이상 1,000 이하인 짝수입니다.&lt;/li&gt;
&lt;li&gt;문자열 p를 이루는 '(' 와 ')' 의 개수는 항상 같습니다.&lt;/li&gt;
&lt;li&gt;만약 p가 이미 &quot;올바른 괄호 문자열&quot;이라면 그대로 return 하면 됩니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;입출력 예&lt;/b&gt;&lt;/h3&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;412&quot; data-origin-height=&quot;233&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/wvyEk/btrGg0rPfUO/FjjG2MGgrWluOGDovxggM1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/wvyEk/btrGg0rPfUO/FjjG2MGgrWluOGDovxggM1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/wvyEk/btrGg0rPfUO/FjjG2MGgrWluOGDovxggM1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FwvyEk%2FbtrGg0rPfUO%2FFjjG2MGgrWluOGDovxggM1%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;412&quot; height=&quot;233&quot; data-origin-width=&quot;412&quot; data-origin-height=&quot;233&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;br /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;입출력 예에 대한 설명&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;입출력 예 #1&lt;/b&gt;&lt;br /&gt;이미 &quot;올바른 괄호 문자열&quot; 입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;입출력 예 #2&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;두 문자열 u, v로 분리합니다.
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;u =&lt;span&gt;&amp;nbsp;&lt;/span&gt;&quot;)(&quot;&lt;/li&gt;
&lt;li&gt;v =&lt;span&gt;&amp;nbsp;&lt;/span&gt;&quot;&quot;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;u가 &quot;올바른 괄호 문자열&quot;이 아니므로 다음과 같이 새로운 문자열을 만듭니다.
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;v에 대해 1단계부터 재귀적으로 수행하면 빈 문자열이 반환됩니다.&lt;/li&gt;
&lt;li&gt;u의 앞뒤 문자를 제거하고, 나머지 문자의 괄호 방향을 뒤집으면&lt;span&gt;&amp;nbsp;&lt;/span&gt;&quot;&quot;이 됩니다.&lt;/li&gt;
&lt;li&gt;따라서 생성되는 문자열은&lt;span&gt;&amp;nbsp;&lt;/span&gt;&quot;(&quot;&lt;span&gt;&amp;nbsp;&lt;/span&gt;+&lt;span&gt;&amp;nbsp;&lt;/span&gt;&quot;&quot;&lt;span&gt;&amp;nbsp;&lt;/span&gt;+&lt;span&gt;&amp;nbsp;&lt;/span&gt;&quot;)&quot;&lt;span&gt;&amp;nbsp;&lt;/span&gt;+&lt;span&gt;&amp;nbsp;&lt;/span&gt;&quot;&quot;이며, 최종적으로&lt;span&gt;&amp;nbsp;&lt;/span&gt;&quot;()&quot;로 변환됩니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;입출력 예 #3&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;두 문자열 u, v로 분리합니다.
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;u =&lt;span&gt;&amp;nbsp;&lt;/span&gt;&quot;()&quot;&lt;/li&gt;
&lt;li&gt;v =&lt;span&gt;&amp;nbsp;&lt;/span&gt;&quot;))((()&quot;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;문자열 u가 &quot;올바른 괄호 문자열&quot;이므로 그대로 두고, v에 대해 재귀적으로 수행합니다.&lt;/li&gt;
&lt;li&gt;다시 두 문자열 u, v로 분리합니다.
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;u =&lt;span&gt;&amp;nbsp;&lt;/span&gt;&quot;))((&quot;&lt;/li&gt;
&lt;li&gt;v =&lt;span&gt;&amp;nbsp;&lt;/span&gt;&quot;()&quot;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;u가 &quot;올바른 괄호 문자열&quot;이 아니므로 다음과 같이 새로운 문자열을 만듭니다.
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;v에 대해 1단계부터 재귀적으로 수행하면&lt;span&gt;&amp;nbsp;&lt;/span&gt;&quot;()&quot;이 반환됩니다.&lt;/li&gt;
&lt;li&gt;u의 앞뒤 문자를 제거하고, 나머지 문자의 괄호 방향을 뒤집으면&lt;span&gt;&amp;nbsp;&lt;/span&gt;&quot;()&quot;이 됩니다.&lt;/li&gt;
&lt;li&gt;따라서 생성되는 문자열은&lt;span&gt;&amp;nbsp;&lt;/span&gt;&quot;(&quot;&lt;span&gt;&amp;nbsp;&lt;/span&gt;+&lt;span&gt;&amp;nbsp;&lt;/span&gt;&quot;()&quot;&lt;span&gt;&amp;nbsp;&lt;/span&gt;+&lt;span&gt;&amp;nbsp;&lt;/span&gt;&quot;)&quot;&lt;span&gt;&amp;nbsp;&lt;/span&gt;+&lt;span&gt;&amp;nbsp;&lt;/span&gt;&quot;()&quot;이며, 최종적으로&lt;span&gt;&amp;nbsp;&lt;/span&gt;&quot;(())()&quot;를 반환합니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;처음에 그대로 둔 문자열에 반환된 문자열을 이어 붙이면&lt;span&gt;&amp;nbsp;&lt;/span&gt;&quot;()&quot;&lt;span&gt;&amp;nbsp;&lt;/span&gt;+&lt;span&gt;&amp;nbsp;&lt;/span&gt;&quot;(())()&quot;&lt;span&gt;&amp;nbsp;&lt;/span&gt;=&lt;span&gt;&amp;nbsp;&lt;/span&gt;&quot;()(())()&quot;가 됩니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style8&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;이 문제는 재귀함수를 이용해야하는 문제로 이런 문제는 정말 문제 그대로 따라해야 하는 것 같다..&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;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;1. 주어진 문자열이 '균형잡힌 괄호 문자열' 인지 판단하여 u('균형잡힌 괄호 문자열')와 v(그 뒤의 나머지)로 나누어주는 함수 (def division)&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;2. 주어진 문자열이 '올바른 괄호 문자열'인지 판단하는 함수 (def check)&lt;/b&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;b&gt;1번&lt;/b&gt;의 경우는 문자열에서 순서대로 '(' 가 나오면 tmp의 값을 증가시키고, ')'가 나오면 tmp1의 값을 증가시켰다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그리고 tmp과 tmp1의 숫자가 0이 아니면서 같은 값을 가지게 되면 '('와 ')'의 개수가 같으므로 '균형잡힌 괄호 문자열'이 되고, 이를 u로 그 뒤의 나머지를 v로 반환했다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이에 해당하는 함수는 다음과 같다.&lt;/p&gt;
&lt;pre id=&quot;code_1656703644726&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;def division(p):
        tmp, tmp1 = 0, 0

        for i in range(len(p)):
            if p[i] =='(':
                tmp += 1
            elif p[i] == ')':
                tmp1 += 1
            
            if tmp != 0 and tmp1 != 0:
                if tmp == tmp1:
                    u = p[:i+1]
                    v = p[i+1:]
                    return u, v&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;2번&lt;/b&gt;의 경우는 마찬가지로 tmp 와 tmp1을 이용했다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 때, tmp1의 수가 tmp보다 크면(당연히 tmp와 tmp1이 0이 아닐 때)&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;pre id=&quot;code_1656703720009&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;def check(u):
        tmp, tmp1 = 0, 0
        for i in range(len(u)):
            if u[i] == '(':
                tmp += 1
            if u[i] == ')':
                tmp1 += 1
            if tmp1 &amp;gt; tmp: #올바르지 않은 문자열
                return 0
            else:
                return 1&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 두 함수를 이용하여 문제에세 제시된 내용을 정말 똑같이 따라주면 다음과 같은 코드가 된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 때 문제의 말이 조금 헷갈려서 헤매게 되었는데, 정말 차분하게 문제을 읽고 적용시키는 연습을 더 해야할 것 같다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;특히 u의 괄호를 뒤집으라는 문장을 순서를 반대로 하라는 줄 알고 계속 잘못 이해하고 있었다..&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이런 헷갈리는 내용들을 차분히 읽고 적용해야겠다!!&lt;/p&gt;
&lt;pre id=&quot;code_1656703383847&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;def solution(p):
    answer = ''
    p= list(p)
    
    def check(u):
        tmp, tmp1 = 0, 0
        for i in range(len(u)):
            if u[i] == '(':
                tmp += 1
            if u[i] == ')':
                tmp1 += 1
            if tmp1 &amp;gt; tmp: #올바르지 않은 문자열
                return 0
            else:
                return 1
    
    def division(p):
        tmp, tmp1 = 0, 0

        for i in range(len(p)):
            if p[i] =='(':
                tmp += 1
            elif p[i] == ')':
                tmp1 += 1
            
            if tmp != 0 and tmp1 != 0:
                if tmp == tmp1:
                    u = p[:i+1]
                    v = p[i+1:]
                    return u, v

        
    def process(p):
        if len(p) == 0:
            return ''

        answer = ''
        u,v = division(p)

        # u 가 바른 문자열이 아닐 때
        if check(u) == 0:
            tmp_u = list(process(v))
            tmp_s = ['('] + tmp_u + [')']
            u = u[1:-1]
            for i in range(len(u)):
                if u[i] == '(':
                    u[i] = ')'
                else:
                    u[i] = '('
            tmp_s = tmp_s + u
            answer = ''.join(tmp_s)
        else:
            ans = process(v)
            return ''.join(u) + ans
        return answer
        
    answer = process(p)
    return answer&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;+) 와.. 다른 사람 풀이 보니까 진짜 간단하게 해결했던데..ㅠㅠ&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;역시 문제를 많이 풀어보는 연습이 필요할 것 같다...&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>프로그래머스 풀이</category>
      <category>Python</category>
      <category>괄호 변환</category>
      <category>재귀용법</category>
      <category>파이썬</category>
      <category>프로그래머스</category>
      <author>LABONG_R</author>
      <guid isPermaLink="true">https://d-tail.tistory.com/75</guid>
      <comments>https://d-tail.tistory.com/75#entry75comment</comments>
      <pubDate>Sat, 2 Jul 2022 04:32:00 +0900</pubDate>
    </item>
    <item>
      <title>[ Level 2 ] 메뉴 리뉴얼 - 파이썬</title>
      <link>https://d-tail.tistory.com/74</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;문제 설명&lt;/b&gt;&lt;/p&gt;
&lt;div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;레스토랑을 운영하던&lt;span&gt;&amp;nbsp;&lt;/span&gt;스카피는 코로나19로 인한 불경기를 극복하고자 메뉴를 새로 구성하려고 고민하고 있습니다.&lt;br /&gt;기존에는 단품으로만 제공하던 메뉴를 조합해서 코스요리 형태로 재구성해서 새로운 메뉴를 제공하기로 결정했습니다. 어떤 단품메뉴들을 조합해서 코스요리 메뉴로 구성하면 좋을 지 고민하던 &quot;스카피&quot;는 이전에 각 손님들이 주문할 때 가장 많이 함께 주문한 단품메뉴들을 코스요리 메뉴로 구성하기로 했습니다.&lt;br /&gt;단, 코스요리 메뉴는 최소 2가지 이상의 단품메뉴로 구성하려고 합니다. 또한, 최소 2명 이상의 손님으로부터 주문된 단품메뉴 조합에 대해서만 코스요리 메뉴 후보에 포함하기로 했습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;예를 들어, 손님 6명이 주문한 단품메뉴들의 조합이 다음과 같다면,&lt;br /&gt;(각 손님은 단품메뉴를 2개 이상 주문해야 하며, 각 단품메뉴는 A ~ Z의 알파벳 대문자로 표기합니다.)&lt;/p&gt;
&lt;br /&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;388&quot; data-origin-height=&quot;370&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/yuM9n/btrGhxiQc0F/2xITQYFwfigOqtLHK5kNrK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/yuM9n/btrGhxiQc0F/2xITQYFwfigOqtLHK5kNrK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/yuM9n/btrGhxiQc0F/2xITQYFwfigOqtLHK5kNrK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FyuM9n%2FbtrGhxiQc0F%2F2xITQYFwfigOqtLHK5kNrK%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;388&quot; height=&quot;370&quot; data-origin-width=&quot;388&quot; data-origin-height=&quot;370&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;가장 많이 함께 주문된 단품메뉴 조합에 따라 &quot;스카피&quot;가 만들게 될 코스요리 메뉴 구성 후보는 다음과 같습니다.&lt;/p&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;890&quot; data-origin-height=&quot;264&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/6jn9P/btrGhWCG80D/GFRaAbhTDINUrB2rY90jS0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/6jn9P/btrGhWCG80D/GFRaAbhTDINUrB2rY90jS0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/6jn9P/btrGhWCG80D/GFRaAbhTDINUrB2rY90jS0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F6jn9P%2FbtrGhWCG80D%2FGFRaAbhTDINUrB2rY90jS0%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;890&quot; height=&quot;264&quot; data-origin-width=&quot;890&quot; data-origin-height=&quot;264&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;br /&gt;&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;[문제]&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;각 손님들이 주문한 단품메뉴들이 문자열 형식으로 담긴 배열 orders, &quot;스카피&quot;가&lt;span&gt;&amp;nbsp;&lt;/span&gt;추가하고 싶어하는&lt;span&gt;&amp;nbsp;&lt;/span&gt;코스요리를 구성하는 단품메뉴들의 갯수가 담긴 배열 course가 매개변수로 주어질 때, &quot;스카피&quot;가 새로 추가하게 될 코스요리의 메뉴 구성을 문자열 형태로 배열에 담아 return 하도록 solution 함수를 완성해 주세요.&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;[제한사항]&lt;/b&gt;&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;orders 배열의 크기는 2 이상 20 이하입니다.&lt;/li&gt;
&lt;li&gt;orders 배열의 각 원소는 크기가 2 이상 10 이하인 문자열입니다.
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;각 문자열은 알파벳 대문자로만 이루어져 있습니다.&lt;/li&gt;
&lt;li&gt;각 문자열에는 같은 알파벳이 중복해서 들어있지 않습니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;course 배열의 크기는 1 이상 10 이하입니다.
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;course 배열의 각 원소는 2 이상 10 이하인 자연수가&lt;span&gt;&amp;nbsp;&lt;/span&gt;오름차순으로 정렬되어 있습니다.&lt;/li&gt;
&lt;li&gt;course 배열에는 같은 값이 중복해서 들어있지 않습니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;정답은 각 코스요리 메뉴의 구성을 문자열 형식으로 배열에 담아 사전 순으로&lt;span&gt;&amp;nbsp;&lt;/span&gt;오름차순&lt;span&gt;&amp;nbsp;&lt;/span&gt;정렬해서 return 해주세요.
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;배열의 각 원소에 저장된 문자열 또한 알파벳&lt;span&gt;&amp;nbsp;&lt;/span&gt;오름차순으로 정렬되어야 합니다.&lt;/li&gt;
&lt;li&gt;만약 가장 많이 함께 주문된 메뉴 구성이 여러 개라면, 모두 배열에 담아 return 하면 됩니다.&lt;/li&gt;
&lt;li&gt;orders와 course 매개변수는 return 하는 배열의 길이가 1 이상이 되도록 주어집니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;&lt;b&gt;[입출력 예]&lt;/b&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;943&quot; data-origin-height=&quot;287&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/c9sJUs/btrGfyKkWZm/SCmBMovcKR9nsjSkedasuk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/c9sJUs/btrGfyKkWZm/SCmBMovcKR9nsjSkedasuk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/c9sJUs/btrGfyKkWZm/SCmBMovcKR9nsjSkedasuk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fc9sJUs%2FbtrGfyKkWZm%2FSCmBMovcKR9nsjSkedasuk%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;943&quot; height=&quot;287&quot; data-origin-width=&quot;943&quot; data-origin-height=&quot;287&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;b&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div&gt;&lt;b&gt;입출력 예에 대한 설명&lt;/b&gt;&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;입출력 예 #1&lt;/b&gt;&lt;br /&gt;문제의 예시와 같습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;입출력 예 #2&lt;/b&gt;&lt;br /&gt;AD가 세 번, CD가 세 번, ACD가 두 번, ADE가 두 번, XYZ 가 두 번 주문됐습니다.&lt;br /&gt;요리 5개를 주문한 손님이 1명 있지만, 최소 2명 이상의 손님에게서 주문된 구성만 코스요리 후보에 들어가므로, 요리 5개로 구성된 코스요리는 새로 추가하지 않습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;입출력 예 #3&lt;/b&gt;&lt;br /&gt;WX가 두 번, XY가 두 번 주문됐습니다.&lt;br /&gt;3명의 손님 모두 단품메뉴를 3개씩 주문했지만, 최소 2명 이상의 손님에게서 주문된 구성만 코스요리 후보에 들어가므로, 요리 3개로 구성된 코스요리는 새로 추가하지 않습니다.&lt;br /&gt;또, 단품메뉴를 4개 이상 주문한 손님은 없으므로, 요리 4개로 구성된 코스요리 또한 새로 추가하지 않습니다.&lt;/p&gt;
&lt;/div&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style8&quot; /&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;먼저, 음식의 개수(order의 요소) 에 따라 각 손님별로 조합의 수를 연산하고(combintations)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;딕셔너리에 해당 조합 요리가 있다면, 손님의 번호를 추가해주고 없다면 새로운 리스트를 생성하여 번호를 추가해주었다.&lt;/p&gt;
&lt;pre id=&quot;code_1656698989547&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;for j in range(len(orders)):
            tmp = list(map(''.join,combinations(sorted(orders[j]),i)))
            for q in range(len(tmp)):
                try:
                    menu[tmp[q]].append(j)
                except:
                    menu[tmp[q]] = [j]&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그럼 해당 딕셔너리의 조합요리의 길이는 그 요리를 시킨 손님의 수가 된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이를 이용하여 같은 길이를 가진 코스 요리가 존재할 수 있으므로 각각의 길이의 최대값을 먼저 구한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;(이 때 최소 손님의 횟수가 2번이므로 2보다는 커야한다.)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그리고, 해당 길이를 가지는 코스 요리를 answer에 추가하면 된다.&lt;/p&gt;
&lt;pre id=&quot;code_1656699084407&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;maxi = 0
        for j in menu:
            if len(menu[j]) &amp;gt;= 2 and maxi &amp;lt; len(menu[j]):
                maxi = len(menu[j])
        for j in menu:
            if len(menu[j]) == maxi:
                answer.append(j)&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이를 합한 코드는 다음과 같다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 때 중요한 것은 조합을 할때 미리 정렬을 시켜야 제대로 해당 코스요리가 있는지 없는지 확인할 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;또한, 정답도 개수에 대한 정렬이 아닌 알파벳 순서에 따른 정렬을 따르기 때문에 sorted(answer)을 반환해준다.&lt;/p&gt;
&lt;pre id=&quot;code_1656699169832&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;from itertools import combinations
def solution(orders, course):
    answer = []
    
    for i in course:
        menu = {}
        for j in range(len(orders)):
            tmp = list(map(''.join,combinations(sorted(orders[j]),i)))
            for q in range(len(tmp)):
                try:
                    menu[tmp[q]].append(j)
                except:
                    menu[tmp[q]] = [j]

        maxi = 0
        for j in menu:
            if len(menu[j]) &amp;gt;= 2 and maxi &amp;lt; len(menu[j]):
                maxi = len(menu[j])
        for j in menu:
            if len(menu[j]) == maxi:
                answer.append(j)

    return sorted(answer)&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;음,, 파이썬을 제대로 배우지 않고 찾아가면서 익혔더니 아직도 코드가 파이썬스럽지 못하고 C언어처럼 짜는 것 같다..&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;프로그래머스 문제를 풀면서 다른 사람의 풀이를 참고해서 파이썬스러운 코딩을 할 수 있도록 노력해야겠다!!&lt;/p&gt;</description>
      <category>프로그래머스 풀이</category>
      <category>Python</category>
      <category>메뉴 리뉴얼</category>
      <category>파이썬</category>
      <category>프로그래머스</category>
      <author>LABONG_R</author>
      <guid isPermaLink="true">https://d-tail.tistory.com/74</guid>
      <comments>https://d-tail.tistory.com/74#entry74comment</comments>
      <pubDate>Sat, 2 Jul 2022 03:13:42 +0900</pubDate>
    </item>
    <item>
      <title>[ Level 2 ] 행렬 테두리 회전하기 - 파이썬</title>
      <link>https://d-tail.tistory.com/73</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;문제 설명&lt;/b&gt;&lt;/p&gt;
&lt;div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;rows x columns 크기인 행렬이 있습니다. 행렬에는 1부터 rows x columns까지의 숫자가 한 줄씩 순서대로 적혀있습니다. 이 행렬에서 직사각형 모양의 범위를 여러 번 선택해, 테두리 부분에 있는 숫자들을 시계방향으로 회전시키려 합니다. 각 회전은 (x1, y1, x2, y2)인 정수 4개로 표현하며, 그 의미는 다음과 같습니다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;x1 행 y1 열부터 x2 행 y2 열까지의 영역에 해당하는 직사각형에서 테두리에 있는 숫자들을 한 칸씩 시계방향으로 회전합니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다음은 6 x 6 크기 행렬의 예시입니다.&lt;/p&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;664&quot; data-origin-height=&quot;662&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/PQgvc/btrGhVcFHTM/ksW5jBYTElDggBYgfK288k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/PQgvc/btrGhVcFHTM/ksW5jBYTElDggBYgfK288k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/PQgvc/btrGhVcFHTM/ksW5jBYTElDggBYgfK288k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FPQgvc%2FbtrGhVcFHTM%2FksW5jBYTElDggBYgfK288k%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;664&quot; height=&quot;662&quot; data-origin-width=&quot;664&quot; data-origin-height=&quot;662&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;이 행렬에 (2, 2, 5, 4) 회전을 적용하면, 아래 그림과 같이 2행 2열부터 5행 4열까지 영역의 테두리가 시계방향으로 회전합니다. 이때, 중앙의 15와 21이 있는 영역은 회전하지 않는 것을 주의하세요.&lt;/p&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;672&quot; data-origin-height=&quot;680&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/6wWSZ/btrGfPLLCNz/HqHD3Ti6Kt7tNz1SPqmrN0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/6wWSZ/btrGfPLLCNz/HqHD3Ti6Kt7tNz1SPqmrN0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/6wWSZ/btrGfPLLCNz/HqHD3Ti6Kt7tNz1SPqmrN0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F6wWSZ%2FbtrGfPLLCNz%2FHqHD3Ti6Kt7tNz1SPqmrN0%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;672&quot; height=&quot;680&quot; data-origin-width=&quot;672&quot; data-origin-height=&quot;680&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;행렬의 세로 길이(행 개수) rows, 가로 길이(열 개수) columns, 그리고 회전들의 목록 queries가 주어질 때, 각 회전들을 배열에 적용한 뒤, 그 회전에 의해 위치가 바뀐 숫자들 중&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;u&gt;&lt;b&gt;가장 작은 숫자들을 순서대로 배열에 담아&lt;/b&gt;&lt;/u&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;return 하도록 solution 함수를 완성해주세요.&lt;/p&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;&lt;b&gt;제한사항&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;rows는 2 이상 100 이하인 자연수입니다.&lt;/li&gt;
&lt;li&gt;columns는 2 이상 100 이하인 자연수입니다.&lt;/li&gt;
&lt;li&gt;처음에 행렬에는 가로 방향으로 숫자가 1부터 하나씩 증가하면서 적혀있습니다.
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;즉, 아무 회전도 하지 않았을 때, i 행 j 열에 있는 숫자는 ((i-1) x columns + j)입니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;queries의 행의 개수(회전의 개수)는 1 이상 10,000 이하입니다.&lt;/li&gt;
&lt;li&gt;queries의 각 행은 4개의 정수 [x1, y1, x2, y2]입니다.
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;x1 행 y1 열부터 x2 행 y2 열까지 영역의 테두리를 시계방향으로 회전한다는 뜻입니다.&lt;/li&gt;
&lt;li&gt;1 &amp;le; x1 &amp;lt; x2 &amp;le; rows, 1 &amp;le; y1 &amp;lt; y2 &amp;le; columns입니다.&lt;/li&gt;
&lt;li&gt;모든 회전은 순서대로 이루어집니다.&lt;/li&gt;
&lt;li&gt;예를 들어, 두 번째 회전에 대한 답은 첫 번째 회전을 실행한 다음, 그 상태에서 두 번째 회전을 실행했을 때 이동한 숫자 중 최솟값을 구하면 됩니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;b&gt;입출력 예시&lt;/b&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;683&quot; data-origin-height=&quot;324&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/x3sVo/btrGhyB19nU/1iQ1GlOy89qI9c2jnWIke0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/x3sVo/btrGhyB19nU/1iQ1GlOy89qI9c2jnWIke0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/x3sVo/btrGhyB19nU/1iQ1GlOy89qI9c2jnWIke0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fx3sVo%2FbtrGhyB19nU%2F1iQ1GlOy89qI9c2jnWIke0%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;683&quot; height=&quot;324&quot; data-origin-width=&quot;683&quot; data-origin-height=&quot;324&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;&lt;b&gt;입출력 예 설명&lt;/b&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;입출력 예 #1&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;회전을 수행하는 과정을 그림으로 표현하면 다음과 같습니다.&lt;/li&gt;
&lt;li&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;611&quot; data-origin-height=&quot;514&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/xRp9q/btrGf1ytchu/6EulpyDO0g6eBUSMXL2fA1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/xRp9q/btrGf1ytchu/6EulpyDO0g6eBUSMXL2fA1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/xRp9q/btrGf1ytchu/6EulpyDO0g6eBUSMXL2fA1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FxRp9q%2FbtrGf1ytchu%2F6EulpyDO0g6eBUSMXL2fA1%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;611&quot; height=&quot;514&quot; data-origin-width=&quot;611&quot; data-origin-height=&quot;514&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;입출력 예 #2&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;회전을 수행하는 과정을 그림으로 표현하면 다음과 같습니다.&lt;/li&gt;
&lt;li&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;513&quot; data-origin-height=&quot;307&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bmkDZy/btrGivEOs3M/deACfUe0QNyrAWLYUOZtv1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bmkDZy/btrGivEOs3M/deACfUe0QNyrAWLYUOZtv1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bmkDZy/btrGivEOs3M/deACfUe0QNyrAWLYUOZtv1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbmkDZy%2FbtrGivEOs3M%2FdeACfUe0QNyrAWLYUOZtv1%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;513&quot; height=&quot;307&quot; data-origin-width=&quot;513&quot; data-origin-height=&quot;307&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;입출력 예 #3&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;이 예시에서는 행렬의 테두리에 위치한 모든 칸들이 움직입니다. 따라서, 행렬의 테두리에 있는 수 중 가장 작은 숫자인 1이 바로 답이 됩니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style8&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1. 먼저 1부터 n*n 까지 순차적으로 증가하는 행렬을 만든다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2. 행렬의 가장자리를 회전시키는 함수를 만들고, 행렬과 행렬 내에서 가장자리의 최솟값을 반환한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;3. 반복한다.&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;먼저, 1번에 해당하는 코드는 다음과 같이 작성하였다.&lt;/p&gt;
&lt;pre id=&quot;code_1656694192670&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;square = [[0]*columns for _ in range(rows)]
    q=1
    for i in range(rows):
        for j in range(columns):
            square[i][j]=(q)
            q+=1&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2번은 다음과 같이 &amp;rarr;&amp;darr;&amp;larr;&amp;uarr; 순으로 숫자들을 옮겨주는 식으로 코드를 작성하였고, 각각 최솟값을 계산하여 행렬과 최솟값을 반환해주는 함수이다.&lt;/p&gt;
&lt;pre id=&quot;code_1656694256875&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;def rotate(arr):
        mini = max(map(max, arr))
        a, b = len(arr), len(arr[0])
        tmp, tmp1, tmp2 = arr[0][b-1], arr[a-1][b-1], arr[a-1][0]
        
        for i in range(b-1,0,-1):
            arr[0][i] = arr[0][i-1]
            mini = min(mini, arr[0][i-1])
        for i in range(a-1,1,-1):
            arr[i][b-1] = arr[i-1][b-1]
            mini = min(mini, arr[i-1][b-1])
        for i in range(b-2):
            arr[a-1][i] = arr[a-1][i+1]
            mini = min(mini, arr[a-1][i+1])
        for i in range(a-2):
            arr[i][0] = arr[i+1][0]
            mini = min(mini, arr[i+1][0])
        
        arr[1][b-1], arr[a-1][b-2], arr[a-2][0] = tmp, tmp1, tmp2
        mini = min([tmp, tmp1, tmp2, mini])
        return arr, mini&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;
&lt;p data-ke-size=&quot;size16&quot;&gt;이를 통해 문제의 답을 다음과 같이 작성할 수 있다.&lt;/p&gt;
&lt;pre id=&quot;code_1656694289868&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;def solution(rows, columns, queries):
    answer = []
    square = [[0]*columns for _ in range(rows)]
    q=1
    for i in range(rows):
        for j in range(columns):
            square[i][j]=(q)
            q+=1
            
    def rotate(arr):
        mini = max(map(max, arr))
        a, b = len(arr), len(arr[0])
        tmp, tmp1, tmp2 = arr[0][b-1], arr[a-1][b-1], arr[a-1][0]
        
        for i in range(b-1,0,-1):
            arr[0][i] = arr[0][i-1]
            mini = min(mini, arr[0][i-1])
        for i in range(a-1,1,-1):
            arr[i][b-1] = arr[i-1][b-1]
            mini = min(mini, arr[i-1][b-1])
        for i in range(b-2):
            arr[a-1][i] = arr[a-1][i+1]
            mini = min(mini, arr[a-1][i+1])
        for i in range(a-2):
            arr[i][0] = arr[i+1][0]
            mini = min(mini, arr[i+1][0])
        
        arr[1][b-1], arr[a-1][b-2], arr[a-2][0] = tmp, tmp1, tmp2
        mini = min([tmp, tmp1, tmp2, mini])
        return arr, mini  
    
    for i in range(len(queries)):
        new_arr = [square[j][queries[i][1]-1:queries[i][3]] for j in range(queries[i][0]-1,queries[i][2])]
        tmp, mini= rotate(new_arr)
        
        answer.append(mini)
        q = 0
        for j in range(queries[i][0]-1,queries[i][2]):
            square[j][queries[i][1]-1:queries[i][3]] = tmp[q][:]
            q +=1
                
    return answer&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;코드를 작성하면서 행렬이다보니 index error가 많이 나왔다..&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;numpy를 이용하던 버릇 때문에 리스트 인덱싱이 너무 불편하다..ㅠㅠ&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차원 배열의 최소값을 구하는데 map을 이용하는 것을 잊지 말아야할 것 같다.&lt;/p&gt;
&lt;pre id=&quot;code_1656694364223&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;min(map(min, arr))&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>프로그래머스 풀이</category>
      <category>Python</category>
      <category>파이썬</category>
      <category>프로그래머스</category>
      <category>행렬 테두리 회전하기</category>
      <author>LABONG_R</author>
      <guid isPermaLink="true">https://d-tail.tistory.com/73</guid>
      <comments>https://d-tail.tistory.com/73#entry73comment</comments>
      <pubDate>Sat, 2 Jul 2022 01:53:07 +0900</pubDate>
    </item>
    <item>
      <title>[ Level 2 ] 짝지어 제거하기 - 파이썬</title>
      <link>https://d-tail.tistory.com/72</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;문제 설명&lt;/b&gt;&lt;/p&gt;
&lt;div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;짝지어 제거하기는, 알파벳 소문자로 이루어진 문자열을 가지고 시작합니다. 먼저 문자열에서 같은 알파벳이 2개 붙어 있는 짝을 찾습니다. 그다음, 그 둘을 제거한 뒤, 앞뒤로 문자열을 이어 붙입니다. 이 과정을 반복해서 문자열을 모두 제거한다면 짝지어 제거하기가 종료됩니다. 문자열 S가 주어졌을 때, 짝지어 제거하기를 성공적으로 수행할 수 있는지 반환하는 함수를 완성해 주세요. 성공적으로 수행할 수 있으면 1을, 아닐 경우 0을 리턴해주면 됩니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;예를 들어, 문자열 S =&lt;span&gt;&amp;nbsp;&lt;/span&gt;baabaa&lt;span&gt;&amp;nbsp;&lt;/span&gt;라면&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;b&lt;span&gt;&amp;nbsp;&lt;/span&gt;aa&lt;span&gt;&amp;nbsp;&lt;/span&gt;baa &amp;rarr;&lt;span&gt;&amp;nbsp;&lt;/span&gt;bb&lt;span&gt;&amp;nbsp;&lt;/span&gt;aa &amp;rarr;&lt;span&gt;&amp;nbsp;&lt;/span&gt;aa&lt;span&gt;&amp;nbsp;&lt;/span&gt;&amp;rarr;&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;b&gt;제한사항&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;문자열의 길이 : 1,000,000이하의 자연수&lt;/li&gt;
&lt;li&gt;문자열은 모두 소문자로 이루어져 있습니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;b&gt;입출력 예&lt;/b&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;232&quot; data-origin-height=&quot;163&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/L8n0k/btrF9DEk6RT/4gj8TmDhOyHSauVrah3DiK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/L8n0k/btrF9DEk6RT/4gj8TmDhOyHSauVrah3DiK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/L8n0k/btrF9DEk6RT/4gj8TmDhOyHSauVrah3DiK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FL8n0k%2FbtrF9DEk6RT%2F4gj8TmDhOyHSauVrah3DiK%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;232&quot; height=&quot;163&quot; data-origin-width=&quot;232&quot; data-origin-height=&quot;163&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;b&gt;입출력 예 설명&lt;/b&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;입출력 예 #1&lt;/b&gt;&lt;br /&gt;위의 예시와 같습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;&lt;b&gt;입출력 예 #2&lt;/b&gt;&lt;br /&gt;문자열이 남아있지만 짝지어 제거할 수 있는 문자열이 더 이상 존재하지 않기 때문에 0을 반환합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;※ 공지 - 2020년 6월 8일 테스트케이스가 추가되었습니다.&lt;/p&gt;
&lt;/div&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style8&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;두가지를 비교해서 서로 같으면 pop 하고, 아니면 남긴다는 말에서 stack의 구조가 떠올랐다.&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;먼저, 임시의 리스트(tmp)를 생성하고,&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1) 이 리스트가 비어있다면, s에서 하나씩 넣어주고,&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2) 그 리스트의 마지막 원소와 s 에서 pop되는 원소가 같다면 리스트의 해당 원소를 pop 해준다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;3) 또한, 리스트의 마지막 원소와 s 에서 pop되는 원소가 다르다면 그 원소를 리스트에 추가해준다.&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;pre id=&quot;code_1656614620802&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;def solution(s):
    tmp = []
    
    for i in s:
        if not tmp:
            tmp.append(i)
        elif i == tmp[-1]:
            tmp.pop()
        else:
            tmp.append(i)
        
    if len(tmp) &amp;gt; 0:
        return 0
    else:
        return 1&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>프로그래머스 풀이</category>
      <category>Python</category>
      <category>stack</category>
      <category>스택</category>
      <category>짝지어 제거하기</category>
      <category>파이썬</category>
      <category>프로그래머스</category>
      <author>LABONG_R</author>
      <guid isPermaLink="true">https://d-tail.tistory.com/72</guid>
      <comments>https://d-tail.tistory.com/72#entry72comment</comments>
      <pubDate>Fri, 1 Jul 2022 03:48:51 +0900</pubDate>
    </item>
  </channel>
</rss>