<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>Calm Dawn Studio</title>
    <link>https://calmdawnstudio.tistory.com/</link>
    <description>개발자를 꿈꾸는 평범한 공대생의 평범함을 탈출하기 위한 공간입니다.</description>
    <language>ko</language>
    <pubDate>Fri, 7 Aug 2026 11:42:15 +0900</pubDate>
    <generator>TISTORY</generator>
    <ttl>100</ttl>
    <managingEditor>컴던</managingEditor>
    <image>
      <title>Calm Dawn Studio</title>
      <url>https://tistory1.daumcdn.net/tistory/3107604/attach/920c851fad7c4b0e8bd59c6428afe787</url>
      <link>https://calmdawnstudio.tistory.com</link>
    </image>
    <item>
      <title>알고리즘 &amp;amp; 코테준비</title>
      <link>https://calmdawnstudio.tistory.com/151</link>
      <description>&lt;h4 data-ke-size=&quot;size20&quot;&gt;프로그래밍 문제사이트인 '백준', '프로그래머스'를 기준으로 공부한 방법을 정리함&lt;/h4&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;알고리즘.. 모든걸 이해하며 알아야 할까?&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 어떤 알고리즘의 경우 이해를 바탕으로 사용가능 함&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 어떤 알고리즘의 경우 사용법을 외운 후 이해 또는 이해못해도 계속해서 사용함&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;h4 data-ke-size=&quot;size20&quot;&gt;자료구조&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 스택, 큐, 덱, 링크트리스트, 어레이리스트, 트리, 이진트리, 그래프&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 자료구조의 경우 실제 코테에서는 이미 구현된 라이브러리를 가져와 쓰는 경우가 많음&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 최소 한번은 직접 구현해보자.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;엔지니어 대한민국- &lt;a href=&quot;https://www.youtube.com/@eleanorlim/videos&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://www.youtube.com/@eleanorlim/videos&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1669640359179&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;profile&quot; data-og-title=&quot;엔지니어대한민국&quot; data-og-description=&quot;&quot; data-og-host=&quot;www.youtube.com&quot; data-og-source-url=&quot;https://www.youtube.com/@eleanorlim/videos&quot; data-og-url=&quot;https://www.youtube.com/channel/UCWMAh9cSkEn8v42YRO90BHA&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/c3G84a/hyQJI01VDZ/BHwtBKxeiVqnKmxNnSKRB0/img.jpg?width=900&amp;amp;height=900&amp;amp;face=402_142_662_426,https://scrap.kakaocdn.net/dn/51woI/hyQHZJ7jUW/UBwdWa2MADwdMyi8vjK0b0/img.jpg?width=900&amp;amp;height=900&amp;amp;face=402_142_662_426&quot;&gt;&lt;a href=&quot;https://www.youtube.com/@eleanorlim/videos&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://www.youtube.com/@eleanorlim/videos&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/c3G84a/hyQJI01VDZ/BHwtBKxeiVqnKmxNnSKRB0/img.jpg?width=900&amp;amp;height=900&amp;amp;face=402_142_662_426,https://scrap.kakaocdn.net/dn/51woI/hyQHZJ7jUW/UBwdWa2MADwdMyi8vjK0b0/img.jpg?width=900&amp;amp;height=900&amp;amp;face=402_142_662_426');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;엔지니어대한민국&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;www.youtube.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&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;br /&gt;a. 기초정렬, 백트래킹, BFS, DFS&amp;nbsp; (코테를 본다는 기업이라면 무조건 알아야하는 알고리즘)&lt;br /&gt;b. 정렬심화, 투포인터, 이진탐색, 그리디, DP (코테 컷이 낮으면 합격, 높으면 불합격)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;c. 다익스트라, MST, 플로이드 등(코테로 불합격할 일은 없음)&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;br /&gt;백준 문제풀기&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 정답률 40% 이하의 문제의 경우, 다른문제를 먼저 풀거나, 먼저 푼사람의 풀이를 적극적으로 참고하자&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;span&gt;- (참고 사이트 :&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;a href=&quot;https://plzrun.tistory.com/entry/%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98-%EB%AC%B8%EC%A0%9C%ED%92%80%EC%9D%B4PS-%EC%8B%9C%EC%9E%91%ED%95%98%EA%B8%B0&quot;&gt;https://plzrun.tistory.com/entry/%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98-%EB%AC%B8%EC%A0%9C%ED%92%80%EC%9D%B4PS-%EC%8B%9C%EC%9E%91%ED%95%98%EA%B8%B0&lt;/a&gt;)&lt;/p&gt;
