<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>Study-Note</title>
    <link>https://developmentnotepad.tistory.com/</link>
    <description></description>
    <language>ko</language>
    <pubDate>Mon, 20 Jul 2026 21:49:49 +0900</pubDate>
    <generator>TISTORY</generator>
    <ttl>100</ttl>
    <managingEditor>칸타탓</managingEditor>
    <item>
      <title>[Algorithm/JAVA] Comparator, Comparable</title>
      <link>https://developmentnotepad.tistory.com/entry/JAVAAlgorithm-Comparator-Comparable</link>
      <description>&lt;p&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;&lt;span&gt;Comparable 인터페이스 (java.lang)&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;객체 간의&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;일반적인 정렬&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;이 필요할 때, Comparable 인터페이스를 확장한다.&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;span&gt;정렬할 객체에 Comparable 인터페이스를 implements 한 후, CompareTo() 메서드를 오버라이드 하여 정렬&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;CompareTo()&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;- 현재 객체 &amp;lt; 파라미터로 넘어온 객체 : 음수 리턴&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;- 현재 객체 = 파라미터로 넘어온 객체 : 0 리턴&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;- 현재 객체 &amp;gt; 파라미터로 넘어온 객체 : 양수 리턴&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;Comparator 인터페이스 (java.util)&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;객체 간의&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;특정한 정렬&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;이 필요할 때, Comparator 인터페이스를 확장해서 특정&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;기준&lt;span style=&quot;color: #000000;&quot;&gt;을 정의하는&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;compare()&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;메서드를 구현한다.&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #000000;&quot;&gt;기본적인 정렬 기준과 다르게 정렬하고 싶을 때 사용&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;Comparator 인터페이스를 &lt;span style=&quot;color: #000000;&quot;&gt;implements 한 후, compare() 메서드를 오버라이드한 클래스를 작성한다.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;compare()&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;- 첫 번째 파라미터로 넘어온 객체 &amp;lt; 두 번째 파라미터로 넘어온 객체 : 음수 리턴 (유지)&lt;br /&gt;&lt;span style=&quot;color: #000000;&quot;&gt;- 첫 번째 파라미터로 넘어온 객체 = 두 번째 파라미터로 넘어온 객체 : 0 리턴 (유지)&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;- 첫 번째 파라미터로 넘어온 객체 &amp;gt; 두 번째 파라미터로 넘어온 객체 : 양수 리턴 (두 객체 자리 변경)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #000000;&quot;&gt;역으로 정렬하기 예제(내림차순)&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1612076607630&quot; class=&quot;python&quot; style=&quot;box-sizing: inherit; overflow: auto; font-family: Menlo, Consolas, Monaco, monospace; font-size: 14px; padding: 16px; background: #f6f7f8; white-space: pre-wrap; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial; margin: 28px auto; color: #555555; overflow-wrap: break-word; line-height: 20px;&quot; data-ke-type=&quot;codeblock&quot; data-ke-language=&quot;python&quot;&gt;&lt;code&gt;Arrays.sort(time, new Comparator&amp;lt;int[]&amp;gt;() {
	@Override
	public int compare(int[] o1, int[] o2) {
		// 0: 시작 시간, 1: 종료 시간
		// 끝시간이 같을 경우 시작 시간 정렬
		if(o1[1] == o2[1]) {
			return Integer.compare(o1[0], o2[0]);
		}
		// 종료 시간 정렬
		return Integer.compare(o1[1], o2[1]);
	}
});&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;객체 정렬 예제 (나이를 기준으로 객체 정렬)&lt;/p&gt;
&lt;pre id=&quot;code_1612077436234&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;public static void main(String[] args) {
    Student s1 = new Student(&quot;name1&quot;, 27); 
    Student s2 = new Student(&quot;name2&quot;, 31); 
    Student s3 = new Student(&quot;name3&quot;, 30);
    
    Student[] arr = new Student[]{s1, s2, s3};
    
    Arrays.sort(arr, new Comparator&amp;lt;Student&amp;gt;() {
        @Override
        public int compare(Student o1, Student o2) {
            return o1.getAge() - o2.getAge();
        }
    });
    
    for(Student s : arr) {
        System.out.println(s.getName() + &quot; &quot; + s.getAge());
    }
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>CS/Algorithm</category>
      <author>칸타탓</author>
      <guid isPermaLink="true">https://developmentnotepad.tistory.com/347</guid>
      <comments>https://developmentnotepad.tistory.com/entry/JAVAAlgorithm-Comparator-Comparable#entry347comment</comments>
      <pubDate>Sun, 31 Jan 2021 16:50:04 +0900</pubDate>
    </item>
    <item>
      <title>[BOJ] 2667번: 단지번호붙이기 (Java)</title>
      <link>https://developmentnotepad.tistory.com/entry/BOJ</link>
      <description>&lt;h3 id=&quot;%ED%94%84%EB%A1%9C%ED%8D%BC%ED%8B%B0property&quot; class=&quot;mume-header&quot; style=&quot;padding: 7px 10px 5px; margin: 1em 0px 16px; border-left: 5px solid #666666; background-color: #fafafa; color: #333333; line-height: 1.2;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-size: 24px; color: #000000;&quot;&gt;[Java] 2667 - 단지번호붙이기&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p class=&quot;p1&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p class=&quot;p1&quot;&gt;&lt;b&gt;[문제]&lt;/b&gt;&lt;/p&gt;
&lt;p class=&quot;p1&quot;&gt;&amp;lt;그림 1&amp;gt;과 같이 정사각형 모양의 지도가 있다. 1은 집이 있는 곳을, 0은 집이 없는 곳을 나타낸다. 철수는 이 지도를 가지고 연결된 집들의 모임인 단지를 정의하고, 단지에 번호를 붙이려 한다. 여기서 연결되었다는 것은 어떤 집이 좌우, 혹은 아래위로 다른 집이 있는 경우를 말한다. 대각선상에 집이 있는 경우는 연결된 것이 아니다. &amp;lt;그림 2&amp;gt;는 &amp;lt;그림 1&amp;gt;을 단지별로 번호를 붙인 것이다. 지도를 입력하여 단지수를 출력하고, 각 단지에 속하는 집의 수를 오름차순으로 정렬하여 출력하는 프로그램을 작성하시오.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dtpoU6/btqOcQhLfde/ZzEm6mDvJKpoZomJP7cKi0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dtpoU6/btqOcQhLfde/ZzEm6mDvJKpoZomJP7cKi0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dtpoU6/btqOcQhLfde/ZzEm6mDvJKpoZomJP7cKi0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdtpoU6%2FbtqOcQhLfde%2FZzEm6mDvJKpoZomJP7cKi0%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&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;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p class=&quot;p1&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p class=&quot;p1&quot;&gt;&lt;b&gt;[풀이]&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;대표적인 DFS, BFS로 풀 수 있는 문제이다. DFS가 더 익숙해서 DFS로 풀었다.&lt;/p&gt;
&lt;p&gt;주어진 2차원 배열을 DFS로 탐색하면서 1일 경우 단지수가 존재함(count)을 체크하면 된다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 31.0465%; height: 133px;&quot; border=&quot;1&quot;&gt;
&lt;tbody&gt;
&lt;tr style=&quot;height: 19px;&quot;&gt;
&lt;td style=&quot;width: 14.2857%; text-align: center; height: 19px;&quot;&gt;0&lt;/td&gt;
&lt;td style=&quot;width: 14.2857%; text-align: center; height: 19px;&quot;&gt;&lt;b&gt;&lt;span style=&quot;background-color: #f6e199;&quot;&gt;&amp;nbsp;1&amp;nbsp;&lt;/span&gt;&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 14.2857%; text-align: center; height: 19px;&quot;&gt;&lt;span style=&quot;background-color: #f6e199;&quot;&gt;&lt;b&gt;&amp;nbsp;1&amp;nbsp;&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 14.2857%; text-align: center; height: 19px;&quot;&gt;0&lt;/td&gt;
&lt;td style=&quot;width: 14.2857%; text-align: center; height: 19px;&quot;&gt;&lt;span style=&quot;background-color: #a6bc00;&quot;&gt;&lt;b&gt;&amp;nbsp;1&amp;nbsp;&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 14.2857%; text-align: center; height: 19px;&quot;&gt;0&lt;/td&gt;
&lt;td style=&quot;width: 14.2857%; text-align: center; height: 19px;&quot;&gt;0&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 19px;&quot;&gt;
&lt;td style=&quot;width: 14.2857%; text-align: center; height: 19px;&quot;&gt;0&lt;/td&gt;
&lt;td style=&quot;width: 14.2857%; text-align: center; height: 19px;&quot;&gt;&lt;span style=&quot;background-color: #f6e199;&quot;&gt;&lt;b&gt;&amp;nbsp;1&amp;nbsp;&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 14.2857%; text-align: center; height: 19px;&quot;&gt;&lt;span style=&quot;background-color: #f6e199;&quot;&gt;&lt;b&gt;&amp;nbsp;1&amp;nbsp;&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 14.2857%; text-align: center; height: 19px;&quot;&gt;0&lt;/td&gt;
&lt;td style=&quot;width: 14.2857%; text-align: center; height: 19px;&quot;&gt;&lt;span style=&quot;background-color: #a6bc00;&quot;&gt;&lt;b&gt;&amp;nbsp;1&amp;nbsp;&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 14.2857%; text-align: center; height: 19px;&quot;&gt;0&lt;/td&gt;
&lt;td style=&quot;width: 14.2857%; text-align: center; height: 19px;&quot;&gt;&lt;span style=&quot;background-color: #a6bc00;&quot;&gt;&lt;b&gt;&amp;nbsp;1&amp;nbsp;&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 19px;&quot;&gt;
&lt;td style=&quot;width: 14.2857%; text-align: center; height: 19px;&quot;&gt;&lt;span style=&quot;color: #333333; background-color: #f6e199;&quot;&gt;&lt;b&gt;&amp;nbsp;1&amp;nbsp;&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 14.2857%; text-align: center; height: 19px;&quot;&gt;&lt;span style=&quot;color: #333333; background-color: #f6e199;&quot;&gt;&lt;b&gt;&amp;nbsp;1&amp;nbsp;&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 14.2857%; text-align: center; height: 19px;&quot;&gt;&lt;span style=&quot;color: #333333; background-color: #f6e199;&quot;&gt;&lt;b&gt;&amp;nbsp;1&amp;nbsp;&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 14.2857%; text-align: center; height: 19px;&quot;&gt;0&lt;/td&gt;
&lt;td style=&quot;width: 14.2857%; text-align: center; height: 19px;&quot;&gt;&lt;span style=&quot;background-color: #a6bc00;&quot;&gt;&lt;b&gt;&amp;nbsp;1&amp;nbsp;&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 14.2857%; text-align: center; height: 19px;&quot;&gt;0&lt;/td&gt;
&lt;td style=&quot;width: 14.2857%; text-align: center; height: 19px;&quot;&gt;&lt;span style=&quot;background-color: #a6bc00;&quot;&gt;&lt;b&gt;&amp;nbsp;1&amp;nbsp;&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 19px;&quot;&gt;
&lt;td style=&quot;width: 14.2857%; text-align: center; height: 19px;&quot;&gt;0&lt;/td&gt;
&lt;td style=&quot;width: 14.2857%; text-align: center; height: 19px;&quot;&gt;0&lt;/td&gt;
&lt;td style=&quot;width: 14.2857%; text-align: center; height: 19px;&quot;&gt;0&lt;/td&gt;
&lt;td style=&quot;width: 14.2857%; text-align: center; height: 19px;&quot;&gt;0&lt;/td&gt;
&lt;td style=&quot;width: 14.2857%; text-align: center; height: 19px;&quot;&gt;&lt;span style=&quot;background-color: #a6bc00;&quot;&gt;&lt;b&gt;&amp;nbsp;1&amp;nbsp;&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 14.2857%; text-align: center; height: 19px;&quot;&gt;&lt;span style=&quot;background-color: #a6bc00;&quot;&gt;&lt;b&gt;&amp;nbsp;1&amp;nbsp;&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 14.2857%; text-align: center; height: 19px;&quot;&gt;&lt;span style=&quot;background-color: #a6bc00;&quot;&gt;&lt;b&gt;&amp;nbsp;1&amp;nbsp;&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 19px;&quot;&gt;
&lt;td style=&quot;width: 14.2857%; text-align: center; height: 19px;&quot;&gt;0&lt;/td&gt;
&lt;td style=&quot;width: 14.2857%; text-align: center; height: 19px;&quot;&gt;&lt;b&gt;&lt;span style=&quot;background-color: #c0d1e7;&quot;&gt;&amp;nbsp;1&amp;nbsp;&lt;/span&gt;&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 14.2857%; text-align: center; height: 19px;&quot;&gt;0&lt;/td&gt;
&lt;td style=&quot;width: 14.2857%; text-align: center; height: 19px;&quot;&gt;0&lt;/td&gt;
&lt;td style=&quot;width: 14.2857%; text-align: center; height: 19px;&quot;&gt;0&lt;/td&gt;
&lt;td style=&quot;width: 14.2857%; text-align: center; height: 19px;&quot;&gt;0&lt;/td&gt;
&lt;td style=&quot;width: 14.2857%; text-align: center; height: 19px;&quot;&gt;0&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 19px;&quot;&gt;
&lt;td style=&quot;width: 14.2857%; text-align: center; height: 19px;&quot;&gt;0&lt;/td&gt;
&lt;td style=&quot;width: 14.2857%; text-align: center; height: 19px;&quot;&gt;&lt;b&gt;&lt;span style=&quot;background-color: #c0d1e7;&quot;&gt;&amp;nbsp;1&amp;nbsp;&lt;/span&gt;&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 14.2857%; text-align: center; height: 19px;&quot;&gt;&lt;span style=&quot;background-color: #c0d1e7;&quot;&gt;&lt;b&gt;&amp;nbsp;1&amp;nbsp;&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 14.2857%; text-align: center; height: 19px;&quot;&gt;&lt;span style=&quot;background-color: #c0d1e7;&quot;&gt;&lt;b&gt;&amp;nbsp;1&amp;nbsp;&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 14.2857%; text-align: center; height: 19px;&quot;&gt;&lt;span style=&quot;background-color: #c0d1e7;&quot;&gt;&lt;b&gt;&amp;nbsp;1&amp;nbsp;&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 14.2857%; text-align: center; height: 19px;&quot;&gt;&lt;span style=&quot;background-color: #c0d1e7;&quot;&gt;&lt;b&gt;&amp;nbsp;1&amp;nbsp;&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 14.2857%; text-align: center; height: 19px;&quot;&gt;0&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 19px;&quot;&gt;
&lt;td style=&quot;width: 14.2857%; text-align: center; height: 19px;&quot;&gt;0&lt;/td&gt;
&lt;td style=&quot;width: 14.2857%; text-align: center; height: 19px;&quot;&gt;&lt;b&gt;&lt;span style=&quot;background-color: #c0d1e7;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;background-color: #c0d1e7;&quot;&gt;1&amp;nbsp;&lt;/span&gt;&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 14.2857%; text-align: center; height: 19px;&quot;&gt;&lt;b&gt;&lt;span style=&quot;background-color: #c0d1e7;&quot;&gt;&amp;nbsp;1&amp;nbsp;&lt;/span&gt;&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 14.2857%; text-align: center; height: 19px;&quot;&gt;&lt;b&gt;&lt;span style=&quot;background-color: #c0d1e7;&quot;&gt;&amp;nbsp;1&amp;nbsp;&lt;/span&gt;&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 14.2857%; text-align: center; height: 19px;&quot;&gt;0&lt;/td&gt;
&lt;td style=&quot;width: 14.2857%; text-align: center; height: 19px;&quot;&gt;0&lt;/td&gt;
&lt;td style=&quot;width: 14.2857%; text-align: center; height: 19px;&quot;&gt;0&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;좌표 [0, 0] 부터 상, 하, 좌, 우 순서로 탐색을 시작한다.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;좌표 [0, 0]은 0이므로 건너뛰고, 1인 [0, 1]에서 시작한다. (방문했으므로 visit 배열에 true 표시)&lt;/p&gt;
&lt;p&gt;배열의 범위를 벗어나면 안되므로 배열이 0보다 크고, N보다 작을 경우 그리고 아직 방문하지 않았을 경우에만 DFS를 돌린다.&lt;/p&gt;
&lt;p&gt;[0, 1] -&amp;gt; [1, 1] -&amp;gt; [2, 1] -&amp;gt; [2, 0] -&amp;gt; [2, 2] -&amp;gt; [1, 2] -&amp;gt; [0, 2] 순서로 재귀적으로 호출하며 깊게 타고 들어가면서 탐색을 진행한다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;count = 1이 끝났으면 count를 1 증가시켜서 [0, 4]부터 반복적으로 DFS를 다시 진행한다.&lt;/p&gt;
&lt;p&gt;탐색이 끝나고 난 뒤에는 아래와 같이 단지수가 기록된다.&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 31.6279%; height: 215px;&quot; border=&quot;1&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 14.2857%; text-align: center;&quot;&gt;0&lt;/td&gt;
&lt;td style=&quot;width: 14.2857%; text-align: center;&quot;&gt;&lt;b&gt;&lt;span style=&quot;background-color: #f6e199;&quot;&gt;&amp;nbsp;1&amp;nbsp;&lt;/span&gt;&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 14.2857%; text-align: center;&quot;&gt;&lt;span style=&quot;background-color: #f6e199;&quot;&gt;&lt;b&gt;&amp;nbsp;1&amp;nbsp;&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 14.2857%; text-align: center;&quot;&gt;0&lt;/td&gt;
&lt;td style=&quot;width: 14.2857%; text-align: center;&quot;&gt;&lt;span style=&quot;background-color: #a6bc00;&quot;&gt;&lt;b&gt;&amp;nbsp;2&amp;nbsp;&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 14.2857%; text-align: center;&quot;&gt;0&lt;/td&gt;
&lt;td style=&quot;width: 14.2857%; text-align: center;&quot;&gt;0&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 14.2857%; text-align: center;&quot;&gt;0&lt;/td&gt;
&lt;td style=&quot;width: 14.2857%; text-align: center;&quot;&gt;&lt;span style=&quot;background-color: #f6e199;&quot;&gt;&lt;b&gt;&amp;nbsp;1&amp;nbsp;&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 14.2857%; text-align: center;&quot;&gt;&lt;span style=&quot;background-color: #f6e199;&quot;&gt;&lt;b&gt;&amp;nbsp;1&amp;nbsp;&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 14.2857%; text-align: center;&quot;&gt;0&lt;/td&gt;
&lt;td style=&quot;width: 14.2857%; text-align: center;&quot;&gt;&lt;span style=&quot;background-color: #a6bc00;&quot;&gt;&lt;b&gt;&amp;nbsp;2&amp;nbsp;&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 14.2857%; text-align: center;&quot;&gt;0&lt;/td&gt;
&lt;td style=&quot;width: 14.2857%; text-align: center;&quot;&gt;&lt;span style=&quot;background-color: #a6bc00;&quot;&gt;&lt;b&gt;&amp;nbsp;2&amp;nbsp;&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 14.2857%; text-align: center;&quot;&gt;&lt;span style=&quot;color: #333333; background-color: #f6e199;&quot;&gt;&lt;b&gt;&amp;nbsp;1&amp;nbsp;&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 14.2857%; text-align: center;&quot;&gt;&lt;span style=&quot;color: #333333; background-color: #f6e199;&quot;&gt;&lt;b&gt;&amp;nbsp;1&amp;nbsp;&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 14.2857%; text-align: center;&quot;&gt;&lt;span style=&quot;color: #333333; background-color: #f6e199;&quot;&gt;&lt;b&gt;&amp;nbsp;1&amp;nbsp;&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 14.2857%; text-align: center;&quot;&gt;0&lt;/td&gt;
&lt;td style=&quot;width: 14.2857%; text-align: center;&quot;&gt;&lt;span style=&quot;background-color: #a6bc00;&quot;&gt;&lt;b&gt;&amp;nbsp;2&amp;nbsp;&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 14.2857%; text-align: center;&quot;&gt;0&lt;/td&gt;
&lt;td style=&quot;width: 14.2857%; text-align: center;&quot;&gt;&lt;span style=&quot;background-color: #a6bc00;&quot;&gt;&lt;b&gt;&amp;nbsp;2&amp;nbsp;&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 14.2857%; text-align: center;&quot;&gt;0&lt;/td&gt;
&lt;td style=&quot;width: 14.2857%; text-align: center;&quot;&gt;0&lt;/td&gt;
&lt;td style=&quot;width: 14.2857%; text-align: center;&quot;&gt;0&lt;/td&gt;
&lt;td style=&quot;width: 14.2857%; text-align: center;&quot;&gt;0&lt;/td&gt;
&lt;td style=&quot;width: 14.2857%; text-align: center;&quot;&gt;&lt;span style=&quot;background-color: #a6bc00;&quot;&gt;&lt;b&gt;&amp;nbsp;2&amp;nbsp;&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 14.2857%; text-align: center;&quot;&gt;&lt;span style=&quot;background-color: #a6bc00;&quot;&gt;&lt;b&gt;&amp;nbsp;2&amp;nbsp;&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 14.2857%; text-align: center;&quot;&gt;&lt;span style=&quot;background-color: #a6bc00;&quot;&gt;&lt;b&gt;&amp;nbsp;2&amp;nbsp;&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 14.2857%; text-align: center;&quot;&gt;0&lt;/td&gt;
&lt;td style=&quot;width: 14.2857%; text-align: center;&quot;&gt;&lt;b&gt;&lt;span style=&quot;background-color: #c0d1e7;&quot;&gt;&amp;nbsp;1&amp;nbsp;&lt;/span&gt;&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 14.2857%; text-align: center;&quot;&gt;0&lt;/td&gt;
&lt;td style=&quot;width: 14.2857%; text-align: center;&quot;&gt;0&lt;/td&gt;
&lt;td style=&quot;width: 14.2857%; text-align: center;&quot;&gt;0&lt;/td&gt;
&lt;td style=&quot;width: 14.2857%; text-align: center;&quot;&gt;0&lt;/td&gt;
&lt;td style=&quot;width: 14.2857%; text-align: center;&quot;&gt;0&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 14.2857%; text-align: center;&quot;&gt;0&lt;/td&gt;
&lt;td style=&quot;width: 14.2857%; text-align: center;&quot;&gt;&lt;b&gt;&lt;span style=&quot;background-color: #c0d1e7;&quot;&gt;&amp;nbsp;1&amp;nbsp;&lt;/span&gt;&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 14.2857%; text-align: center;&quot;&gt;&lt;span style=&quot;background-color: #c0d1e7;&quot;&gt;&lt;b&gt;&amp;nbsp;1&amp;nbsp;&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 14.2857%; text-align: center;&quot;&gt;&lt;span style=&quot;background-color: #c0d1e7;&quot;&gt;&lt;b&gt;&amp;nbsp;1&amp;nbsp;&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 14.2857%; text-align: center;&quot;&gt;&lt;span style=&quot;background-color: #c0d1e7;&quot;&gt;&lt;b&gt;&amp;nbsp;1&amp;nbsp;&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 14.2857%; text-align: center;&quot;&gt;&lt;span style=&quot;background-color: #c0d1e7;&quot;&gt;&lt;b&gt;&amp;nbsp;1&amp;nbsp;&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 14.2857%; text-align: center;&quot;&gt;0&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 14.2857%; text-align: center;&quot;&gt;0&lt;/td&gt;
&lt;td style=&quot;width: 14.2857%; text-align: center;&quot;&gt;&lt;b&gt;&lt;span style=&quot;background-color: #c0d1e7;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;background-color: #c0d1e7;&quot;&gt;1&amp;nbsp;&lt;/span&gt;&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 14.2857%; text-align: center;&quot;&gt;&lt;b&gt;&lt;span style=&quot;background-color: #c0d1e7;&quot;&gt;&amp;nbsp;1&amp;nbsp;&lt;/span&gt;&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 14.2857%; text-align: center;&quot;&gt;&lt;b&gt;&lt;span style=&quot;background-color: #c0d1e7;&quot;&gt;&amp;nbsp;1&amp;nbsp;&lt;/span&gt;&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 14.2857%; text-align: center;&quot;&gt;0&lt;/td&gt;
&lt;td style=&quot;width: 14.2857%; text-align: center;&quot;&gt;0&lt;/td&gt;
&lt;td style=&quot;width: 14.2857%; text-align: center;&quot;&gt;0&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;이와 같이 반복해준 후, 최종적인 단지의 갯수와 오름차순으로 정렬한 단지 내의 집의 수를 출력해주면 되는 문제이다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;[코드]&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1606224389462&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;package algorithm.Baekjoon;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;

public class BOJ_2667 {
    static int map[][];
    static boolean visit[][]; // 방문 여부
    static int N; // 지도 최대 크기
    static int count = 1; // 총 단지 수
    static int x[] = {-1, 1, 0, 0}; // row
    static int y[] = {0, 0, -1, 1}; // col

    public static void dfs(int i, int j) {
        map[i][j] = count; // 방문한 집 표시
        visit[i][j] = true;

        // 상하좌우로 이동하며 탐색
        for(int k=0; k&amp;lt;x.length; k++) {
            int ix = i + x[k];
            int jy = j + y[k];

            // 배열의 범위를 벗어나지 않는 범위 내에서 탐색
            if(ix &amp;gt;= 0 &amp;amp;&amp;amp; ix &amp;lt; N &amp;amp;&amp;amp; jy &amp;gt;= 0 &amp;amp;&amp;amp; jy &amp;lt; N) {
                if(map[ix][jy] == 1 &amp;amp;&amp;amp; !visit[ix][jy]) { // 집이 있으면서 방문하지 않은 곳
                    dfs(ix, jy); // 연결 되어있는 단지 탐색
                }
            }
        }
    }

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

        map = new int[N][N];
        for(int i=0; i&amp;lt;N; i++) {
            String[] input = br.readLine().split(&quot;&quot;);
            for(int j=0; j&amp;lt;N; j++) {
                map[i][j] = Integer.parseInt(input[j]);
            }
        }
        /*
        for(int i=0; i&amp;lt;N; i++) {
            String input = scan.next();
            for(int j=0; j&amp;lt;N; j++) {
                map[i][j] = input.charAt(j)-'0';
            }
        }
        */

        visit = new boolean[N][N];
        for(int i=0; i&amp;lt;N; i++) {
            for(int j=0; j&amp;lt;N; j++) {
                if(map[i][j] == 1 &amp;amp;&amp;amp; !visit[i][j]) { // 집이 있으면서 방문하지 않은 곳
                    dfs(i, j); // 연결 되어있는 단지 탐색
                    count++; // 다음 단지 수로 이동
                }
            }
        }

        // 총 단지 수
        System.out.println(count-1);
        // 단지 내 집의 수
        int result[] = new int[count];
        for(int i=0; i&amp;lt;N; i++) {
            for(int j=0; j&amp;lt;N; j++) {
                if(map[i][j] != 0)
                    result[map[i][j]]++;
            }
        }
        // 단지수를 오름차순으로 정렬하여 출력
        Arrays.sort(result);
        for(int i=1; i&amp;lt;result.length; i++) {
            System.out.println(result[i]);
        }
    }
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>CS/Baekjoon</category>
      <author>칸타탓</author>
      <guid isPermaLink="true">https://developmentnotepad.tistory.com/329</guid>
      <comments>https://developmentnotepad.tistory.com/entry/BOJ#entry329comment</comments>
      <pubDate>Tue, 24 Nov 2020 22:08:30 +0900</pubDate>
    </item>
    <item>
      <title>[Algorithm] 그래프(Graph)</title>
      <link>https://developmentnotepad.tistory.com/entry/Algorithm</link>
      <description>&lt;h3 id=&quot;%ED%94%84%EB%A1%9C%ED%8D%BC%ED%8B%B0property&quot; class=&quot;mume-header&quot; style=&quot;padding: 7px 10px 5px; margin: 1em 0px 16px; border-left: 5px solid #666666; background-color: #fafafa; color: #333333; line-height: 1.2;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-size: 24px; color: #000000;&quot;&gt;그래프 (Graph)&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p&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;ul style=&quot;list-style-type: circle;&quot; data-ke-list-type=&quot;circle&quot;&gt;
&lt;li&gt;노드와 노드를 연결하는 간선으로 구성된 자료구조이다.&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #333333;&quot;&gt;그래프의 순회는 DFS 혹은 BFS로 이루어진다.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #333333;&quot;&gt;노드 사이에 양방향 경로를 가질 수 있으므로, 2개 이상의 경로가 가능하다.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #333333;&quot;&gt;루트 노드, 부모-자식 관계가 존재하지 않는다.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #333333;&quot;&gt;아래와 같이 방향이 존재할 수도 있고, 존재하지 않을 수도 있다.&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cpufQZ/btqNthgiQp9/6JFP5VlNUuRGzwNohdccr0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cpufQZ/btqNthgiQp9/6JFP5VlNUuRGzwNohdccr0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cpufQZ/btqNthgiQp9/6JFP5VlNUuRGzwNohdccr0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcpufQZ%2FbtqNthgiQp9%2F6JFP5VlNUuRGzwNohdccr0%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&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;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&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;ul style=&quot;list-style-type: circle;&quot; data-ke-list-type=&quot;circle&quot;&gt;
&lt;li&gt;&lt;span style=&quot;letter-spacing: 0px;&quot;&gt;정점(vertex, node): 위치의 개념&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;간선(edge): 위치 간의 관계, 노드를 연결하는 선 (link, branch)&lt;/li&gt;
&lt;li&gt;인접 정점(adjacent vertex): 간선에 의해 직접 연결된 정점&lt;/li&gt;
&lt;li&gt;경로(path): 어느 한 정점에서 다른 정점 까지의 경로&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;letter-spacing: 0px;&quot;&gt;싸이클(cycle): 단순 경로의 시작 정점과 종료 정점이 동일한 경우&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;단순 경로(Simple Path): 경로 중에서 반복되는 정점이 없는 경우&lt;/li&gt;
&lt;li&gt;&lt;span&gt;정점의 차수(degree): 무방향 그래프에서 하나의 정점에 인접한 정점의 수&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;진입 차수(in-degree): 유방향 그래프에서 외부에서 오는 간선의 수&lt;/li&gt;
&lt;li&gt;진출 차수(out-degree): 유방향 그래프에서 외부로 향하는 간선의 수&lt;/li&gt;
&lt;/ul&gt;
&lt;p&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;ul style=&quot;list-style-type: circle;&quot; data-ke-list-type=&quot;circle&quot;&gt;
&lt;li&gt;&lt;span&gt;무방향 그래프(Undirected Graph)&lt;/span&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span&gt;간선에 방향성이 없는 그래프&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;간선을 통해 양방향으로 갈 수 있다.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;A &amp;lt;-&amp;gt; B 이므로 (A, B), (B, A)는 동일하다.&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;유방향 그래프(Directed Graph)
&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;A -&amp;gt; B, B -&amp;gt; A가 각각 존재하므로 (A, B), (B, A)는 다르다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;비순환 그래프(Acyclic Graph)
&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;/li&gt;
&lt;li&gt;연결 그래프
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;무방향 그래프에 있는 모든 정점 쌍에 대해 항상 경로가 존재하는 경우&lt;/li&gt;
&lt;li&gt;트리는 사이클을 가지지 않는 연결 그래프이다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;비연결 그래프
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;무방향 그래프에서 특정 정점 쌍 사이에 경로가 존재하지 않는 경우&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;완전 그래프
&lt;ul style=&quot;list-style-type: disc;&quot;&gt;
&lt;li&gt;그래프에 속해있는 모든 정점이 서로 연결되어 있는 그래프&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&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&gt;&lt;span style=&quot;background-color: #f6e199;&quot;&gt;&lt;b&gt;1. 인접 행렬 (adjacency&amp;nbsp;matrix)&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; width=&quot;421&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/9R4UU/btqNx8Xa0wJ/ce5RK5EQNjljjccKsq7uzk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/9R4UU/btqNx8Xa0wJ/ce5RK5EQNjljjccKsq7uzk/img.png&quot; data-alt=&quot;무방향&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/9R4UU/btqNx8Xa0wJ/ce5RK5EQNjljjccKsq7uzk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F9R4UU%2FbtqNx8Xa0wJ%2Fce5RK5EQNjljjccKsq7uzk%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; width=&quot;421&quot; data-ke-mobilestyle=&quot;widthContent&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;/&gt;&lt;/span&gt;&lt;figcaption&gt;무방향&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; width=&quot;417&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/elJgmC/btqNpGO8gPU/DtOQjXcVT35K3V7Ewt3GX0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/elJgmC/btqNpGO8gPU/DtOQjXcVT35K3V7Ewt3GX0/img.png&quot; data-alt=&quot;방향&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/elJgmC/btqNpGO8gPU/DtOQjXcVT35K3V7Ewt3GX0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FelJgmC%2FbtqNpGO8gPU%2FDtOQjXcVT35K3V7Ewt3GX0%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; width=&quot;417&quot; data-ke-mobilestyle=&quot;widthContent&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;/&gt;&lt;/span&gt;&lt;figcaption&gt;방향&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;ul style=&quot;list-style-type: circle;&quot; data-ke-list-type=&quot;circle&quot;&gt;
&lt;li&gt;&lt;span style=&quot;letter-spacing: 0px;&quot;&gt;인접 행렬은 그래프의 연결관계를 NxN의 boolean 행렬로 나타내는 방식으로 &lt;/span&gt;&lt;b&gt;&lt;span style=&quot;letter-spacing: 0px;&quot;&gt;이차원 배열&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;letter-spacing: 0px;&quot;&gt;을 사용한다.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;letter-spacing: 0px;&quot;&gt;adj[i][j]와 같이 정점 i에서 정점 j로 가는 간선이 있다면 1, 없다면 0으로 표시한다.&lt;/span&gt;&lt;span style=&quot;letter-spacing: 0px;&quot;&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;background-color: #f6e199;&quot;&gt;&lt;b&gt;2. 인접 리스트(adjacency list)&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; width=&quot;624&quot; height=&quot;NaN&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bMhaiL/btqNqZNWjIx/bWym5VEBAMkWms82OcQm5k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bMhaiL/btqNqZNWjIx/bWym5VEBAMkWms82OcQm5k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bMhaiL/btqNqZNWjIx/bWym5VEBAMkWms82OcQm5k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbMhaiL%2FbtqNqZNWjIx%2FbWym5VEBAMkWms82OcQm5k%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; width=&quot;624&quot; height=&quot;NaN&quot; data-ke-mobilestyle=&quot;widthContent&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;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; width=&quot;521&quot; height=&quot;NaN&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/NUGBX/btqNthHn74X/ezi31eeTSKCDII5JKNikO0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/NUGBX/btqNthHn74X/ezi31eeTSKCDII5JKNikO0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/NUGBX/btqNthHn74X/ezi31eeTSKCDII5JKNikO0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FNUGBX%2FbtqNthHn74X%2Fezi31eeTSKCDII5JKNikO0%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; width=&quot;521&quot; height=&quot;NaN&quot; data-ke-mobilestyle=&quot;widthContent&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;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;ul style=&quot;list-style-type: circle;&quot; data-ke-list-type=&quot;circle&quot;&gt;
&lt;li&gt;그래프를 표현하는 가장 일반적인 방법이다.&lt;/li&gt;
&lt;li&gt;모든 정점을 인접 리스트에 저장하는데, 이에는 &lt;b&gt;ArrayList나 LinkedList를 사용&lt;/b&gt;한다.&lt;/li&gt;
&lt;li&gt;정점의 번호를 알고있다면 이 번호를 배열의 인덱스로 하여 각 정점의 리스트에 쉽게 접근할 수 있다.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;p&gt;&lt;span style=&quot;color: #9d9d9d;&quot;&gt;[참고한 곳]&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #9d9d9d;&quot;&gt;&lt;a style=&quot;color: #9d9d9d;&quot; href=&quot;https://kingpodo.tistory.com/46&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;kingpodo.tistory.com/46&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #9d9d9d;&quot;&gt;&lt;a style=&quot;color: #9d9d9d;&quot; href=&quot;https://gmlwjd9405.github.io/2018/08/13/data-structure-graph.html&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;gmlwjd9405.github.io/2018/08/13/data-structure-graph.html&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>CS/Algorithm</category>
      <author>칸타탓</author>
      <guid isPermaLink="true">https://developmentnotepad.tistory.com/328</guid>
      <comments>https://developmentnotepad.tistory.com/entry/Algorithm#entry328comment</comments>
      <pubDate>Sun, 15 Nov 2020 01:38:38 +0900</pubDate>
    </item>
    <item>
      <title>[Algorithm/Java] Iterator, ListIterator</title>
      <link>https://developmentnotepad.tistory.com/entry/AlgorithmJava-Iterator-ListIterator</link>
      <description>&lt;h3 id=&quot;%ED%94%84%EB%A1%9C%ED%8D%BC%ED%8B%B0property&quot; class=&quot;mume-header&quot; style=&quot;padding: 7px 10px 5px; margin: 1em 0px 16px; border-left: 5px solid #666666; background-color: #fafafa; color: #333333; line-height: 1.2;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-size: 24px; color: #000000;&quot;&gt;Java의 Iterator, &lt;span style=&quot;color: #333333;&quot;&gt;ListIterator&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;&lt;span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;* Iterator&amp;lt;E&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/h4&gt;
&lt;p&gt;&lt;span&gt;컬렉션 프레임워크에서 저장된 요소를 읽어오는 방법을 표준화하기 위해 사용한다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;Collection 인터페이스에서는 Iterator 인터페이스를 구현한 클래스의 인스턴스를 반환하는 iterator() 메소드를 정의하여 각 요소에 접근하도록 하고 있다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;Collection 인터페이스를 상속받는 List와 Set 인터페이스 또한 iterator() 메소드를 사용할 수 있습니다. (Map 제외)&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;&lt;span&gt;- List 데이터를 반복하는 방법&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;1. &lt;/span&gt;&lt;span&gt;for( int i =0; i&amp;lt;list.length; i++) { ... &lt;/span&gt;}&lt;/p&gt;
&lt;p&gt;&lt;span&gt;2. &lt;span&gt;for( String str : list ) { ... }&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;3.&amp;nbsp;&lt;/span&gt;&lt;span&gt;&lt;span&gt;Iterator&amp;lt;String&amp;gt; iter = list.iterator();&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp; &amp;nbsp; while(iter.hasNext()) { &lt;/span&gt;&lt;/span&gt;System.out.println(iter.next()); }&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;- Map 자료구조에서 사용하기&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1605358920996&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;Set&amp;lt;String&amp;gt; keys = map.keySet(); // Map의 Key를 가져온다
Iterator&amp;lt;String&amp;gt; iter = keys.iterator(); // Set 자료구조를 통해 사용
while(iter.hasNext()) {
    String key = iter.next();
    System.out.printf(key, map.get(key));
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;- 관련 메서드&lt;/b&gt;&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 91.0465%; height: 150px;&quot; border=&quot;1&quot; data-ke-style=&quot;style4&quot;&gt;
&lt;tbody&gt;
&lt;tr style=&quot;height: 30px;&quot;&gt;
&lt;td style=&quot;width: 50%; text-align: center; height: 30px;&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #333333;&quot;&gt;hasNext()&lt;/span&gt;&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 50%; text-align: center; height: 30px;&quot;&gt;&lt;span&gt;iteration이&amp;nbsp;&lt;/span&gt;다음 요소를 가지고 있는지 boolean 형태로 반환&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 31px;&quot;&gt;
&lt;td style=&quot;width: 50%; text-align: center; height: 31px;&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #333333;&quot;&gt;next()&lt;/span&gt;&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 50%; text-align: center; height: 31px;&quot;&gt;&lt;span&gt;iteration의&amp;nbsp;&lt;/span&gt;다음 요소를 반환&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 31px;&quot;&gt;
&lt;td style=&quot;width: 50%; text-align: center; height: 31px;&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #333333;&quot;&gt;remove()&lt;/span&gt;&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 50%; text-align: center; height: 31px;&quot;&gt;&lt;span&gt;해당 반복자로 반환되는 마지막 요소를 현재 컬렉션에서 제거&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;* ListIterator&amp;lt;E&amp;gt;&lt;/b&gt;&lt;/h4&gt;
&lt;p&gt;&lt;span&gt;Iterator 인터페이스를 상속받아 여러 기능을 추가한 인터페이스이다.&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;Iterator 인터페이스는 컬렉션의 요소에 접근할 때 한 방향으로만 이동할 수 있다.&lt;/p&gt;
&lt;p&gt;ListIterator 인터페이스는 &lt;b&gt;컬렉션 요소의 대체, 추가, 인덱스 검색 등을 위한 작업에서 양방향으로 이동하는 것을 지원&lt;/b&gt;한다.&lt;/p&gt;
&lt;p&gt;단, &lt;b&gt;List 인터페이스를 구현한 List 컬렉션 클래스에서만 listIterator() 메소드를 통해 사용&lt;/b&gt;할 수 있다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;- 순방향 및 역방향 출력&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1605359950536&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;LinkedList&amp;lt;Integer&amp;gt; lnkList = new LinkedList&amp;lt;Integer&amp;gt;();
lnkList.add(4);
lnkList.add(2);
lnkList.add(3);
lnkList.add(1);

ListIterator&amp;lt;Integer&amp;gt; iter = lnkList.listIterator();
while (iter.hasNext()) { // 순방향
    System.out.print(iter.next() + &quot; &quot;);
}

while (iter.hasPrevious()) { // 역방향
    System.out.print(iter.previous() + &quot; &quot;);
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;- 관련 메서드&lt;/b&gt;&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 97.8972%; height: 496px;&quot; border=&quot;1&quot;&gt;
&lt;tbody&gt;
&lt;tr style=&quot;height: 19px;&quot;&gt;
&lt;td style=&quot;height: 19px; width: 49.9405%;&quot;&gt;void add(E e)&lt;/td&gt;
&lt;td style=&quot;height: 19px; width: 49.9405%;&quot;&gt;해당 리스트에 전달된 요소를 추가&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 57px;&quot;&gt;
&lt;td style=&quot;height: 57px; width: 49.9405%;&quot;&gt;boolean hasNext()&lt;/td&gt;
&lt;td style=&quot;height: 57px; width: 49.9405%;&quot;&gt;해당 리스트를 &lt;b&gt;순방향&lt;/b&gt;으로 순회할 때 다음 요소를 가지고 있으면 true 반환, 더 이상 다음 요소를 가지고 있지 않으면 false 반환&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 57px;&quot;&gt;
&lt;td style=&quot;height: 57px; width: 49.9405%;&quot;&gt;boolean hasPrevious()&lt;/td&gt;
&lt;td style=&quot;height: 57px; width: 49.9405%;&quot;&gt;해당 리스트를 &lt;b&gt;역방향&lt;/b&gt;으로 순회할 때 다음 요소를 가지고 있으면 true 반환, 더 이상 다음 요소를 가지고 있지 않으면 false 반환&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 38px;&quot;&gt;
&lt;td style=&quot;height: 38px; width: 49.9405%;&quot;&gt;E next()&lt;/td&gt;
&lt;td style=&quot;height: 38px; width: 49.9405%;&quot;&gt;리스트의 다음 요소를 반환하고, 커서의 위치를 순방향으로 이동&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 19px;&quot;&gt;
&lt;td style=&quot;height: 19px; width: 49.9405%;&quot;&gt;int nextIndex()&lt;/td&gt;
&lt;td style=&quot;height: 19px; width: 49.9405%;&quot;&gt;다음 next() 메소드를 호출하면 반환될 요소의 인덱스 반환&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 38px;&quot;&gt;
&lt;td style=&quot;height: 38px; width: 49.9405%;&quot;&gt;E previous()&lt;/td&gt;
&lt;td style=&quot;height: 38px; width: 49.9405%;&quot;&gt;리스트의 이전 요소를 반환하고, 커서의 위치를 역방향으로 이동&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 19px;&quot;&gt;
&lt;td style=&quot;height: 19px; width: 49.9405%;&quot;&gt;int previousIndex()&lt;/td&gt;
&lt;td style=&quot;height: 19px; width: 49.9405%;&quot;&gt;다음 previous() 메소드를 호출하면 반환될 요소의 인덱스 반환&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 38px;&quot;&gt;
&lt;td style=&quot;height: 38px; width: 49.9405%;&quot;&gt;void remove()&lt;/td&gt;
&lt;td style=&quot;height: 38px; width: 49.9405%;&quot;&gt;next()나 previous() 메소드에 의해 반환된 가장 마지막 요소를 리스트에서 제거&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 38px;&quot;&gt;
&lt;td style=&quot;height: 38px; width: 49.9405%;&quot;&gt;void set(E e)&lt;/td&gt;
&lt;td style=&quot;height: 38px; width: 49.9405%;&quot;&gt;next()나 previous() 메소드에 의해 반환된 가장 마지막 요소를 전달된 객체로 대체&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>CS/Algorithm</category>
      <author>칸타탓</author>
      <guid isPermaLink="true">https://developmentnotepad.tistory.com/327</guid>
      <comments>https://developmentnotepad.tistory.com/entry/AlgorithmJava-Iterator-ListIterator#entry327comment</comments>
      <pubDate>Sat, 14 Nov 2020 22:19:21 +0900</pubDate>
    </item>
    <item>
      <title>[Algorithm/Java] LinkedList 자료구조</title>
      <link>https://developmentnotepad.tistory.com/entry/Algorithm-LinkedList-%EC%9E%90%EB%A3%8C%EA%B5%AC%EC%A1%B0</link>
      <description>&lt;h3 id=&quot;%ED%94%84%EB%A1%9C%ED%8D%BC%ED%8B%B0property&quot; class=&quot;mume-header&quot; style=&quot;padding: 7px 10px 5px; margin: 1em 0px 16px; border-left: 5px solid #666666; background-color: #fafafa; color: #333333; line-height: 1.2;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-size: 24px; color: #000000;&quot;&gt;LinkedList 자료구조&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;DFS(깊이 우선 탐색) 구현 시에 LinkedList를 사용한다.&lt;/p&gt;
&lt;p&gt;&lt;span&gt;각 노드가 데이터와 포인터를 가지고 한 줄로 연결되어 있는 방식의 자료구조이다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span&gt;객체를 추가하거나 삭제하면 앞, 뒤 링크만 변경되고 나머지 링크는 변경되지 않는다.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/tfDqf/btqNthfEMAT/U4Bxz0nkZcC3hFZcUE5NQ1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/tfDqf/btqNthfEMAT/U4Bxz0nkZcC3hFZcUE5NQ1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/tfDqf/btqNthfEMAT/U4Bxz0nkZcC3hFZcUE5NQ1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FtfDqf%2FbtqNthfEMAT%2FU4Bxz0nkZcC3hFZcUE5NQ1%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&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;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;데이터 추가나 삭제 시 인덱스가 밀리거나 당겨지는 일이 없기에 ArrayList에 비해 추가, 삭제가 용이하다.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;(1) 선언 방법&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;LinkedList list =&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;new&lt;/span&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;LinkedList();&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;LinkedList&amp;lt;Student&amp;gt; student =&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;new&lt;/span&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;LinkedList&amp;lt;Student&amp;gt;(); // 타입 지정&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;LinkedList&amp;lt;Student&amp;gt; members =&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;new&lt;/span&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;LinkedList&amp;lt;Student&amp;gt;(); // 타입 지정&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;(2) 값 추가하기&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;list.addFirst(&lt;/span&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;);&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;// 가장 앞에 데이터 추가&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;list.addLast(&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;);&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;// 가장 마지막에 데이터 추가&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;list.add(&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;);&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;// 가장 마지막에 데이터 추가&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;list.add(&lt;/span&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;,&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;10&lt;/span&gt;&lt;span&gt;);&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;// index 1 뒤에 데이터 10 추가&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;(3) 값 삭제하기&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;list.removeFirst();&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;// 가장 앞의 데이터 제거&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;list.removeLast();&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;// 가장 마지막 데이터 제거&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;list.remove(&lt;/span&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;);&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;// index 1 제거,&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;생략시 index 0 제거&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;list.clear();&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;// 모든 값 제거&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;(4) 크기 구하기&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;list.size();&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;(5) 값 검색하기&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;System.out.println(list.contains(&lt;/span&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;));&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;// list에 1이 있는지 Boolean 값 반환&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;System.out.println(list.indexOf(&lt;/span&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;));&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;// 1이 있다면 해당하는 index 반환, 없다면 -1 반환&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>CS/Algorithm</category>
      <author>칸타탓</author>
      <guid isPermaLink="true">https://developmentnotepad.tistory.com/326</guid>
      <comments>https://developmentnotepad.tistory.com/entry/Algorithm-LinkedList-%EC%9E%90%EB%A3%8C%EA%B5%AC%EC%A1%B0#entry326comment</comments>
      <pubDate>Sat, 14 Nov 2020 21:42:04 +0900</pubDate>
    </item>
    <item>
      <title>[Algorithm] BFS, 너비 우선 탐색</title>
      <link>https://developmentnotepad.tistory.com/entry/Algorithm-BFS-%EB%84%88%EB%B9%84-%EC%9A%B0%EC%84%A0-%ED%83%90%EC%83%89</link>
      <description>&lt;h3 id=&quot;%ED%94%84%EB%A1%9C%ED%8D%BC%ED%8B%B0property&quot; style=&quot;padding: 7px 10px 5px; margin: 1em 0px 16px; border-left: 5px solid #666666; background-color: #fafafa; color: #333333; line-height: 1.2;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-size: 24px; color: #000000;&quot;&gt;BFS, 너비 우선 탐색&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;b&gt;* 너비 우선 탐색&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;임의의 루트 노드에서 시작해서 인접한 노드를 먼저 탐색하는 방법이다.&lt;/p&gt;
&lt;p&gt;임의의 루트 노드로부터 가장 가까운 노드를 먼저 탐색하고, 멀리 있는 것을 가장 나중에 탐색한다.&lt;/p&gt;
&lt;p&gt;어떤 노드를 탐색했는 지를 반드시 기록해야 하며, 일반적으로&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;큐를 사용해 선입선출을 원칙으로 탐색&lt;/b&gt;한다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;1) 깊이가 1인 노드, 2인 노드, 3인 노드... 를 반복하며 탐색하고, 방문한 노드는 큐에 기록한다.&lt;/p&gt;
&lt;p&gt;2) 큐에 들어있는 노드를 하나씩 꺼내고 인접해 있는 노드를 차례로 방문한다.&lt;/p&gt;
&lt;p&gt;3) 큐에 있는 노드가 없어질 때까지 반복한다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;b&gt;* 적용 예시&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: circle;&quot; data-ke-list-type=&quot;circle&quot;&gt;
&lt;li&gt;두 노드 사이의 최단 경로를 알고싶을 때&lt;/li&gt;
&lt;li&gt;임의의 경로를 찾고자 할 때&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;b&gt;* 탐색 과정&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/RHeKK/btqNqBTqmj2/c2agKkQpy1UjFkEFz6nBfk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/RHeKK/btqNqBTqmj2/c2agKkQpy1UjFkEFz6nBfk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/RHeKK/btqNqBTqmj2/c2agKkQpy1UjFkEFz6nBfk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FRHeKK%2FbtqNqBTqmj2%2Fc2agKkQpy1UjFkEFz6nBfk%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&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;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr style=&quot;margin: 20px auto 0px; border: none; cursor: pointer !important; z-index: 1; font-size: 0px; line-height: 0; background: url('../image/divider-line.svg') center -256px / 200px 420px repeat-x; height: 2px; padding: 21px 0px; color: #333333; font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration-style: initial; text-decoration-color: initial;&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;p&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;b&gt;- 연습 문제&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;a href=&quot;https://www.acmicpc.net/problem/1260&quot;&gt;www.acmicpc.net/problem/1260&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;a href=&quot;https://programmers.co.kr/learn/courses/30/lessons/43162&quot;&gt;programmers.co.kr/learn/courses/30/lessons/43162&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr style=&quot;margin: 20px auto 0px; border: none; cursor: pointer !important; z-index: 1; font-size: 0px; line-height: 0; background: url('../image/divider-line.svg') center -256px / 200px 420px repeat-x; height: 2px; padding: 21px 0px; color: #333333; font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration-style: initial; text-decoration-color: initial;&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;p&gt;&lt;span style=&quot;color: #9d9d9d; font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;[참고한 곳]&amp;nbsp;&lt;a style=&quot;color: #9d9d9d;&quot; href=&quot;https://gmlwjd9405.github.io/2018/08/14/algorithm-dfs.html&quot;&gt;gmlwjd9405.github.io/2018/08/14/algorithm-dfs.html&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;</description>
      <category>CS/Algorithm</category>
      <author>칸타탓</author>
      <guid isPermaLink="true">https://developmentnotepad.tistory.com/325</guid>
      <comments>https://developmentnotepad.tistory.com/entry/Algorithm-BFS-%EB%84%88%EB%B9%84-%EC%9A%B0%EC%84%A0-%ED%83%90%EC%83%89#entry325comment</comments>
      <pubDate>Sat, 14 Nov 2020 21:07:39 +0900</pubDate>
    </item>
    <item>
      <title>[CS] 파이썬으로 시작하는 데이터 사이언스 (5)</title>
      <link>https://developmentnotepad.tistory.com/entry/CS-%ED%8C%8C%EC%9D%B4%EC%8D%AC%EC%9C%BC%EB%A1%9C-%EC%8B%9C%EC%9E%91%ED%95%98%EB%8A%94-%EB%8D%B0%EC%9D%B4%ED%84%B0-%EC%82%AC%EC%9D%B4%EC%96%B8%EC%8A%A4-5</link>
      <description>&lt;h3 id=&quot;%ED%94%84%EB%A1%9C%ED%8D%BC%ED%8B%B0property&quot; class=&quot;mume-header&quot; style=&quot;padding: 7px 10px 5px; margin: 1em 0px 16px; border-left: 5px solid #666666; background-color: #fafafa; color: #333333; line-height: 1.2;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-size: 24px; color: #000000;&quot;&gt;10 minutes to pandas (판다스 실습)&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;참고 : &lt;a href=&quot;https://pandas.pydata.org/pandas-docs/version/1.0.0/getting_started/10min.html&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;pandas.pydata.org/pandas-docs/version/1.0.0/getting_started/10min.html&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;- numpy, pandas 사용하기&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&amp;gt; &lt;span&gt;import&lt;/span&gt; &lt;span&gt;numpy&lt;/span&gt; &lt;span&gt;as&lt;/span&gt; &lt;span&gt;np&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;gt; &lt;span&gt;import&lt;/span&gt; &lt;span&gt;pandas&lt;/span&gt; &lt;span&gt;as&lt;/span&gt; &lt;span&gt;pd&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;numpy : &lt;span&gt;행렬이나 대규모 다차원 배열을 쉽게 처리 할 수 있도록 지원하는 파이썬 라이브러리&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;&lt;span&gt;&lt;span&gt;- Object 생성하기&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span&gt;(1) Series 만들기&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1604935818646&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;s = pd.Series([1, 3, 5, np.nan, 6, 8])

0    1.0
1    3.0
2    5.0
3    NaN
4    6.0
5    8.0
dtype: float64&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;(2) DataFrame 만들기&lt;/p&gt;
&lt;pre id=&quot;code_1604935896680&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;dates = pd.date_range('20201110', periods=6)

# 6개의 날짜 정보가 들어간다
DatetimeIndex(['2020-11-10', '2020-11-11', '2020-11-12', '2020-11-13',
'2020-11-14', '2020-11-15'], dtype='datetime64[ns]', freq='D')&lt;/code&gt;&lt;/pre&gt;
&lt;pre id=&quot;code_1604936413882&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# 여러 타입의 데이터가 들아갈 수 있다.
df2 = pd.DataFrame({'A': 1.,
		'B': pd.Timestamp('20201110'),
		'C': pd.Series(1, index=list(range(4)), dtype='float32'),
		'D': np.array([3] * 4, dtype='int32'),
		'E': pd.Categorical([&quot;test&quot;, &quot;train&quot;, &quot;test&quot;, &quot;train&quot;]),
		'F': 'foo'})

	A	B		C	D	E	F
0	1.0	2020-11-10	1.0	3	test	foo
1	1.0	2020-11-10	1.0	3	train	foo
2	1.0	2020-11-10	1.0	3	test	foo
3	1.0	2020-11-10	1.0	3	train	foo