&lt;figure id=&quot;og_1669640362975&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;알고리즘 문제풀이(PS) 시작하기&quot; data-og-description=&quot;이런건 고수들이나 써야 하지 않나 싶지만, 그래도 1년정도 공부하면서 이 분야를 어떻게 시작해야 할지 써보려 한다. ▶ 어떻게 공부해야할까? 나는 아직도 PS(Problem Solving)를 잘 못하지만, 주변&quot; data-og-host=&quot;plzrun.tistory.com&quot; data-og-source-url=&quot;https://plzrun.tistory.com/entry/%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98-%EB%AC%B8%EC%A0%9C%ED%92%80%EC%9D%B4PS-%EC%8B%9C%EC%9E%91%ED%95%98%EA%B8%B0&quot; data-og-url=&quot;https://plzrun.tistory.com/entry/%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98-%EB%AC%B8%EC%A0%9C%ED%92%80%EC%9D%B4PS-%EC%8B%9C%EC%9E%91%ED%95%98%EA%B8%B0&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/d4DQMR/hyQH8mKHVl/drDTRNHZAA3lLi8J7AZcqk/img.png?width=800&amp;amp;height=800&amp;amp;face=0_0_800_800,https://scrap.kakaocdn.net/dn/ELi9f/hyQH2NBT3v/AhiYUi1KHrWHrkbcdZLLvK/img.png?width=800&amp;amp;height=800&amp;amp;face=0_0_800_800,https://scrap.kakaocdn.net/dn/sQKsU/hyQJxyreMk/Ksb1aWKNRAs5MhSAkGJlt0/img.jpg?width=996&amp;amp;height=996&amp;amp;face=0_0_996_996&quot;&gt;&lt;a href=&quot;https://plzrun.tistory.com/entry/%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98-%EB%AC%B8%EC%A0%9C%ED%92%80%EC%9D%B4PS-%EC%8B%9C%EC%9E%91%ED%95%98%EA%B8%B0&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://plzrun.tistory.com/entry/%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98-%EB%AC%B8%EC%A0%9C%ED%92%80%EC%9D%B4PS-%EC%8B%9C%EC%9E%91%ED%95%98%EA%B8%B0&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/d4DQMR/hyQH8mKHVl/drDTRNHZAA3lLi8J7AZcqk/img.png?width=800&amp;amp;height=800&amp;amp;face=0_0_800_800,https://scrap.kakaocdn.net/dn/ELi9f/hyQH2NBT3v/AhiYUi1KHrWHrkbcdZLLvK/img.png?width=800&amp;amp;height=800&amp;amp;face=0_0_800_800,https://scrap.kakaocdn.net/dn/sQKsU/hyQJxyreMk/Ksb1aWKNRAs5MhSAkGJlt0/img.jpg?width=996&amp;amp;height=996&amp;amp;face=0_0_996_996');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;알고리즘 문제풀이(PS) 시작하기&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;이런건 고수들이나 써야 하지 않나 싶지만, 그래도 1년정도 공부하면서 이 분야를 어떻게 시작해야 할지 써보려 한다. ▶ 어떻게 공부해야할까? 나는 아직도 PS(Problem Solving)를 잘 못하지만, 주변&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;plzrun.tistory.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;프로그래머스 문제풀기&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 코딩테스트 고득점 Kit (우선은 해당 알고리즘, 자료구조 Lv1 부분만 풀자)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 백준과 병행하며 자료구조 개념을 이해하고 사용법에 익숙해졌다면 LV2 풀기&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;a href=&quot;https://school.programmers.co.kr/learn/challenges?tab=algorithm_practice_kit&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://school.programmers.co.kr/learn/challenges?tab=algorithm_practice_kit&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1669640363303&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;프로그래머스&quot; data-og-description=&quot;코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.&quot; data-og-host=&quot;programmers.co.kr&quot; data-og-source-url=&quot;https://school.programmers.co.kr/learn/challenges?tab=algorithm_practice_kit&quot; data-og-url=&quot;https://programmers.co.kr/&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/bfN1Tx/hyQHW0WFeT/f5nwV461uiOKozoYBVfHdk/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630,https://scrap.kakaocdn.net/dn/bsDmEy/hyQHZXCFrS/1jWrkmV8RofXpHGXRTvor0/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630&quot;&gt;&lt;a href=&quot;https://school.programmers.co.kr/learn/challenges?tab=algorithm_practice_kit&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://school.programmers.co.kr/learn/challenges?tab=algorithm_practice_kit&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/bfN1Tx/hyQHW0WFeT/f5nwV461uiOKozoYBVfHdk/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630,https://scrap.kakaocdn.net/dn/bsDmEy/hyQHZXCFrS/1jWrkmV8RofXpHGXRTvor0/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;프로그래머스&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;programmers.co.kr&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;1. 프로그래밍 언어의 문법과 사용에 익숙해져야 하는 단계(1주)&lt;/h4&gt;
&lt;table style=&quot;border-collapse: collapse; width: 99.7674%; height: 294px;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;width: 11.4728%; height: 20px;&quot;&gt;백준 단계&lt;/td&gt;
&lt;td style=&quot;width: 55.4264%; height: 20px;&quot;&gt;제목&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 16px;&quot;&gt;
&lt;td style=&quot;width: 11.4728%; height: 16px;&quot;&gt;1&lt;/td&gt;
&lt;td style=&quot;width: 55.4264%; height: 16px;&quot;&gt;입출력과 사칙연산&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 16px;&quot;&gt;
&lt;td style=&quot;width: 11.4728%; height: 16px;&quot;&gt;2&lt;/td&gt;
&lt;td style=&quot;width: 55.4264%; height: 16px;&quot;&gt;조건문&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 16px;&quot;&gt;
&lt;td style=&quot;width: 11.4728%; height: 16px;&quot;&gt;3&lt;/td&gt;
&lt;td style=&quot;width: 55.4264%; height: 16px;&quot;&gt;반복문&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 16px;&quot;&gt;
&lt;td style=&quot;width: 11.4728%; height: 16px;&quot;&gt;4&lt;/td&gt;
&lt;td style=&quot;width: 55.4264%; height: 16px;&quot;&gt;1차원&amp;nbsp;배열&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 16px;&quot;&gt;
&lt;td style=&quot;width: 11.4728%; height: 16px;&quot;&gt;5&lt;/td&gt;
&lt;td style=&quot;width: 55.4264%; height: 16px;&quot;&gt;함수&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 16px;&quot;&gt;
&lt;td style=&quot;width: 11.4728%; height: 16px;&quot;&gt;6&lt;/td&gt;
&lt;td style=&quot;width: 55.4264%; height: 16px;&quot;&gt;문자열&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 16px;&quot;&gt;
&lt;td style=&quot;width: 11.4728%; height: 16px;&quot;&gt;9&lt;/td&gt;
&lt;td style=&quot;width: 55.4264%; height: 16px;&quot;&gt;2차원 배열&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;-&amp;gt; 기본적인 문법을 요구하는 문제들이므로 어렵다고 느끼는경우 프로그래밍 문법을 다시 공부하면서 문제를 풀자&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;2. 수학적 지식을 사용할 줄 알아야하는 단계(1주)&lt;/h4&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%; height: 40px;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;width: 11.4728%; height: 20px;&quot;&gt;7&lt;/td&gt;
&lt;td style=&quot;width: 55.1938%; height: 20px;&quot;&gt;기본&amp;nbsp;수학1&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;width: 11.4728%; height: 20px;&quot;&gt;8&lt;/td&gt;
&lt;td style=&quot;width: 55.1938%; height: 20px;&quot;&gt;기본&amp;nbsp;수학2&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;-&amp;gt; 수학적 지식을 요구하는 문제들이므로 필요한 지식을 공부하면서 문제를 풀자&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;3. 자료구조를 알고 사용할 줄 알아야 하는 단계(2주)&lt;/h4&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 11.4728%;&quot;&gt;13&lt;/td&gt;
&lt;td style=&quot;width: 55.1938%;&quot;&gt;집합과&amp;nbsp;맵&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 11.4728%;&quot;&gt;14&lt;/td&gt;
&lt;td style=&quot;width: 55.1938%;&quot;&gt;기하&amp;nbsp;1&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 11.4728%;&quot;&gt;15&lt;/td&gt;
&lt;td style=&quot;width: 55.1938%;&quot;&gt;정수론&amp;nbsp;및&amp;nbsp;조합론&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 11.4728%;&quot;&gt;20&lt;/td&gt;
&lt;td style=&quot;width: 55.1938%;&quot;&gt;스택&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 11.4728%;&quot;&gt;21&lt;/td&gt;
&lt;td style=&quot;width: 55.1938%;&quot;&gt;큐,&amp;nbsp;덱&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;-&amp;gt; 해당 자료구조가 동작하는 방식을 알자, 사용하는 언어로 1번은 직접 구현해보자, 사용방법에 익숙해지자&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;4. 시간 복잡도를 신경써야할 단계( 꾸준하게 )&lt;/h4&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%; height: 297px;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 11.3565%;&quot;&gt;19&lt;/td&gt;
&lt;td style=&quot;width: 55.3101%;&quot;&gt;그리디 알고리즘&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;width: 11.3565%; height: 20px;&quot;&gt;10&lt;/td&gt;
&lt;td style=&quot;width: 55.3101%; height: 20px;&quot;&gt;정렬&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;width: 11.3565%; height: 20px;&quot;&gt;11&lt;/td&gt;
&lt;td style=&quot;width: 55.3101%; height: 20px;&quot;&gt;재귀&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;width: 11.3565%; height: 20px;&quot;&gt;12&lt;/td&gt;
&lt;td style=&quot;width: 55.3101%; height: 20px;&quot;&gt;브루트포스&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;width: 11.3565%; height: 20px;&quot;&gt;16&lt;/td&gt;
&lt;td style=&quot;width: 55.3101%; height: 20px;&quot;&gt;백트래킹&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;width: 11.3565%; height: 20px;&quot;&gt;17&lt;/td&gt;
&lt;td style=&quot;width: 55.3101%; height: 20px;&quot;&gt;동적계획법&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;width: 11.3565%; height: 20px;&quot;&gt;18&lt;/td&gt;
&lt;td style=&quot;width: 55.3101%; height: 20px;&quot;&gt;누적합&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;width: 11.3565%; height: 20px;&quot;&gt;23&lt;/td&gt;
&lt;td style=&quot;width: 55.3101%; height: 20px;&quot;&gt;이분&amp;nbsp;탐색&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;width: 11.3565%; height: 20px;&quot;&gt;27&lt;/td&gt;
&lt;td style=&quot;width: 55.3101%; height: 20px;&quot;&gt;그래프와 순회&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;width: 11.3565%; height: 20px;&quot;&gt;24&lt;/td&gt;
&lt;td style=&quot;width: 55.3101%; height: 20px;&quot;&gt;우선순위&amp;nbsp;큐&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;width: 11.3565%; height: 20px;&quot;&gt;26&lt;/td&gt;
&lt;td style=&quot;width: 55.3101%; height: 20px;&quot;&gt;스택&amp;nbsp;2&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 11.3565%; height: 17px;&quot;&gt;22&lt;/td&gt;
&lt;td style=&quot;width: 55.3101%; height: 17px;&quot;&gt;분할 정복&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;width: 11.3565%; height: 20px;&quot;&gt;28&lt;/td&gt;
&lt;td style=&quot;width: 55.3101%; height: 20px;&quot;&gt;최단&amp;nbsp;경로&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;width: 11.3565%; height: 20px;&quot;&gt;29&lt;/td&gt;
&lt;td style=&quot;width: 55.3101%; height: 20px;&quot;&gt;투&amp;nbsp;포인터&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;width: 11.3565%; height: 20px;&quot;&gt;31&lt;/td&gt;
&lt;td style=&quot;width: 55.3101%; height: 20px;&quot;&gt;트리&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>알고리즘/코딩 테스트용 정리</category>
      <author>컴던</author>
      <guid isPermaLink="true">https://calmdawnstudio.tistory.com/151</guid>
      <comments>https://calmdawnstudio.tistory.com/151#entry151comment</comments>
      <pubDate>Mon, 28 Nov 2022 01:33:18 +0900</pubDate>
    </item>
    <item>
      <title>Git 추가(add), 커밋(commit), 푸쉬(push) 취소 방법</title>
      <link>https://calmdawnstudio.tistory.com/150</link>
      <description>&lt;h1&gt;Git 추가(add), 커밋(commit), 푸쉬(push) 취소 방법&lt;/h1&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2&gt;1. git add 취소하기&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;p&gt;git add를 통해 커밋할 준비를 하는것을 스테이징(stage)이라 하며, 취소를 통해 unstage 상태로 되돌린다.&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th align=&quot;center&quot;&gt;사용 방법&lt;/th&gt;