# df2.dtypes을 통해 데이터 타입 조회 가능
A           float64
B    datetime64[ns]
C           float32
D             int32
E          category
F            object&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;- Data 조회하기&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1604936824188&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# 지정하지 않으면 모든 데이터 출력
df2.head()
# 하위 3개의 데이터
df2.tail(3)

# index 조회하기
df2.index
# Int64Index([0, 1, 2, 3], dtype='int64') 출력

df2.columns
# Index(['A', 'B', 'C', 'D', 'E', 'F'], dtype='object')&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;to_numpy() : pandas 객체를 numpy 배열 객체인 ndarray로 반환한다.&lt;/p&gt;
&lt;pre id=&quot;code_1604937637676&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;df2.to_numpy()

array([[1.0, Timestamp('2013-01-02 00:00:00'), 1.0, 3, 'test', 'foo'],
       [1.0, Timestamp('2013-01-02 00:00:00'), 1.0, 3, 'train', 'foo'],
       [1.0, Timestamp('2013-01-02 00:00:00'), 1.0, 3, 'test', 'foo'],
       [1.0, Timestamp('2013-01-02 00:00:00'), 1.0, 3, 'train', 'foo']],
      dtype=object)
      
# 통계 요약
df2.describe()
	A	C	D
count	4.0	4.0	4.0
mean	1.0	1.0	3.0
std	0.0	0.0	0.0
min	1.0	1.0	3.0
25%	1.0	1.0	3.0
50%	1.0	1.0	3.0
75%	1.0	1.0	3.0
max	1.0	1.0	3.0&lt;/code&gt;&lt;/pre&gt;
&lt;pre id=&quot;code_1604938092820&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# .sort_index()는 인덱스(index)를 기준으로, .sort_values()는 컬럼의 값을 기준으로 데이터 정렬