&lt;th align=&quot;left&quot;&gt;설명&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;&lt;tr&gt;
&lt;td align=&quot;center&quot;&gt;git reset HEAD&lt;/td&gt;
&lt;td align=&quot;left&quot;&gt;add 모든 파일을 취소하고 unstage 상태로 되돌린다&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td align=&quot;center&quot;&gt;git reset HEAD [파일이름]&lt;/td&gt;
&lt;td align=&quot;left&quot;&gt;해당 파일의 add를 취소하고 unstage 상태로 되돌린다&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2&gt;2. git commit 취소하기&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;git commit을 통해 파일의 변경사항을 반영할 수 있으며 옵션에 따른 여러 취소방법이 있다.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;2.1 커밋 취소.. reset vs revert 어떤게 더 좋을까?&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;p&gt;reset : 현재까지의 commit 이력을 남기지 않고 원하는 시점으로 돌아간다.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;현재까지 커밋내용을 남기지않고 삭제하며 수정한다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;revert : 현재까지의 commit 이력을 남기며 원하는 시점으로 돌아간다.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;이전 커밋시점으로 돌아가겠다는 이력을 남기며 수정한다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;reset은 커밋내역들을 깔끔하게 정리할 수 있지만 협업시 코드가 충돌하거나 꼬일 위험이 있다. revert는 커밋내역들을 보존하고 돌아간 이유를 기록할 수 있는 있다. 되도록 revert를 쓰도록하자.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3&gt;2.2 commit 취소 사용법&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;p&gt;옵션을 지정하지 않을 경우 기본적으로 mixed로 적용한다.&lt;/p&gt;
&lt;p&gt;  &amp;nbsp;&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th align=&quot;center&quot;&gt;옵션 종류&lt;/th&gt;
&lt;th align=&quot;left&quot;&gt;설명&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;&lt;tr&gt;
&lt;td align=&quot;center&quot;&gt;soft&lt;/td&gt;
&lt;td align=&quot;left&quot;&gt;커밋 차제만 취소하는 옵션. add를 통한 staged 상태&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td align=&quot;center&quot;&gt;mixed&lt;/td&gt;
&lt;td align=&quot;left&quot;&gt;커밋과 add를 취소하는 옵션. (기본 옵션)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td align=&quot;center&quot;&gt;hard&lt;/td&gt;
&lt;td align=&quot;left&quot;&gt;커밋과 add를 취소하고 파일내용도 삭제하는 옵션. 모두 취소하며 작업내용까지 사라지므로 가급적 사용을 자제하자&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;p&gt;  &amp;nbsp;&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th align=&quot;center&quot;&gt;사용 방법&lt;/th&gt;
&lt;th align=&quot;left&quot;&gt;설명&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;&lt;tr&gt;
&lt;td align=&quot;center&quot;&gt;git revert 또는 reset HEAD^&lt;/td&gt;
&lt;td align=&quot;left&quot;&gt;꺽쇠(^)의 수만큼 이전 커밋단계로 돌아간다&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td align=&quot;center&quot;&gt;git revert 또는 reset HEAD~(숫자)&lt;/td&gt;
&lt;td align=&quot;left&quot;&gt;업력한 수만큼 이전 커밋단계로 돌아간다&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;p&gt;  &amp;nbsp;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;git revert 또는reset --[사용할옵션] HEAD[^또는(숫자)] 처럼 사용하자&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;git revert --soft HEAD^^&lt;/li&gt;
&lt;li&gt;git reset --hard HEAD~2&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2&gt;3. git push 취소하기&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;p&gt;자신의 로컬 상태를 원격저장소에 강제로 덮어쓴다. 되돌아간 커밋 이후의 모든 커밋이 삭제되므로 주의해서 사용해야한다.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;원하는 시점으로 커밋을 되돌린다.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;다시 커밋을 진행한다.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;git push -f origin [브랜치이름]&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>GitHub</category>
      <category>#</category>
      <category>##</category>
      <category>Git</category>
      <category>패스트캠퍼스</category>
      <author>컴던</author>
      <guid isPermaLink="true">https://calmdawnstudio.tistory.com/150</guid>
      <comments>https://calmdawnstudio.tistory.com/150#entry150comment</comments>
      <pubDate>Tue, 20 Sep 2022 17:25:21 +0900</pubDate>
    </item>
    <item>
      <title>Git-flow 방법론, Git 더 쉽게 사용하기</title>
      <link>https://calmdawnstudio.tistory.com/149</link>
      <description>&lt;h1&gt;Git-flow 방법론, Git 더 쉽게 사용하기&lt;/h1&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2&gt;1. Git-flow 방법론&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Git-flow 방법론은 git을 사용할때의 관례적인 표준개발방법론이다.&lt;/li&gt;
&lt;li&gt;branch를 5가지의 브랜치(hotfix, main, develop, feature, release)를 통해 운영하는 것으로 용어만 몰랐을 뿐이지 이미 경험했을 수도 있다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3&gt;1.1 Git-flow 더 쉽게 사용하자&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;p&gt;프로젝트 시작시 5가지의 브랜치를 생성하고, 병합하거나 릴리즈할때마다 브랜치를 옮기고 병합하고 이 모든것을 명령어로 하나하나씩 입력하며 사용하는 작업을 효율적으로 할 수 있게 도와주는 유틸이 있다.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;[사이트 주소] &lt;a href=&quot;https://danielkummer.github.io/git-flow-cheatsheet/index.ko_KR.html&quot;&gt;https://danielkummer.github.io/git-flow-cheatsheet/index.ko_KR.html&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;img src=&quot;https://user-images.githubusercontent.com/46203866/190970029-1692842a-3b5c-423e-a190-1a92abdb6b38.png&quot; alt=&quot;git-flow-commands&quot;&gt;&lt;ul&gt;
&lt;li&gt;[그림] git-flow 명령어 조합방법 &lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th align=&quot;center&quot;&gt;명령어&lt;/th&gt;
&lt;th align=&quot;left&quot;&gt;설명&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;&lt;tr&gt;
&lt;td align=&quot;center&quot;&gt;git flow init&lt;/td&gt;
&lt;td align=&quot;left&quot;&gt;git-flow를 사용하기 위한 초기화, develop 브랜치까지 자동생성함&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td align=&quot;center&quot;&gt;git flow feature start [브랜치 이름]&lt;/td&gt;
&lt;td align=&quot;left&quot;&gt;입력한 브랜치 이름을 생성하고 해당 브랜치로 이동&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td align=&quot;center&quot;&gt;git flow feature finish [브랜치 이름]&lt;/td&gt;
&lt;td align=&quot;left&quot;&gt;입력한 브랜치를 develop 브랜치에 병합하고 해당 브랜치를 삭제&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td align=&quot;center&quot;&gt;git flow release start [브랜치 이름]&lt;/td&gt;
&lt;td align=&quot;left&quot;&gt;feature start 과정과 동일&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td align=&quot;center&quot;&gt;git flow release finish [브랜치 이름]&lt;/td&gt;
&lt;td align=&quot;left&quot;&gt;feature finish 과정과 동일&lt;br&gt; 단, commit시 태그 입력후 git push --tags 명령어로 태그도 저장하자&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;</description>
      <category>GitHub</category>
      <category>Git</category>
      <category>패스트캠퍼스</category>
      <author>컴던</author>
      <guid isPermaLink="true">https://calmdawnstudio.tistory.com/149</guid>
      <comments>https://calmdawnstudio.tistory.com/149#entry149comment</comments>
      <pubDate>Mon, 19 Sep 2022 17:03:18 +0900</pubDate>
    </item>
    <item>
      <title>Git을 활용해 협업하기</title>
      <link>https://calmdawnstudio.tistory.com/148</link>
      <description>&lt;h1&gt;Git을 활용해 협업하기&lt;/h1&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2&gt;1. 깃 커밋 컨벤션 규칙(git commit convension)&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;보통 프로그래밍 언어를 사용하여 개발시 일정한 규칙에 따라 코딩한다.&lt;ul&gt;
&lt;li&gt;카멜 케이스 표기법(CamelCase)&lt;/li&gt;
&lt;li&gt;스네이크 케이스 표기법(snake_case)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;git 커밋도 마찬가지로 특별한 경우가 아니라면 git commit시 일정한 규칙을 지켜서 커밋하면 좋다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3&gt;1.1 대표적인 커밋 컨벤션&lt;/h3&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th align=&quot;center&quot;&gt;태그 이름&lt;/th&gt;
&lt;th align=&quot;left&quot;&gt;태그 의미&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;&lt;tr&gt;
&lt;td align=&quot;center&quot;&gt;Feat&lt;/td&gt;
&lt;td align=&quot;left&quot;&gt;새로운 기능을 추가한 경우&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td align=&quot;center&quot;&gt;Fix&lt;/td&gt;
&lt;td align=&quot;left&quot;&gt;버그를 고친 경우&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td align=&quot;center&quot;&gt;Refactor&lt;/td&gt;
&lt;td align=&quot;left&quot;&gt;코드 리팩토링한 경우&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td align=&quot;center&quot;&gt;Docs&lt;/td&gt;
&lt;td align=&quot;left&quot;&gt;문서를 생성 또는 수정한 경우&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td align=&quot;center&quot;&gt;Rename&lt;/td&gt;
&lt;td align=&quot;left&quot;&gt;파일 또는 폴더의 이름을 변경하거나 옮긴 경우&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td align=&quot;center&quot;&gt;Remove&lt;/td&gt;
&lt;td align=&quot;left&quot;&gt;파일 또는 폴더를 제거한 경우&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3&gt;1.2 커밋 컨벤션 사용방법&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;[사용할 태그이름] : 사용한 태그 의미와 부합되는 설명 &lt;ul&gt;
&lt;li&gt;ex ) Docs : Create READEME.md &lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;추가적으로 설명할 내용이 있는 경우 제목이 아닌 body 부분에 작성&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2&gt;2. Branch 독립된 저장공간에서 작업하기&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;브랜치란 작업을 분기하기 위해 만들어진 독립된 작업 공간이다.&lt;/li&gt;
&lt;li&gt;생성된 각각의 브랜치는 다른 브랜치에 영향을 받거나 영향을 주지 않는다.&lt;/li&gt;
&lt;li&gt;일반적으로 레파지토리를 생성하게 되면 main이라는 작업공간이 생성된다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3&gt;2.1 브랜치의 종류&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;프로젝트 진행시 여러 브랜치들을 생성하여 작업하게 되는데 보통 hotfix, main, release, develop, feature 이름을 붙인다.&lt;/li&gt;
&lt;/ul&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th align=&quot;center&quot;&gt;브랜치 이름&lt;/th&gt;
&lt;th align=&quot;left&quot;&gt;의미&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;&lt;tr&gt;
&lt;td align=&quot;center&quot;&gt;hotifx&lt;/td&gt;
&lt;td align=&quot;left&quot;&gt;현재출시 버전에서 발생한 버그를 수정하는 브랜치&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td align=&quot;center&quot;&gt;main(구 master)&lt;/td&gt;
&lt;td align=&quot;left&quot;&gt;제품으로 출시될 수 있는 브랜치&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td align=&quot;center&quot;&gt;release&lt;/td&gt;
&lt;td align=&quot;left&quot;&gt;이번 출시 버전을 준비하는 브랜치&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td align=&quot;center&quot;&gt;develop&lt;/td&gt;
&lt;td align=&quot;left&quot;&gt;다음 출시 버전을 개발하는 브랜치&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td align=&quot;center&quot;&gt;feature&lt;/td&gt;
&lt;td align=&quot;left&quot;&gt;기능개발하는 브랜치&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3&gt;2.2 브랜치 사용방법&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;git branch : 현재 브랜치의 목록 확인&lt;/li&gt;
&lt;li&gt;git branch [생성할 브랜치 이름]: 특정 이름으로 브랜치 생성&lt;/li&gt;
&lt;li&gt;git switch(구 checkout) [생성된 브랜치 이름] : 현재 위치한 브랜치에서 입력한 브랜치로 이동함&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2&gt;3. Merge 다른 Branch에서 작업한 내용을 병합하자&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;현재 브랜치에 다른 브랜치에서 작업한 내용을 합치는 것&lt;/li&gt;
&lt;li&gt;앞서 포스팅에서 설명한 것처럼 main, develop, feature등 다양한 브랜치를 통해 나누어 작업을 끝낸이후 프로젝트를 배포하거나, 통합테스트를 하기위해서는 하나로 합쳐주어야 한다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3&gt;3.1 Merge 사용방법&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;git merge [병합할 브랜치 이름] : 현재 위치한 브랜치에 입력한 브랜치의 내용을 병합함&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3&gt;3.2 Merge Conflict(병합 충돌)&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;동일한 파일의 동일한 부분을 수정하고 병합하는 경우 충돌이 발생한다.&lt;/li&gt;
&lt;li&gt;충돌이 발생한 파일은 원하는 방향으로 수정한 후 다시 커밋해주면 해결된다.&lt;/li&gt;
&lt;li&gt;협업 혹은 동일한 프로젝트를 다른 환경에서 개발하다보면 자주 접하게 되는 오류이므로 당황하지말자&lt;/li&gt;
&lt;/ul&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th align=&quot;center&quot;&gt;충돌 표시&lt;/th&gt;
&lt;th align=&quot;left&quot;&gt;설명&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;&lt;tr&gt;
&lt;td align=&quot;center&quot;&gt;&amp;lt;&amp;lt;&amp;lt;HEAD&lt;/td&gt;
&lt;td align=&quot;left&quot;&gt;충돌이 발생한 부분의 시작지점&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td align=&quot;center&quot;&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; [특정단어]&lt;/td&gt;
&lt;td align=&quot;left&quot;&gt;충돌이 끝나는 부분의 지점&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td align=&quot;center&quot;&gt;========&lt;/td&gt;
&lt;td align=&quot;left&quot;&gt;충돌이 일어난 중간 경계선 표시&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;</description>
      <category>GitHub</category>
      <category>Git</category>
      <category>패스트캠퍼스</category>
      <author>컴던</author>
      <guid isPermaLink="true">https://calmdawnstudio.tistory.com/148</guid>
      <comments>https://calmdawnstudio.tistory.com/148#entry148comment</comments>
      <pubDate>Fri, 16 Sep 2022 21:18:55 +0900</pubDate>
    </item>
    <item>
      <title>Git, Github 기초 사용법</title>
      <link>https://calmdawnstudio.tistory.com/147</link>
      <description>&lt;h1&gt;Git, Github 사용법&lt;/h1&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;1. Git이란?&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;분산 버전관리 시스템(DVCS)&lt;/li&gt;