df2.sort_index(axis=1, ascending=False)
	F	E	D	C	B		A
0	foo	test	3	1.0	2020-11-10	1.0
1	foo	train	3	1.0	2020-11-10	1.0
2	foo	test	3	1.0	2020-11-10	1.0
3	foo	train	3	1.0	2020-11-10	1.0

# B 값을 기준으로 데이터 정렬
df2.sort_values(by='B')

# 여러 개의 컬럼 값을 기준으로 값을 정렬하고 싶을 때
df2.sort_values(by=['B', 'E'] ,ascending=False)&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;- 데이터 다루기(인덱싱)&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: circle;&quot; data-ke-list-type=&quot;circle&quot;&gt;
&lt;li&gt;[] : 레이블이나 위치 정수를 기반으로 인덱싱한다.&lt;/li&gt;
&lt;li&gt;[ : ] : 슬라이싱을 활용하여 인덱싱한다.&lt;/li&gt;
&lt;li&gt;[boolean value] : 불린 벡터를 이용하여 인덱싱한다.&lt;/li&gt;
&lt;li&gt;loc[lable] : 레이블을 기반으로 인덱싱한다.&lt;/li&gt;
&lt;li&gt;iloc[position] : 위치 정수를 기반으로 인덱싱한다.&lt;/li&gt;
&lt;li&gt;at[label] : 레이블을 기반으로 인덱싱한다.&lt;/li&gt;
&lt;li&gt;iat[position] : 위치 정수를 기반으로 인덱싱한다.&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1605328581061&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# 단일 열을 얻기(Series)
df2['A']
0    1.0
1    1.0
2    1.0
3    1.0
Name: A, dtype: float64