&lt;li&gt;작업을 하며 일어나는 파일의 변화를 시간별로 기록, 즉 버전별로 저장해두었다가 추후 특정 시점의 버전을 불러와 작업할 수 있는 시스템이다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;2. Github이란?&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;git을 활용하는 프로젝트들을 지원하기 위한 웹기반 호스팅 서비스&lt;/li&gt;
&lt;li&gt;한마디로 git을 활용한 원격저장소를 말한다&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;3. Linux 기초명령어&lt;/h2&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;/ul&gt;
&lt;table data-ke-align=&quot;alignLeft&quot;&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th align=&quot;center&quot;&gt;명령어&lt;/th&gt;
&lt;th align=&quot;left&quot;&gt;동작결과&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td align=&quot;center&quot;&gt;~&lt;/td&gt;
&lt;td align=&quot;left&quot;&gt;권한없이 사용할 수 있는 최상위 디렉토리&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td align=&quot;center&quot;&gt;pwd&lt;/td&gt;
&lt;td align=&quot;left&quot;&gt;현재디렉토리 위치를 표시&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td align=&quot;center&quot;&gt;ls&lt;/td&gt;
&lt;td align=&quot;left&quot;&gt;디렉토리 목록 표시&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td align=&quot;center&quot;&gt;ls-a&lt;/td&gt;
&lt;td align=&quot;left&quot;&gt;숨겨진 파일을 포함하여 디렉토리 목록 표시&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td align=&quot;center&quot;&gt;ls-l&lt;/td&gt;
&lt;td align=&quot;left&quot;&gt;디렉토리 목록을 자세히 표시&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td align=&quot;center&quot;&gt;touch&lt;/td&gt;
&lt;td align=&quot;left&quot;&gt;파일의 날짜 또는 시간을 수정 or 간단한 파일 생성&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td align=&quot;center&quot;&gt;cd&lt;/td&gt;
&lt;td align=&quot;left&quot;&gt;특정 디렉토리 위치로 이동&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td align=&quot;center&quot;&gt;cp&lt;/td&gt;
&lt;td align=&quot;left&quot;&gt;파일 또는 디렉토리 복사&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td align=&quot;center&quot;&gt;mv&lt;/td&gt;
&lt;td align=&quot;left&quot;&gt;파일 또는 디렉토리를 이동&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td align=&quot;center&quot;&gt;rm&lt;/td&gt;
&lt;td align=&quot;left&quot;&gt;파일 제거&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td align=&quot;center&quot;&gt;rm-rf&lt;/td&gt;
&lt;td align=&quot;left&quot;&gt;파일과 디렉토리를 모두 제거&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;4. Git 기초명령어&lt;/h2&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;/ul&gt;
&lt;table data-ke-align=&quot;alignLeft&quot;&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th align=&quot;center&quot;&gt;명령어&lt;/th&gt;
&lt;th align=&quot;left&quot;&gt;동작결과&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td align=&quot;center&quot;&gt;stuats&lt;/td&gt;
&lt;td align=&quot;left&quot;&gt;파일의 변경내역 등 현재 상태를 확인&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td align=&quot;center&quot;&gt;clone&lt;/td&gt;
&lt;td align=&quot;left&quot;&gt;가져온 url을 바탕으로 원격저장소를 그대로 복제&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td align=&quot;center&quot;&gt;add&lt;/td&gt;
&lt;td align=&quot;left&quot;&gt;변화한 파일들중 반영하고 싶은 파일을 선택해 스테이징&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td align=&quot;center&quot;&gt;commit&lt;/td&gt;
&lt;td align=&quot;left&quot;&gt;로컬저장소에 변경내역을 반영&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td align=&quot;center&quot;&gt;push&lt;/td&gt;
&lt;td align=&quot;left&quot;&gt;원격저장소에 변경내역을 반영&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td align=&quot;center&quot;&gt;pull&lt;/td&gt;
&lt;td align=&quot;left&quot;&gt;원격저장소의 최신파일을 로컬저장소에 가져와 자동으로 병합하여 반영(update)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td align=&quot;center&quot;&gt;branch&lt;/td&gt;
&lt;td align=&quot;left&quot;&gt;기존 저장공간과는 독립적으로 작업하기위해 만들어지는 공간&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td align=&quot;center&quot;&gt;checkout&lt;/td&gt;
&lt;td align=&quot;left&quot;&gt;현재 branch에서 다른 branch로 이동&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td align=&quot;center&quot;&gt;merge&lt;/td&gt;
&lt;td align=&quot;left&quot;&gt;현재 branch를 기준으로 다른 brach를 병합&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;</description>
      <category>GitHub</category>
      <category>Git</category>
      <category>패스트캠퍼스</category>
      <author>컴던</author>
      <guid isPermaLink="true">https://calmdawnstudio.tistory.com/147</guid>
      <comments>https://calmdawnstudio.tistory.com/147#entry147comment</comments>
      <pubDate>Thu, 15 Sep 2022 14:12:20 +0900</pubDate>
    </item>
    <item>
      <title>42Seoul 라피신 후기(La Piscine) 5기 2차</title>
      <link>https://calmdawnstudio.tistory.com/146</link>
      <description>&lt;h3 data-ke-size=&quot;size23&quot;&gt;42서울이란?&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;정부산하 과학기술정보통신부에서 설립한 이노베이션아카데미재단에서 운영하며 프랑스에서 시작된 에꼴42의 교육방식 및 인프라를 수입하여 적용한 개발자 양성 교육기관이다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1776&quot; data-origin-height=&quot;1588&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/daECHL/btrnV6ENgNu/ELVrxukk1nMtHkl2IWOdw1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/daECHL/btrnV6ENgNu/ELVrxukk1nMtHkl2IWOdw1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/daECHL/btrnV6ENgNu/ELVrxukk1nMtHkl2IWOdw1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdaECHL%2FbtrnV6ENgNu%2FELVrxukk1nMtHkl2IWOdw1%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;640&quot; height=&quot;572&quot; data-origin-width=&quot;1776&quot; data-origin-height=&quot;1588&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;신청방법&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;온라인테스트 통과 -&amp;gt; 체크인 미팅 등록 -&amp;gt; 라피신 등록 과정으로 이루어져 있다.&lt;/li&gt;