# 행 분할하기 (0~2번째 행까지)
df2[0:3]
	A	B		C	D	E	F
0	1.0	2020-11-10	1.0	3	test	foo
1	1.0	2020-11-10	1.0	3	train	foo
2	1.0	2020-11-10	1.0	3	test	foo

# 값을 기준으로 분할할 수도 있다
df2['2020-11-10':'2020-11-11']&lt;/code&gt;&lt;/pre&gt;
&lt;pre id=&quot;code_1605328811406&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# loc
# 열이 아닌 행 단위로 데이터 조회
df.loc[0]
# 1차원 Sereis 형태의 데이터가 리턴된다.
A                      1
B    2020-11-10 00:00:00
C                      1
D                      3
E                   test
F                    foo
G                    one
Name: 0, dtype: object

df.loc[[0]]
# 2차원 배열을 입력하면 2차원인 DataFrame 형태의 데이터 출력
	A	B		C	D	E	F	G
0	1.0	2020-11-10	1.0	3	test	foo	one

# 여러 행 명을 사용하여 데이터를 가져올 수도 있다.
# 0, 1번째 행 데이터를 가져온다.
df.loc[[0, 1]]

# 특정 행만 제외하고 가져올 수 있다.
# 2번째 행만 제외하고 데이터를 DataFrame 형태로 가져온다.
df.loc[df.index != 2]
A	B		C	D	E	F	G
0	1.0	2020-11-10	1.0	3	test	foo	one
1	1.0	2020-11-10	1.0	3	train	foo	one
3	1.0	2020-11-10	1.0	3	train	foo	three

# 열 조회하기
# 모든 행은 :으로 표시
# 쉼표(,)를 입력하고 열명을 입력하면 해당 열만 가져온다.
df.loc[:, 'A']
0    1.0
1    1.0
2    1.0
3    1.0
Name: A, dtype: float64

# DataFrame으로 가져오기
df.loc[:, ['A']]

# 특정 컬럼(B열)만 제외하고 가져오기
df.loc[:, df.columns != 'B']
	A	C	D	E	F	G
0	1.0	1.0	3	test	foo	one
1	1.0	1.0	3	train	foo	one
2	1.0	1.0	3	test	foo	two
3	1.0	1.0	3	train	foo	three

# 행과 열 정보 동시에 가져오기
# 실제 값 하나만 리턴된다. 1.0
df.loc[0, 'A']

# 2차원 DataFrame 리턴
df.loc[[0, 1], ['A', 'B']]
	A	B
0	1.0	2020-11-10
1	1.0	2020-11-10&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;loc, iloc의 차이 : loc는 레이블을 기반으로 데이터에 접근하지만, iloc는 위치 정수를 기반으로 데이터에 접근한다.&lt;/p&gt;
&lt;p&gt;loc와 at의 차이 : 레이블을 통해 값에 접근한다는 점이 공통점이나, at은 하나의 요소에만 접근할 수 있다.&lt;/p&gt;
&lt;p&gt;iloc와 iat의 차이 : 위치 정수를 통해 값에 접근한다는 점이 공통점이나, iat은 하나의 요소에만 접근할 수 있다.&lt;/p&gt;
&lt;pre id=&quot;code_1605329871888&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# at
# Timestamp('2020-11-10 00:00:00'), 0행 B열에 해당하는 하나의 요소 리턴
df.at[0, 'B']

# iat
# 'test', 0행 4열의 데이터가 출력된다.
df.iat[0, 4]

# iloc
# 위치 정수를 반드시 입력해주어야 한다.
df.iloc[0]
A                      1
B    2020-11-10 00:00:00
C                      1
D                      3
E                   test
F                    foo
G                    one
Name: 0, dtype: object