&lt;li&gt;온라인테스트를 제외한 모든 과정들은 선착순으로 진행되다보니 신청날짜에는 항상 서버가 터진다.&lt;/li&gt;
&lt;li&gt;42서울에서 홍보를 많이 하고 사람들에게 알려지고 있다보니 기수가 늘어날 수록 등록이 더 힘든것 같다.&amp;nbsp;&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;라피신 준비 및 주차별 느낀점&lt;/h2&gt;
&lt;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;5기 2차의 경우 코로나때문에 1그룹, 2그룹으로 나뉘어 격일제로 진행되었다.&lt;/li&gt;
&lt;li&gt;클러스터에 출석하지 못하는 날은 집에서 원격접속으로 진행할 수 있었다.&amp;nbsp;&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;준비하기&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;많은 라피신 후기 블로그 글들을 읽어 보고 필요한 공부들을 정리했다. (쉘, 터미널환경, Vim, C언어 등 )&lt;/li&gt;
&lt;li&gt;라피신이 진행되기 이전에 오픈카톡방, 디스코드 등으로 많은 사람들이 스터디 그룹을 만드는 것을 볼 수 있었다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;※ 그러나 C언어만 가볍게 읽어보고 따로 스터디나 공부는 하지않았다. 음... 지금생각해도 C면 충분한 것 같다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;1주차&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;대부분 Windows 운영체제와 Gui 환경(마우스로 클릭하는 환경)에 익숙해져 있기 때문에 42서울의 개발환경에 적응하는 시기였다. Mac 운영체제와 Terminal 을 사용하며 다양한 Shell 명령어들과 이를 활용해 스크립트를 작성하는 과제를 진행했다. 앞으로 자주 쓰이는 유용한 명령어들을 배울 수 있었지만, 다시는 쓰지않을 문제를 위한 명령어들 또한 많았다. 그래서인지 전공자 비전공자 관계없이 다들 머리를 끙끙 싸매는 모습을 볼 수 있었다. 주말에는 처음으로 러쉬(Rush)라고 하는 팀프로젝트를 신청해서 진행했다. 1주차 러쉬과제는 정말정말정말 쉬웠는데 서버가 터져서 결국 무효가 됐다. ㅠㅠ&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;2주차&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;진도가 느린사람들은 Shell 과제를 진도가 빠른 사람들은 C언어 과제를 진행하며 주말이 오기전에 대부분 C를 진행하는 모습을 볼 수 있었다. 쉘을 떠나보내고 C로 프로그래밍하며 직접 코드를 짜고 결과를 확인하면서 재미를 느끼는 사람이 많았다. 그러다보니 동료평가가 활발하게 이루어지고 클러스터가 왁자지껄했다. 또한 이때부터 프로그래밍을 경험한사람과 경험하지 않은 사람들의 진도차이가 많이 벌어지기 시작했다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;3주차&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이제는 대부분의 사람들이 클러스터 노미네이트라는 녀석과 vim 에서 코드를 작성하고 Git을 활용해 과제를 평가받고 컴파일을 통한 에러확인 등 42환경에 익숙해졌다. 다만 클러스터에 빈 공간들을 심심치 않게 볼 수 있으며 포기하시는 분들이 많이 나오는 주차이기도 했다. 가볍고 따듯했던 클러스터의 공기가 점차 무겁고 차가워지는 시기였다. 각자 자신의 남은 과제들을 클리어하고 리트라이 속에서 동료평가를 다니면서 포인트를 얻어야하기 때문에 밥먹는 시간조차 부족했었다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;4주차&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;피신의 끝이 다가온다 개인과제, BSQ, 최종시험을 대비해야 하기때문에 개인과제에 집중하는 사람, BSQ에 집중하는 사람, 두개 다 하는 사람 등 여러 부류로 나뉜다. 나는 BSQ 팀원분과 과제를 본 후 각자 개인과제에 집중하기로 했다. 사람도 많이 없어지고 각자 평가를 받아야하는 입장이라 평가 가뭄 현상도 심해져서 마치 콘서트 티켓팅처럼 평가잡기가 어려웠다. 최종적으로 Final Exam을 본 후 라피신을 마쳤다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;장단점 및 후기&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;결론부터 말하자면 단기간에 집중해서 프로그래밍과 코드리뷰 경험을 얻기에는 아주 좋다. 취업에 아주아주 급한사람이 아니라면 라피신과 이후 카뎃과정을 경험하면 좋을것 같다. 논리력, 문제해결방법, 동작원리등 많은 것을 얻어갈 수 있다고 생각한다. 참고로 22년도부터는 재응시가 가능하게끔 변경되었다. 예비피시너분들 모두 파이팅했으면 좋겠다.!&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;장점&lt;/h3&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;/ul&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;처음에는 클러스터 사람들끼리 어색하지만 자연스럽게 의견을 활발하게 교환하는 분위기가 만들어진다. 어렵거나 모르는 부분에 대해서 질문하면 자신이 알고 있는 지식들을 아낌없이 알려주신다. 프로그래밍에 대한 지식이 아무것도 없는 사람이라면 피신시작전 ~ 라피신 초반까지 스터디 그룹이 많이 생기므로 참여하면 좋을 것 같다. 또는 다른사람들과 어울리지 않지만 묵묵히 과제를 해결해 나가는 재야의 고수들이 있다. 이 사람들은 질문을 받으면 오히려 좋아하니 참고하도록 하자.&lt;/li&gt;
&lt;/ol&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;/ul&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;기계뿐만이아닌 상호간에 코드리뷰를 통해 과제평가가 이루어진다. 이러한 시스템으로 인해 올바른 평가점수를 받기 위해 자신이 작성한 코드가 어떤방식으로 동작하고 과제가 무엇을 요구하는지 기본적으로 숙지하고 있어야했다. 또한 더 효율적으로 해결하는 방법 등을 자연스럽게 공유하면서 많은 부분을 배워갈 수 있었다.&lt;/li&gt;
&lt;/ol&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;/ul&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;라피신기간을 정상적으로 이수하면 약 100만원의 지원금을 받으며 다른곳에 신경 쓰지 않고 라피신에 몰두할 수 있게 해준다. 지원금이 주목적이 되면 안되지만 많은 사람들이 열심히 하는 이유중 하나이기도 하다.&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;단점&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;교수,교재,학비가&amp;nbsp;없는&amp;nbsp;3無&amp;nbsp;교육&lt;/li&gt;
&lt;/ul&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;42서울의 교육 철학으로 교육생들이 의견을 공유하고 스스로 문제해결하며 능력을 기르기위한 방침이다. 의도는 알겠지만 진짜 1도 없다. 비전공자들도 모집하는 교육기관인만큼 최소한의 가이드라인은 제공해주어야 하지 않나싶다. 영리한?? 점은 불친절함을 컨셉으로 삼아서 자연스럽게 모든 원망을 피해나간다... 결국 프로그래밍 경험이 있는 사람들에게 의존할 수 밖에 없는 환경이 만들어지는 것 같다. 변수조차 모르는 사람들이 구글링, 스택오버플로우, 깃 등으로 해결해나가는 방법을 어떻게 알 수 있을까??&lt;/li&gt;
&lt;/ol&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;/ul&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;자기주도학습과 동료평가를 주된 교육방법으로 제시하는 교육과정이었지만 수 많은 사람이 모이는만큼 내가 생각한 동료학습과는 다르게 해석하신 분들도 많았던것 같다. 사실 동료들이지만 평가와 레벨시스템으로 상호간에 경쟁을 통해 선발되는 과정이므로 경쟁자이기도 하다. 이 때문인지 가끔 어떻게든 트집을 잡고 굳이 필요하지 않은 개념과 상관없는 세부구조까지 질문해가며 과제점수를 까내리는 사람들을 보면서 저렇게까지 할 필요가 있나 싶기도 했다. 이런 사람들은 꼭 본과정에 가더라... 어디서나 이기적인 사람들은 잘 사는것 같다. 전공자도 아닌 비전공자들이 그러한 개념과 동작구조를 어떻게 파악하고 하루라는 시간안에 어떻게 완벽하게 이해할 수 있을까..&amp;nbsp;&lt;/li&gt;
&lt;li&gt;피신기간동안 다양한 사람들과 만나며 스터디, 밥 친구 등 친목을 다지면 좋다. 평가가 잘 안잡히는 시간을 이용해서 친한그룹끼리 무조건적인 과제패스를 주는 경우를 몇몇 보았는데, 평가가 잡히면 큰소리로 돌아다니면서 당당하게 하이파이브를 하는 그들의 모습은 조금 안쓰러웠다.&lt;/li&gt;
&lt;/ol&gt;</description>
      <category>42서울(42Seoul)</category>
      <category>42서울</category>
      <category>라피신</category>
      <author>컴던</author>
      <guid isPermaLink="true">https://calmdawnstudio.tistory.com/146</guid>
      <comments>https://calmdawnstudio.tistory.com/146#entry146comment</comments>
      <pubDate>Thu, 16 Dec 2021 04:56:44 +0900</pubDate>
    </item>
    <item>
      <title>[JAVA][그래프] 백준 1260번</title>
      <link>https://calmdawnstudio.tistory.com/145</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;[JAVA] 백준 1260번 - DFS와 BFS&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1631021021402&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import java.io.*;