# 0행 6열의 값 하나를 가져온다. 'one'이 출력
df.iloc[0, 6]&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;불린 인덱싱을 사용하면 특정 조건에 맞는 데이터만 추출할 수 있다.&lt;/p&gt;
&lt;pre id=&quot;code_1605328932948&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# Bool 인덱싱
# 한 번 더 []로 감싸주어야 한다, A가 1보다 클 경우 출력
df2[df2['A'] &amp;gt; 1]

# 필터링 사용하기, one three를 포함하고 있는 경우 출력
df = df2.copy()
df['G'] = ['one', 'one', 'two', 'three']
df[df['G'].isin(['one', 'three'])]
	A	B		C	D	E	F	G
0	1.0	2020-11-10	1.0	3	test	foo	one
1	1.0	2020-11-10	1.0	3	train	foo	one
3	1.0	2020-11-10	1.0	3	train	foo	three&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>CS/Data Science</category>
      <author>칸타탓</author>
      <guid isPermaLink="true">https://developmentnotepad.tistory.com/324</guid>
      <comments>https://developmentnotepad.tistory.com/entry/CS-%ED%8C%8C%EC%9D%B4%EC%8D%AC%EC%9C%BC%EB%A1%9C-%EC%8B%9C%EC%9E%91%ED%95%98%EB%8A%94-%EB%8D%B0%EC%9D%B4%ED%84%B0-%EC%82%AC%EC%9D%B4%EC%96%B8%EC%8A%A4-5#entry324comment</comments>
      <pubDate>Mon, 9 Nov 2020 22:23:46 +0900</pubDate>
    </item>
    <item>
      <title>[CS] 파이썬으로 시작하는 데이터 사이언스 (4)</title>
      <link>https://developmentnotepad.tistory.com/entry/CS-%ED%8C%8C%EC%9D%B4%EC%8D%AC%EC%9C%BC%EB%A1%9C-%EC%8B%9C%EC%9E%91%ED%95%98%EB%8A%94-%EB%8D%B0%EC%9D%B4%ED%84%B0-%EC%82%AC%EC%9D%B4%EC%96%B8%EC%8A%A4-4</link>
      <description>&lt;h3 id=&quot;%ED%94%84%EB%A1%9C%ED%8D%BC%ED%8B%B0property&quot; class=&quot;mume-header&quot; style=&quot;padding: 7px 10px 5px; margin: 1em 0px 16px; border-left: 5px solid #666666; background-color: #fafafa; color: #333333; line-height: 1.2;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-size: 24px; color: #000000;&quot;&gt;데이터 분석을 위한 파일 경로 설정하기&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p class=&quot;p1&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #333333;&quot;&gt;- %mv&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #333333;&quot;&gt;- %pwd&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #333333;&quot;&gt;- %ls&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #333333;&quot;&gt;- pd.read_csv&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #333333;&quot;&gt;- cp949&lt;/span&gt;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;p&gt;&lt;b&gt;- 설정 방법&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;1) 새로운 노트북 생성하기&lt;/p&gt;
&lt;p&gt;2) 공공데이터 포털로 이동하여 원하는 데이터 다운받기&lt;/p&gt;
&lt;p&gt;3) 다운받은 데이터를 주피터 노트북의 위치로 옮기기 : %mv&lt;/p&gt;
&lt;p&gt;4) data 폴더 내에 판다스로 csv 파일 불러오기&lt;/p&gt;
&lt;pre id=&quot;code_1604932742125&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;pd.read_csv(&quot;./data/도로교통공단_교통사고_다발지역_20201104.csv&quot;, encoding=&quot;cp949&quot;)&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;span&gt;* 도움말 : Shift + Tab&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>CS/Data Science</category>
      <author>칸타탓</author>
      <guid isPermaLink="true">https://developmentnotepad.tistory.com/323</guid>
      <comments>https://developmentnotepad.tistory.com/entry/CS-%ED%8C%8C%EC%9D%B4%EC%8D%AC%EC%9C%BC%EB%A1%9C-%EC%8B%9C%EC%9E%91%ED%95%98%EB%8A%94-%EB%8D%B0%EC%9D%B4%ED%84%B0-%EC%82%AC%EC%9D%B4%EC%96%B8%EC%8A%A4-4#entry323comment</comments>
      <pubDate>Mon, 9 Nov 2020 22:23:36 +0900</pubDate>
    </item>
    <item>
      <title>[CS] 파이썬으로 시작하는 데이터 사이언스 (3)</title>
      <link>https://developmentnotepad.tistory.com/entry/CS-%ED%8C%8C%EC%9D%B4%EC%8D%AC%EC%9C%BC%EB%A1%9C-%EC%8B%9C%EC%9E%91%ED%95%98%EB%8A%94-%EB%8D%B0%EC%9D%B4%ED%84%B0-%EC%82%AC%EC%9D%B4%EC%96%B8%EC%8A%A4-3</link>
      <description>&lt;h3 id=&quot;%ED%94%84%EB%A1%9C%ED%8D%BC%ED%8B%B0property&quot; class=&quot;mume-header&quot; style=&quot;padding: 7px 10px 5px; margin: 1em 0px 16px; border-left: 5px solid #666666; background-color: #fafafa; color: #333333; line-height: 1.2;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR'; color: #000000;&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-size: 24px;&quot;&gt;판다스 치트시트 활용하기&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p class=&quot;p1&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #000000; font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;- pandas&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #000000; font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;- dataframe&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #000000; font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;- series&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #000000; font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;- sort&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #000000; font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;- drop&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #000000; font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;- groupby&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #000000; font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;- pivot table&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #000000; font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;- plot&lt;/span&gt;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;p&gt;&lt;span style=&quot;color: #000000; font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;- &lt;b&gt;Pandas 사용하기&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #000000; font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;수식으로 계산할 수 있고 시각화도 할 수 있는 데이터 분석도구이다. 엑셀로는 힘든 대용량의 데이터를 분석할 수 있다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #000000; font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;import pandas as pd로 라이브러리를 불러온 후 사용한다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #000000; font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;&lt;b&gt;- Pandas&lt;span&gt; &lt;/span&gt;따라해보기&lt;/b&gt;&lt;br /&gt;&lt;a href=&quot;https://pandas.pydata.org/pandas-docs/version/1.0.0/getting_started/10min.html&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;pandas.pydata.org/pandas-docs/version/1.0.0/getting_started/10min.html&lt;/a&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://pandas.pydata.org/Pandas_Cheat_Sheet.pdf&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;pandas.pydata.org/Pandas_Cheat_Sheet.pdf&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #000000; font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;&lt;b&gt;- 관련 문법 익히기&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #000000; font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;&lt;b&gt;1) DataFrame : 2차원의 자료구조&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #000000; font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;2개 이상의 프레임을 가져올 때는 데이터 프레임 형태로 가져와야 한다.&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1604925101757&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;df = pd.DataFrame({
  &quot;a&quot; : [4, 5, 6],
  &quot;b&quot; : [7, 8, 9],
  &quot;c&quot; : [10, 11, 12]
},index = [1, 2, 3])
# 모든 값 출력
df&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;a, b, c 컬럼을 가진 데이터 프레임 생성&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #000000; font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;&lt;b&gt;2) &lt;b&gt;Series : 1차원의 자료구조&lt;/b&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #333333;&quot;&gt;df[&quot;a&quot;]를 입력하면 &lt;span style=&quot;color: #333333;&quot;&gt;a 컬럼에 있는 4, 5, 6의 값이 출력된다.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;Series 형태가 아닌 Data Frame 형태로 출력하고 싶은 경우 df&lt;span&gt;[&lt;/span&gt;&lt;span&gt;[&lt;/span&gt;&lt;span&gt;&quot;a&quot;&lt;/span&gt;&lt;span&gt;]&lt;/span&gt;&lt;span&gt;]로 입력한다.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span&gt;* 차이 (1차원과 2차원 구조)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock floatLeft&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bVehGy/btqM38Yh2Wr/BiaAKM5awSpMnqbhQxldlk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bVehGy/btqM38Yh2Wr/BiaAKM5awSpMnqbhQxldlk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bVehGy/btqM38Yh2Wr/BiaAKM5awSpMnqbhQxldlk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbVehGy%2FbtqM38Yh2Wr%2FBiaAKM5awSpMnqbhQxldlk%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&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;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/uWRxu/btqM0rxlbCU/wfpKVTVoOUQp1KswOaunAK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/uWRxu/btqM0rxlbCU/wfpKVTVoOUQp1KswOaunAK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/uWRxu/btqM0rxlbCU/wfpKVTVoOUQp1KswOaunAK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FuWRxu%2FbtqM0rxlbCU%2FwfpKVTVoOUQp1KswOaunAK%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&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;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #000000; font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;&lt;b&gt;3) &lt;b&gt;Subset (일부 값만 불러오기)&lt;/b&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1604925892820&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# df[&quot;a&quot;, &quot;b&quot;]
# 두 개 이상의 값을 불러올 때 Series 형태로 불러올 경우 키값 오류 발생

df[[&quot;a&quot;, &quot;b&quot;]]
# DataFrame 형태로 불러와야 한다.

# df의 a의 컬럼 값 중 4보다 큰 값만 가져오겠다
# df[&quot;a&quot;] &amp;gt; 4는 Boolean 값
df[df[&quot;a&quot;] &amp;gt; 4]&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #000000; font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;&lt;b&gt;4) &lt;b&gt;Summarize Data : 빈도수&lt;/b&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #333333;&quot;&gt;Categorical한 값의 빈도수를 구하기&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1604926521891&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# a 컬럼에서 6은 1번, 5는 1번, 4는 1번 존재
df[&quot;a&quot;].value_counts()&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #000000; font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;&lt;b&gt;5) &lt;b&gt;Reshaping&lt;/b&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1604926687896&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# a 컬럼을 정렬하기
df[&quot;a&quot;].sort_values()
1    4
2    5
3    6
Name: a, dtype: int64

# a 값을 기준으로 정렬하기
df.sort_values(&quot;a&quot;)
	a	b	c
1	4	7	10
2	5	8	11
3	6	9	12

# 역순으로 정렬하기
df.sort_values(&quot;a&quot;, ascending=False)
	a	b	c
3	6	9	12
2	5	8	11
1	4	7	10&lt;/code&gt;&lt;/pre&gt;
&lt;pre id=&quot;code_1604926900752&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# 특정 칼럼 버리기
# axis : 0이면 행을 기준으로 삭제, 1은 열을 기준으로 삭제
# df.drop([&quot;c&quot;], axis=1)만 수행하는 것이 아니라 df에 다시 담아주어야 한다.
df = df.drop([&quot;c&quot;], axis=1)

	a	b
1	4	7
2	5	8
3	6	9&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #000000; font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;&lt;b&gt;6) &lt;b&gt;Group Data&lt;/b&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1604927161352&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# 컬럼의 평균값 구하기 (mean)
# a 컬럼값을 Groupby하여 b의 컬럼값 평균값 구하기
# 만약 a에 4가 2번 존재하고 각각 6, 8이 들어있다면 7이 평균값으로 b에 들어가게 됨
df.groupby([&quot;a&quot;])[&quot;b&quot;].mean()

df.groupby([&quot;a&quot;])[&quot;b&quot;].agg([&quot;mean&quot;, &quot;count&quot;, &quot;sum&quot;])
	mean	count	sum
a			
4	7	1	7
5	8	1	8
6	9	1	9

# 데이터 요약
df.groupby([&quot;a&quot;])[&quot;b&quot;].describe()
	count	mean	std	min	25%	50%	75%	max
a								
4	1.0	7.0	NaN	7.0	7.0	7.0	7.0	7.0
5	1.0	8.0	NaN	8.0	8.0	8.0	8.0	8.0
6	1.0	9.0	NaN	9.0	9.0	9.0	9.0	9.0

a
4    7
5    8
6    9
Name: b, dtype: int64
# 4의 평균, 8의 평균, 9의 평균

pd.pivot_table(df, index=&quot;a&quot;)
	b	c
a		
4	7	10
5	8	11
6	9	12

# 더한 값을 구하고자 하는 경우
pd.pivot_table(df, index=&quot;a&quot;, values=&quot;b&quot;, aggfunc=&quot;sum&quot;)
	b
a	
4	7
5	8
6	9&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #000000; font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;&lt;b&gt;7) &lt;b&gt;Plotting : 시각화(기본적으로 선 그래프)&lt;/b&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1604927323067&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# 꺾은선 그래프
df.plot()

# 막대 그래프
df.plot.bar()

# 밀도함수
df.plot.density()&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dsP10b/btqM632NAcZ/AYoiYDAMeMz9gnov5UTw80/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dsP10b/btqM632NAcZ/AYoiYDAMeMz9gnov5UTw80/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dsP10b/btqM632NAcZ/AYoiYDAMeMz9gnov5UTw80/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdsP10b%2FbtqM632NAcZ%2FAYoiYDAMeMz9gnov5UTw80%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&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;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/npntJ/btqM5UZk3ZJ/1BI6zNZ5zkCtTUfqAAyEc1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/npntJ/btqM5UZk3ZJ/1BI6zNZ5zkCtTUfqAAyEc1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/npntJ/btqM5UZk3ZJ/1BI6zNZ5zkCtTUfqAAyEc1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FnpntJ%2FbtqM5UZk3ZJ%2F1BI6zNZ5zkCtTUfqAAyEc1%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&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;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; width=&quot;371&quot; height=&quot;NaN&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b8xt4O/btqMTgi2qJm/xcXrIunw2AelXGQ6P5jNfk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b8xt4O/btqMTgi2qJm/xcXrIunw2AelXGQ6P5jNfk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b8xt4O/btqMTgi2qJm/xcXrIunw2AelXGQ6P5jNfk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb8xt4O%2FbtqMTgi2qJm%2FxcXrIunw2AelXGQ6P5jNfk%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; width=&quot;371&quot; height=&quot;NaN&quot; data-ke-mobilestyle=&quot;widthContent&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;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;</description>
      <category>CS/Data Science</category>
      <author>칸타탓</author>
      <guid isPermaLink="true">https://developmentnotepad.tistory.com/322</guid>
      <comments>https://developmentnotepad.tistory.com/entry/CS-%ED%8C%8C%EC%9D%B4%EC%8D%AC%EC%9C%BC%EB%A1%9C-%EC%8B%9C%EC%9E%91%ED%95%98%EB%8A%94-%EB%8D%B0%EC%9D%B4%ED%84%B0-%EC%82%AC%EC%9D%B4%EC%96%B8%EC%8A%A4-3#entry322comment</comments>
      <pubDate>Sun, 8 Nov 2020 22:42:23 +0900</pubDate>
    </item>
    <item>
      <title>[CS] 파이썬으로 시작하는 데이터 사이언스 (2)</title>
      <link>https://developmentnotepad.tistory.com/entry/CS-%ED%8C%8C%EC%9D%B4%EC%8D%AC%EC%9C%BC%EB%A1%9C-%EC%8B%9C%EC%9E%91%ED%95%98%EB%8A%94-%EB%8D%B0%EC%9D%B4%ED%84%B0-%EC%82%AC%EC%9D%B4%EC%96%B8%EC%8A%A4-2</link>
      <description>&lt;h3 id=&quot;%ED%94%84%EB%A1%9C%ED%8D%BC%ED%8B%B0property&quot; class=&quot;mume-header&quot; style=&quot;padding: 7px 10px 5px; margin: 1em 0px 16px; border-left: 5px solid #666666; background-color: #fafafa; color: #333333; line-height: 1.2;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR'; color: #000000;&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-size: 24px;&quot;&gt;데이터 분석에 필요한 파이썬 기초 문법&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;span style=&quot;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;- import : &lt;/span&gt;&lt;span style=&quot;letter-spacing: 0px;&quot;&gt;import를 통해 파이썬의 라이브러리나 패키지를 가져올 수 있다.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000; font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;- boolean : True(1), False(0)&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;span style=&quot;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;- string : 앞 뒤 공백 제거하기 - &lt;/span&gt;&lt;span style=&quot;letter-spacing: 0px;&quot;&gt;address &lt;/span&gt;&lt;span style=&quot;letter-spacing: 0px;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;letter-spacing: 0px;&quot;&gt; address&lt;/span&gt;&lt;span style=&quot;letter-spacing: 0px;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;letter-spacing: 0px;&quot;&gt;strip&lt;/span&gt;&lt;span style=&quot;letter-spacing: 0px;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;letter-spacing: 0px;&quot;&gt;), &lt;/span&gt;&lt;span style=&quot;letter-spacing: 0px;&quot;&gt;문자열 포함여부(&lt;/span&gt;&lt;span style=&quot;letter-spacing: 0px;&quot;&gt;address&lt;/span&gt;&lt;span style=&quot;letter-spacing: 0px;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;letter-spacing: 0px;&quot;&gt;startswith&lt;/span&gt;&lt;span style=&quot;letter-spacing: 0px;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;letter-spacing: 0px;&quot;&gt;&quot;&quot;&lt;/span&gt;&lt;span style=&quot;letter-spacing: 0px;&quot;&gt;), 혹은&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;letter-spacing: 0px;&quot;&gt;&quot;&quot;&lt;/span&gt;&lt;span style=&quot;letter-spacing: 0px;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;letter-spacing: 0px;&quot;&gt;in&lt;/span&gt;&lt;span style=&quot;letter-spacing: 0px;&quot;&gt;&amp;nbsp;address)&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;span style=&quot;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;- list : append(원소 추가하기), 슬라이싱(&lt;/span&gt;&lt;span style=&quot;letter-spacing: 0px;&quot;&gt;address&lt;/span&gt;&lt;span style=&quot;letter-spacing: 0px;&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;letter-spacing: 0px;&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;letter-spacing: 0px;&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;letter-spacing: 0px;&quot;&gt;2&lt;/span&gt;&lt;span style=&quot;letter-spacing: 0px;&quot;&gt;]), &lt;/span&gt;&lt;span style=&quot;letter-spacing: 0px;&quot;&gt;원소 포함 여부 확인하기(&lt;/span&gt;&lt;span style=&quot;letter-spacing: 0px;&quot;&gt;&quot;&quot;&lt;/span&gt;&lt;span style=&quot;letter-spacing: 0px;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;letter-spacing: 0px;&quot;&gt;in&lt;/span&gt;&lt;span style=&quot;letter-spacing: 0px;&quot;&gt;&amp;nbsp;address_list)&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;span style=&quot;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;- for : &lt;/span&gt;&lt;span style=&quot;letter-spacing: 0px;&quot;&gt;enumerate를 통해 원소와 index 함께 가져오기 - &lt;/span&gt;&lt;span style=&quot;letter-spacing: 0px;&quot;&gt;for&lt;/span&gt;&lt;span style=&quot;letter-spacing: 0px;&quot;&gt; i&lt;/span&gt;&lt;span style=&quot;letter-spacing: 0px;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;letter-spacing: 0px;&quot;&gt; val &lt;/span&gt;&lt;span style=&quot;letter-spacing: 0px;&quot;&gt;in&lt;/span&gt;&lt;span style=&quot;letter-spacing: 0px;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;letter-spacing: 0px;&quot;&gt;enumerate&lt;/span&gt;&lt;span style=&quot;letter-spacing: 0px;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;letter-spacing: 0px;&quot;&gt;lang&lt;/span&gt;&lt;span style=&quot;letter-spacing: 0px;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;letter-spacing: 0px;&quot;&gt;:&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000; font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;- len() : 문자열, 리스트 길이 확인하기&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000; font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;- split(기준 문자) : 문자열 자르기&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;span style=&quot;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;- join : 두 리스트 연결하여 문자열 만들기(&lt;/span&gt;&lt;span style=&quot;letter-spacing: 0px;&quot;&gt;&quot; &quot;&lt;/span&gt;&lt;span style=&quot;letter-spacing: 0px;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;letter-spacing: 0px;&quot;&gt;join&lt;/span&gt;&lt;span style=&quot;letter-spacing: 0px;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;letter-spacing: 0px;&quot;&gt;address_list&lt;/span&gt;&lt;span style=&quot;letter-spacing: 0px;&quot;&gt;))&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;p&gt;&lt;span style=&quot;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif; color: #000000;&quot;&gt;&lt;b&gt;- Zen of Python&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif; color: #000000;&quot;&gt;PEP20 에 선언되어 있는 파이썬의 철학이 담긴 이스터에그 출력하기&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif; color: #000000;&quot;&gt;&amp;gt; import this&lt;/span&gt;&lt;/p&gt;</description>
      <category>CS/Data Science</category>
      <author>칸타탓</author>
      <guid isPermaLink="true">https://developmentnotepad.tistory.com/321</guid>
      <comments>https://developmentnotepad.tistory.com/entry/CS-%ED%8C%8C%EC%9D%B4%EC%8D%AC%EC%9C%BC%EB%A1%9C-%EC%8B%9C%EC%9E%91%ED%95%98%EB%8A%94-%EB%8D%B0%EC%9D%B4%ED%84%B0-%EC%82%AC%EC%9D%B4%EC%96%B8%EC%8A%A4-2#entry321comment</comments>
      <pubDate>Sun, 8 Nov 2020 22:36:58 +0900</pubDate>
    </item>
  </channel>
</rss>