import java.util.*;

public class Main {

    static int N;
    static ArrayList&amp;lt;ArrayList&amp;lt;Integer&amp;gt;&amp;gt; graph;
    static BufferedWriter bw;
    static boolean[] visitedDfs;
    static boolean[] visitedBfs;

    public static void main(String[] args) throws IOException {

        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        bw = new BufferedWriter(new OutputStreamWriter(System.out));

        StringTokenizer st = new StringTokenizer(br.readLine());
        N = Integer.parseInt(st.nextToken());
        int M = Integer.parseInt(st.nextToken());
        int V = Integer.parseInt(st.nextToken());

        graph = new ArrayList&amp;lt;&amp;gt;();
        visitedDfs = new boolean[N + 1];
        visitedBfs = new boolean[N + 1];

        for (int i = 0; i &amp;lt;= N; i++) {
            graph.add(new ArrayList&amp;lt;Integer&amp;gt;());
        }

        for (int j = 0; j &amp;lt; M; j++) { //초기 연결하는 두 정점 값 세팅
            st = new StringTokenizer(br.readLine());
            int start = Integer.parseInt(st.nextToken());
            int end = Integer.parseInt(st.nextToken());
            graph.get(start).add(end);
            graph.get(end).add(start);
        }

        for (int i = 0; i &amp;lt;= N; i++) {
            Collections.sort(graph.get(i));
        }

        dfs(V);
        bw.newLine();
        bfs(V);

        bw.flush();
        bw.close();

    }

    private static void bfs(int V) throws IOException { //Queue를 이용한 BFS

        Queue&amp;lt;Integer&amp;gt; queue = new LinkedList&amp;lt;&amp;gt;();
        queue.add(V);
        visitedBfs[V] = true;
        bw.write(V + &quot; &quot;);

        while (!queue.isEmpty()) {
            int value = queue.poll();

            for (int val : graph.get(value)) {
                if (visitedBfs[val] == false) {
                    queue.add(val);
                    bw.write(val + &quot; &quot;);
                    visitedBfs[val] = true;
                }
            }
        }
    }

    private static void dfs(int V) throws IOException { //재귀를 이용한 DFS

        bw.write(V + &quot; &quot;);
        visitedDfs[V] = true;

        for (int value : graph.get(V)) {
            if (visitedDfs[value] == false) {
                dfs(value);
            }
        }
    }


}&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;1. ArrayList&amp;lt;ArrayList&amp;lt;&amp;gt;&amp;gt;를 사용해 그래프를 만들고 정점과 간선을 입력받음&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2. Queue를 사용한 BFS(너비우선탐색)을 구현, 재귀를 사용한 DFS(깊이우선탐색)을 구현&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;※DFS의 경우 재귀대신 Stack을 사용할 수 있지만 코드가 좀 더 길어진다.&lt;/p&gt;</description>
      <category>알고리즘/백준 문제[추후 옮길예정]</category>
      <category>그래프</category>
      <category>알고리즘</category>
      <author>컴던</author>
      <guid isPermaLink="true">https://calmdawnstudio.tistory.com/145</guid>
      <comments>https://calmdawnstudio.tistory.com/145#entry145comment</comments>
      <pubDate>Tue, 7 Sep 2021 22:26:40 +0900</pubDate>
    </item>
    <item>
      <title>[JAVA] [그래프] 백준 11724번</title>
      <link>https://calmdawnstudio.tistory.com/144</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;[JAVA] 백준 11724번 - 연결 요소의 개수&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1631010813200&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import java.io.*;
import java.util.ArrayList;
import java.util.StringTokenizer;

public class Main {

    static ArrayList&amp;lt;ArrayList&amp;lt;Integer&amp;gt;&amp;gt; graph; //정점과 간선을 표현할 그래프
    static boolean[] visited;   //방문한 정점 체크를 위한 배열

    public static void main(String[] args) throws IOException {

        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));

        graph = new ArrayList&amp;lt;&amp;gt;();

        StringTokenizer st = new StringTokenizer(br.readLine());

        int N = Integer.parseInt(st.nextToken());
        int M = Integer.parseInt(st.nextToken());

        visited = new boolean[N + 1];

        for (int i = 0; i &amp;lt;= N; i++) {
            graph.add(new ArrayList&amp;lt;Integer&amp;gt;());
        }

        for (int j = 0; j &amp;lt; M; j++) {
            st = new StringTokenizer(br.readLine());
            int u = Integer.parseInt(st.nextToken());
            int v = Integer.parseInt(st.nextToken());

            graph.get(u).add(v);
            graph.get(v).add(u);
        }

        visited[0] = true;
        int connectedComponentCount = 0;

        for (int i = 0; i &amp;lt; graph.size(); i++) {    //방문한적이 없는 경우 연결요소를 구하고, 연결요소 개수 증가
            if (visited[i] == false) {
                dfs(i);
                connectedComponentCount++;
            }

        }

        bw.write(String.valueOf(connectedComponentCount));
        bw.flush();
        bw.close();
    }

    private static void dfs(int startU) {   //깊이우선탐색을 통해 연결요소를 전부 구함

        visited[startU] = true;
        for (int value : graph.get(startU)) {
            if (visited[value] == false) {
                dfs(value);
            }
        }

    }

}&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;1. ArrayList&amp;lt;ArrayList&amp;lt;Integer&amp;gt;&amp;gt; 를 통해 그래프를 초기화 시키고, 정점과 간선을 입력받음.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2. 방문한 적이 없는 정점의 경우 DFS로 연결요소를 구함.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;3. 이미 방문한적이 있는 정점의경우 연결요소를 구하지 않음. 이후 최종 결과 출력함&lt;/p&gt;</description>
      <category>알고리즘/백준 문제[추후 옮길예정]</category>
      <category>그래프</category>
      <category>알고리즘</category>
      <author>컴던</author>
      <guid isPermaLink="true">https://calmdawnstudio.tistory.com/144</guid>
      <comments>https://calmdawnstudio.tistory.com/144#entry144comment</comments>
      <pubDate>Tue, 7 Sep 2021 19:36:52 +0900</pubDate>
    </item>
    <item>
      <title>[JAVA] [그래프] 백준 13023번</title>
      <link>https://calmdawnstudio.tistory.com/143</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;[JAVA] 백준 13023번 - ABCDE&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1631010052312&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import java.io.*;
import java.util.ArrayList;
import java.util.StringTokenizer;

public class Main {

    static boolean[] visited;   //방문여부를 체크하는 배열
    static ArrayList&amp;lt;Integer&amp;gt;[] graph;  //친구 관계를 담을 리스트배열
    static boolean result = false;

    public static void main(String[] args) throws IOException {

        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));

        StringTokenizer st = new StringTokenizer(br.readLine());

        int N = Integer.parseInt(st.nextToken());
        int M = Integer.parseInt(st.nextToken());

        graph = new ArrayList[N];
        visited = new boolean[N];


        for (int i = 0; i &amp;lt; N; i++) {   //리스트 배열 초기화
            graph[i] = new ArrayList&amp;lt;Integer&amp;gt;();
        }

        for (int j = 0; j &amp;lt; M; j++) {   //각각의 사람이 어떤 친구관계를 가지고 있는지 넣어줌
            st = new StringTokenizer(br.readLine());
            int a = Integer.parseInt(st.nextToken());
            int b = Integer.parseInt(st.nextToken());

            graph[a].add(b);
            graph[b].add(a);

        }

        for (int i = 0; i &amp;lt; N; i++) {
            if (result == false) {
                dfs(0, i);
            }
        }

        if (result) {
            bw.write(&quot;1&quot;);
        } else {
            bw.write(&quot;0&quot;);
        }

        bw.flush();
        bw.close();

    }

    private static void dfs(int depth, int visitedIdx) {    //서로 이어지는 친구관계가 4개인지 확인

        if (depth == 4) {
            result = true;
            return;
        }

        visited[visitedIdx] = true;
        for (int i = 0; i &amp;lt; graph[visitedIdx].size(); i++) {
            if (visited[graph[visitedIdx].get(i)] == false) {
                dfs(depth + 1, graph[visitedIdx].get(i));
            }
        }
        visited[visitedIdx] = false;

    }

}&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;1. 그래프를 표현하기 위해 ArrayList&amp;lt;&amp;gt;[] 배열을 사용하여 값을 초기화함. ArrayList&amp;lt;ArrayList&amp;lt;&amp;gt;()&amp;gt; 구조로도 사용가능&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2. a, b 가 친구인경우 a.add(b), b.add(a) 처럼 각각 친구 관계를 추가함&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;3. 그래프를 DFS(깊이우선탐색)방법으로 이어진 친구 관계가 4인 경우를 탐색하고 결과 출력함&lt;/p&gt;</description>
      <category>알고리즘/백준 문제[추후 옮길예정]</category>
      <category>그래프</category>
      <category>알고리즘</category>
      <author>컴던</author>
      <guid isPermaLink="true">https://calmdawnstudio.tistory.com/143</guid>
      <comments>https://calmdawnstudio.tistory.com/143#entry143comment</comments>
      <pubDate>Tue, 7 Sep 2021 19:23:56 +0900</pubDate>
    </item>
    <item>
      <title>[JAVA] 백준 15664번</title>
      <link>https://calmdawnstudio.tistory.com/142</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;[JAVA] 백준 15664번 - N과&amp;nbsp;M&amp;nbsp;(10)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1627253393883&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.StringTokenizer;

public class Main {

	static int N, M;
	static StringBuilder sb = new StringBuilder();
	static int[] answerArr; // 정답을 저장할 배열
	static HashMap&amp;lt;Integer, Integer&amp;gt; numberCountMap; // 사용할 숫자의 중복개수
	static ArrayList&amp;lt;Integer&amp;gt; numberList; // 사용할 숫자

	public static void main(String[] args) throws IOException {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

		StringTokenizer st = new StringTokenizer(br.readLine());

		N = Integer.parseInt(st.nextToken());
		M = Integer.parseInt(st.nextToken());
		answerArr = new int[M];

		numberCountMap = new HashMap&amp;lt;Integer, Integer&amp;gt;();
		numberList = new ArrayList&amp;lt;Integer&amp;gt;();

		st = new StringTokenizer(br.readLine());

		while (st.hasMoreTokens()) {
			int num = Integer.parseInt(st.nextToken());

			if (numberCountMap.get(num) == null) { // 사용할 숫자 리스트에 1번만 값을 넣어줌
				numberCountMap.put(num, 1);
				numberList.add(num);
			} else if (numberCountMap.get(num) &amp;lt; M) { // 사용할 숫자의 중복개수를 넣어줌
				numberCountMap.put(num, numberCountMap.get(num) + 1);
			}
		}

		Collections.sort(numberList);

		int depth = 0;

		solution(depth);

		System.out.print(sb.toString());

	}

	private static void solution(int depth) {
		if (depth == M) {
			for (int num : answerArr) {
				sb.append(num).append(&quot; &quot;);
			}
			sb.append(&quot;\n&quot;);
			return;
		}

		for (int i = 0; i &amp;lt; numberList.size(); i++) {
			if (numberCountMap.get(numberList.get(i)) &amp;gt; 0) {

				if (depth == 0 || (depth &amp;gt; 0 &amp;amp;&amp;amp; answerArr[depth - 1] &amp;lt;= numberList.get(i))) {
					numberCountMap.put(numberList.get(i), numberCountMap.get(numberList.get(i)) - 1);
					answerArr[depth] = numberList.get(i);
					solution(depth + 1);
					numberCountMap.put(numberList.get(i), numberCountMap.get(numberList.get(i)) + 1);
				}

			}
		}
	}
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;백준 백트래킹 문제&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;정답을 맞춘 풀이방법&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1. depth == 0&amp;nbsp; 인경우 또는 이전 수열보다 현재수열이 크거나 같은경우에만 solution함수를 실행함&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;※ HashMap이 아닌 HashSet과 별도의 boolean[] 배열을 쓰는 방법도 있었음&lt;/p&gt;</description>
      <category>알고리즘/백준 문제[추후 옮길예정]</category>
      <category>알고리즘</category>
      <author>컴던</author>
      <guid isPermaLink="true">https://calmdawnstudio.tistory.com/142</guid>
      <comments>https://calmdawnstudio.tistory.com/142#entry142comment</comments>
      <pubDate>Mon, 26 Jul 2021 07:56:12 +0900</pubDate>
    </item>
  </channel>
</rss>