Startik Startik
Guest
홈으로
로그아웃
브라우저에서 비디오를 지원하지 않습니다.
1 00:00:00,000 --> 00:00:06,000 이제 저의 실습으로 넘어가 보도록 하겠습니다. 2 00:00:06,000 --> 00:00:12,000 저희 먼저 딕셔너리 아세트 중에 딕셔너리 먼저 다루어 볼 예정인데요. 3 00:00:12,000 --> 00:00:14,000 딕셔너리 어떤 거라고 했죠? 4 00:00:14,000 --> 00:00:18,000 리스트나 튜블처럼 순차적으로 해당 요소 값을 구하지 않고 5 00:00:18,000 --> 00:00:21,000 키를 통해서 밸류를 얻는다 라고 했습니다. 6 00:00:21,000 --> 00:00:26,000 먼저 저희가 요소가 없는, 비어있는 딕셔너리 한번 만들어 볼까요? 7 00:00:27,000 --> 00:00:32,000 a라는 변수를 하나 만들고 비어있는 딕셔너리를 만들기 위해서 8 00:00:32,000 --> 00:00:35,000 이렇게 괄호를 써주시면 되겠습니다. 9 00:00:35,000 --> 00:00:39,000 중괄호인데요. 프린트 a를 또 한번 해볼까요? 10 00:00:39,000 --> 00:00:44,000 그리고 프린트 타입도 확인해 보겠습니다. 11 00:00:44,000 --> 00:00:47,000 보시면 비어있는 딕셔너리가 생성이 되었고요. 12 00:00:47,000 --> 00:00:52,000 dict라고 해서 딕셔너리다 라고 타입을 알려주고 있습니다. 13 00:00:52,000 --> 00:00:58,000 딕셔너리 생성을 하고 접근하는 방법을 한번 보도록 하겠습니다. 14 00:00:58,000 --> 00:01:04,000 이번에 딕셔너리 안에는 저희가 총 3개의 요소들을 넣어 볼 거예요. 15 00:01:04,000 --> 00:01:06,000 3개의 쌍을 넣어 보겠습니다. 16 00:01:06,000 --> 00:01:16,000 myDict 라고 한 다음에 여기에다가는 name에다가 kim 17 00:01:17,000 --> 00:01:22,000 그리고 이 value 한 쌍이 작성이 된 다음에는 18 00:01:22,000 --> 00:01:24,000 심표를 꼭 사용을 해주셔야 합니다. 19 00:01:24,000 --> 00:01:29,000 그래서 age라고 적고 25 20 00:01:29,000 --> 00:01:35,000 다음에 city라고 적고 21 00:01:38,000 --> 00:01:41,000 이렇게 적어 보도록 하겠습니다. 22 00:01:41,000 --> 00:01:48,000 그 다음에 이 들어있는 요소들을 저희가 접근을 해서 출력을 해볼 수도 있는 거잖아요. 23 00:01:48,000 --> 00:01:51,000 그래서 어떻게 하는지 보도록 할게요. 24 00:01:51,000 --> 00:01:57,000 프린트를 할 때 myDict에 들어있는 내용 중에서 25 00:01:57,000 --> 00:02:02,000 저희가 접근할 요소에 키값을 적어주면 된다고 했었죠. 26 00:02:02,000 --> 00:02:06,000 그래서 만약에 이름을 저희가 출력을 하고 싶다라고 하면 27 00:02:06,000 --> 00:02:09,000 여기에 name 키값을 적어 주시면 되고요. 28 00:02:09,000 --> 00:02:13,000 그 다음 age도 확인을 하고 싶다라고 하면 29 00:02:13,000 --> 00:02:19,000 myDict에 age라고 이렇게 적으시면 됩니다. 30 00:02:19,000 --> 00:02:22,000 여기 가로를 꼭 잘 닫아 주셔야 합니다. 31 00:02:22,000 --> 00:02:29,000 이렇게 하시면 kim과 25 이렇게 두 가지의 값이 출력이 되는 걸 확인할 수 있습니다. 32 00:02:29,000 --> 00:02:33,000 딕셔너리 쌍과 키값 추가하기 입니다. 33 00:02:33,000 --> 00:02:38,000 이번에는 어떻게 저희가 값을 추가할 수 있는지 한번 살펴볼게요. 34 00:02:38,000 --> 00:02:43,000 여기서는 a에다가 저희가 딕셔너리를 만드는데 35 00:02:43,000 --> 00:02:49,000 1이라는 키를 가지고 있고 밸류로는 a가 들어있습니다. 36 00:02:49,000 --> 00:02:54,000 이렇게 한 다음에 이번에 저희가 추가할 것은 37 00:02:54,000 --> 00:03:01,000 b, a에다가 딕셔너리 a에다가 두 번째 요소를 추가하겠다라고 해서 38 00:03:01,000 --> 00:03:03,000 이렇게 적어 주시면 되는데요. 39 00:03:03,000 --> 00:03:10,000 그 다음에 저희가 추가할 값, 이번에는 b를 추가하겠다, 밸류로는 b를 추가하겠다 이렇게 적으시고요. 40 00:03:10,000 --> 00:03:13,000 print a를 한번 해 보겠습니다. 41 00:03:13,000 --> 00:03:22,000 이렇게 하시면 지금 키가 두 개, 밸류가 두 개, 이렇게 총 두 개의 쌍이 생성이 되어 있고요. 42 00:03:22,000 --> 00:03:28,000 자 기억하실 점은 보시면 문자열로 저희 넣었습니다. 43 00:03:28,000 --> 00:03:34,000 그래서 이렇게 따옴표 찍어 줬다라는 거 한번 더 기억하시면 좋겠습니다. 44 00:03:34,000 --> 00:03:37,000 밸류 리스트 추가하기 인데요. 45 00:03:37,000 --> 00:03:41,000 이번에는 밸류로 한번 리스트를 추가해 볼게요. 46 00:03:41,000 --> 00:03:47,000 이미 생성된 이 리스트에 현재는 이렇게 두 개의 쌍이 들어있는 상태인 거죠. 47 00:03:47,000 --> 00:03:51,000 여기에다가 리스트를 한번 추가해 보겠습니다. 48 00:03:51,000 --> 00:03:55,000 여기에다가 키값으로는 3이라고 넣을 거고요. 49 00:03:56,000 --> 00:04:02,000 그리고 여기에다가 리스트의 형태로 1, 2, 3이라고 값을 추가하겠습니다. 50 00:04:02,000 --> 00:04:09,000 그리고 print a를 해보면 이렇게 마지막 부분에 3이라는 키값을 가지고 있는 곳에 51 00:04:09,000 --> 00:04:14,000 리스트의 형태로 1, 2, 3이라는 밸류가 들어가는 걸 볼 수 있습니다. 52 00:04:14,000 --> 00:04:19,000 그 다음은 딕셔너리 값을 수정을 한번 해 보도록 할게요. 53 00:04:19,000 --> 00:04:24,000 여기에서는 myDict라고 저희가 만들 거고요. 54 00:04:24,000 --> 00:04:49,000 여기에다가 name에다가는 Alice 그리고 age에다가는 25 그리고 city에다가는 New York이라고 이렇게 넣겠습니다. 55 00:04:49,000 --> 00:04:55,000 여기 다운표로 잘 닫아주시고 중간으로 이렇게 잘 닫아주신 다음에 56 00:04:55,000 --> 00:05:03,000 여기 지금 보시면 여기도 잘 다운표로 잘 닫아주시고 이렇게 하시면 됩니다. 57 00:05:03,000 --> 00:05:06,000 여기서 저희가 print를 하나 더 하겠습니다. 58 00:05:06,000 --> 00:05:12,000 print myDict 방금 만들었던 딕셔너리를 저희가 출력을 해 볼게요. 59 00:05:12,000 --> 00:05:16,000 이렇게 하시면 내용이 정확히 잘 들어간 상태이고요. 60 00:05:16,000 --> 00:05:20,000 이곳에다가 지금 값을 수정을 할 거잖아요. 61 00:05:20,000 --> 00:05:28,000 25이라고 되어 있는 저 age, 키값이 age고 밸류가 25인 곳을 저희가 26으로 변경하고자 합니다. 62 00:05:28,000 --> 00:05:39,000 그래서 myDict라는 곳에 지금 들어 있는 키값이 age인 곳의 밸류를 이렇게 수정할 거야라고 적어주는 겁니다. 63 00:05:39,000 --> 00:05:46,000 그래서 여기다가 26이라고 적으면 한번 출력해 볼까요. 잘 수정이 되었나. 64 00:05:46,000 --> 00:05:49,000 myDict라고 쓰겠습니다. 65 00:05:49,000 --> 00:05:55,000 이렇게 작성하시면 25이 26으로 변경이 된 걸 볼 수 있습니다. 66 00:05:55,000 --> 00:05:59,000 딕셔너리 값 추가 및 수정하기인데요. 67 00:05:59,000 --> 00:06:04,000 업데이트라는 게 있었어요. 업데이트를 사용을 한번 해 보도록 하겠습니다. 68 00:06:05,000 --> 00:06:14,000 a라는 곳에다가 a라는 키값을 가지고 밸류가 1이고요. 69 00:06:14,000 --> 00:06:18,000 b라는 키값에는 2가 들어있는 상태입니다. 70 00:06:18,000 --> 00:06:24,000 이렇게 해서 딕셔너리 하나를 만들었고 추가할 딕셔너리 하나 추가해 볼게요. 71 00:06:24,000 --> 00:06:29,000 작성을 해 보겠습니다. 추가할 딕셔너리 이렇게 한번 적어 드릴게요. 72 00:06:29,000 --> 00:06:40,000 b라는 곳에다가 b에는 3이 들어있고 c에는 4가 들어있다고 이렇게 작성을 하겠습니다. 73 00:06:40,000 --> 00:06:49,000 그래서 a에 들어있는 내용을 업데이트 하겠다고 해서 a성을 찍고 업데이트를 한 다음에 74 00:06:49,000 --> 00:06:55,000 어떤 내용을 가져다 업데이트 할 거냐. b에 들어있는 내용을 사용해서 업데이트 하겠다고 이렇게 씁니다. 75 00:06:55,000 --> 00:07:04,000 그리고 print a를 하시면 이렇게 지금 기존에 들어있던 키값의 밸류는 3으로 수정이 된 거고요. 76 00:07:04,000 --> 00:07:14,000 새로운 키값은 추가가 되어서 이렇게 총 3개의 쌍이 들어있는 딕셔너리가 출력이 되는 걸 확인할 수 있습니다. 77 00:07:14,000 --> 00:07:19,000 다음으로 넘어가서요. 이번에는 딕셔너리 삭제하기 입니다. 78 00:07:19,000 --> 00:07:27,000 사용할 수 있는 것 3가지가 있다고 했어요. Dell이 있었고 Clear, Pop 이렇게 3개가 있었습니다. 79 00:07:27,000 --> 00:07:38,000 먼저 보시면 Dell을 살펴보겠습니다. 딕셔너리 이름을 쓰고 키값을 써서 그 안에 있는 요소를 제거하는 거잖아요. 80 00:07:39,000 --> 00:07:44,000 지금 저희 여기서 작성했던 내용을 복붙해볼까요? 81 00:07:44,000 --> 00:07:52,000 여기 보시면 MyDict 가져다가 복붙을 하겠습니다. 82 00:07:52,000 --> 00:07:58,000 MyDict의 Name Alice Age 25 City NY 이렇게 적혀있었는데요. 83 00:07:58,000 --> 00:08:10,000 여기서 지금 삭제하려고 하는 것은 MyDict City를 삭제하겠다 라고 키값을 줍니다. 84 00:08:10,000 --> 00:08:22,000 City를 삭제하고 print MyDict를 해보게 되면 이렇게 City가 제거가 되고 나머지 2개의 쌍이 들어있는 딕셔너리가 반환이 됩니다. 85 00:08:23,000 --> 00:08:29,000 그러면 저희가 또 보고자 하는 것은 Dell MyDict 입니다. 86 00:08:29,000 --> 00:08:35,000 딕셔너리 이름을 그대로 전달해서 딕셔너리 자체를 제거를 하는 건데요. 87 00:08:35,000 --> 00:08:40,000 Dell MyDict를 하고 그리고 나서 MyDict를 출력을 해볼까요? 88 00:08:41,000 --> 00:08:54,000 MyDict라고 이렇게 적으시면 MyDict라는 이름을 가진 지금 변수가 더이상 존재하지 않기 때문에 에러가 발생하는 걸 볼 수 있습니다. 89 00:08:54,000 --> 00:08:56,000 잘 제거가 되었다라는 거죠. 90 00:08:56,000 --> 00:08:58,000 위에서는 잘 출력됐었잖아요. 91 00:08:58,000 --> 00:09:05,000 이렇게 Dell MyDict라고 Dell을 사용하시면 딕셔너리 자체가 제거가 된다라는 점입니다. 92 00:09:05,000 --> 00:09:08,000 이번에는 Clear 한번 써보도록 할게요. 93 00:09:08,000 --> 00:09:13,000 이거는 딕셔너리 이름을 적고 Clear를 써주면 되는 건데요. 94 00:09:13,000 --> 00:09:15,000 이번에는 MyDict 95 00:09:18,000 --> 00:09:23,000 여기 Name에다가 Alice 96 00:09:25,000 --> 00:09:30,000 그리고 Age에다가 25 97 00:09:31,000 --> 00:09:38,000 그리고 City에다가는 NY라고 넣겠습니다. 98 00:09:38,000 --> 00:09:46,000 여기 있는 지금 요소 중에서 저희가 이거를 전체를 삭제하겠다라는 거잖아요. 99 00:09:46,000 --> 00:09:50,000 그래서 딕셔너리 이름인 MyDict를 쓰고요. 100 00:09:50,000 --> 00:09:53,000 점을 찍고 Clear를 합니다. 101 00:09:53,000 --> 00:09:57,000 이렇게 한 다음에 MyDict를 한번 프린트 해보겠습니다. 102 00:09:58,000 --> 00:10:07,000 보시면 안에 들어있던 내용이 모두 제거가 되고 비어있는 딕셔너리만 반환되는 걸 볼 수 있습니다. 103 00:10:07,000 --> 00:10:12,000 그 다음에 팝도 있는데요. 팝도 한번 써보겠습니다. 104 00:10:12,000 --> 00:10:16,000 여기서는 지금 저희가 Fruit라는 걸 만들 거예요. 105 00:10:17,000 --> 00:10:21,000 여기에다가는 Apple 106 00:10:21,000 --> 00:10:24,000 여기에다가는 사과 107 00:10:24,000 --> 00:10:27,000 그리고 바나나 108 00:10:27,000 --> 00:10:30,000 여기에다가는 바나나 109 00:10:30,000 --> 00:10:32,000 한국어로 적어주고요. 110 00:10:32,000 --> 00:10:36,000 영어로 Kiwi라고 적은 다음에 111 00:10:36,000 --> 00:10:41,000 여기에다가는 한국어로 Kiwi라고 이렇게 적을게요. 112 00:10:42,000 --> 00:10:46,000 이렇게 해서 지금 3개의 쌍이 들어있는 딕셔너리를 만들었고요. 113 00:10:46,000 --> 00:10:48,000 제거를 할 건데요. 114 00:10:48,000 --> 00:10:55,000 Removed라고 저희가 변수를 하나 만들어서 제거된 내용이 그 안에 들어가도록 할당되도록 할 겁니다. 115 00:10:55,000 --> 00:10:59,000 Fruit라고 해서 팝을 하는데 116 00:10:59,000 --> 00:11:05,000 바나나를 꺼낼 겁니다. 바나나를 제거하겠다라고 해서 이렇게 적어주시고 117 00:11:06,000 --> 00:11:08,000 그 다음 프린트 118 00:11:09,000 --> 00:11:15,000 각각 Removed도 저희가 프린트를 해보고 Fruit도 프린트 해보겠습니다. 119 00:11:18,000 --> 00:11:22,000 이렇게 출력을 한번 해보도록 할 텐데요. 120 00:11:22,000 --> 00:11:27,000 보시면 제거된 내용인 바나나 정확히 잘 출력되고 있고요. 121 00:11:27,000 --> 00:11:31,000 남아있는 쌍, 2개의 쌍 122 00:11:31,000 --> 00:11:40,000 그래서 애플과 키위 이렇게 두 가지 요소도 딕셔너리 안에 정확하게 들어있는 상태로 출력이 됩니다. 123 00:11:40,000 --> 00:11:45,000 딕셔너리 다루는 방법 또 다른 것들 한번 살펴볼게요. 124 00:11:45,000 --> 00:11:53,000 여기서 사용할 수 있는 것은 지금 딕셔너리의 모든 키를 리스트 형태로 반환해준다라고 합니다. 125 00:11:53,000 --> 00:11:58,000 어떻게 요소들을 꺼내서 볼 수 있는지 한번 보도록 하겠습니다. 126 00:11:58,000 --> 00:12:02,000 Nations라고 저희가 변수를 만들 거고요. 127 00:12:02,000 --> 00:12:09,000 여기에다가 Korea 이거는 한국이라고 적고요. 128 00:12:09,000 --> 00:12:17,000 그 다음 Japan이라고 적고 여기에다가는 일본 129 00:12:17,000 --> 00:12:27,000 그리고 China라고 적은 다음에 여기에다가는 중국이라고 넣겠습니다. 130 00:12:27,000 --> 00:12:30,000 여기에서 프린트를 하는데요. 131 00:12:30,000 --> 00:12:34,000 여기 안에 있는 요소들을 모두 꺼내서 보려고 하는 거예요. 132 00:12:34,000 --> 00:12:40,000 Nations라고 적은 다음에 점을 찍고 Keys라고 이렇게 적으면 133 00:12:40,000 --> 00:12:44,000 키들만 추출을 해서 확인을 할 수 있는 겁니다. 134 00:12:44,000 --> 00:12:48,000 이렇게 작성을 하신 다음에 실행을 해보면 135 00:12:48,000 --> 00:12:55,000 여기에 들어있는 값들 중에 키 값만 반환을 해주는 걸 볼 수 있습니다. 136 00:12:55,000 --> 00:13:00,000 그 다음 Value를 한번 써볼텐데요. 137 00:13:00,000 --> 00:13:04,000 Value를 리스트 형태로 반환을 해준다고 합니다. 138 00:13:04,000 --> 00:13:09,000 여기에서 지금 보시면 위에서 Nations 만들었잖아요. 139 00:13:09,000 --> 00:13:11,000 이 Nations 그대로 가져다 쓸 거고요. 140 00:13:11,000 --> 00:13:16,000 프린트를 하는데 Nations에서 141 00:13:16,000 --> 00:13:19,000 이번에는 저희가 사용할 게 Value잖아요. 142 00:13:19,000 --> 00:13:23,000 이렇게 Value라고 적어준 다음에 출력을 해보면 143 00:13:24,000 --> 00:13:26,000 지금 세 가지가 있었죠? 144 00:13:26,000 --> 00:13:31,000 한국, 일본, 중국 이렇게 반환이 되는 걸 확인할 수 있습니다. 145 00:13:31,000 --> 00:13:33,000 다음은 Dictionary입니다. 146 00:13:33,000 --> 00:13:37,000 Dictionary의 Items입니다. 147 00:13:37,000 --> 00:13:43,000 먼저 여기서 저희가 쓸 거는 똑같이 Nations 가져다 쓸 거고요. 148 00:13:43,000 --> 00:13:46,000 프린트 Nations 점 찍고 149 00:13:46,000 --> 00:13:51,000 여기서 쓸 거는 Items라고 이렇게 써주시면 되는데요. 150 00:13:51,000 --> 00:13:54,000 그러면 여기에 들어있는 요소 151 00:13:54,000 --> 00:14:00,000 각각의 이 쌍들을 튜플의 형태로 묶어서 이렇게 반환을 해주고 있습니다. 152 00:14:00,000 --> 00:14:03,000 이 전체 요소는 리스트 형태로 반환을 하고 있고요. 153 00:14:03,000 --> 00:14:10,000 이 안에 있는 것, 코리아와 한국, 재팬과 일본, 차이나와 중국이 이렇게 묶여있다고 묶어줍니다. 154 00:14:10,000 --> 00:14:14,000 이렇게 되어서 반환이 되는 걸 확인할 수 있습니다. 155 00:14:14,000 --> 00:14:17,000 그래서 필요에 따라서 만약에 키 값이 필요한지 156 00:14:17,000 --> 00:14:21,000 Value가 필요한지 아니면 두 개의 모든 값이 필요한지에 따라서 157 00:14:21,000 --> 00:14:26,000 여기에 사용되는 메소드들을 사용할 수 있겠습니다. 158 00:14:26,000 --> 00:14:28,000 다음은 Set인데요. 159 00:14:28,000 --> 00:14:33,000 이번에는 Set의 빈 Set를 먼저 만들어 보도록 하겠습니다. 160 00:14:33,000 --> 00:14:38,000 저희 집 탑을 생성할 때는 중가루를 사용해서 생성을 한다고 했는데 161 00:14:38,000 --> 00:14:42,000 중요한 건 비어있는 Set도 중가루를 사용했었나요? 162 00:14:42,000 --> 00:14:44,000 아니었죠. 163 00:14:44,000 --> 00:14:48,000 중가루를 사용하게 되면 Dictionary가 생성이 되었습니다. 164 00:14:48,000 --> 00:14:52,000 그렇기 때문에 여기서는 중가루가 아니라 이렇게 할 수 있는데요. 165 00:14:52,000 --> 00:14:56,000 a라는 변수에다가 Set라고 적고요. 166 00:14:56,000 --> 00:14:59,000 가로 열고 가로 닫고 이렇게 해주시면 됩니다. 167 00:14:59,000 --> 00:15:02,000 Print a를 한번 해보고요. 168 00:15:02,000 --> 00:15:08,000 Print type, 이렇게 a를 넣어서 type도 확인해 보겠습니다. 169 00:15:08,000 --> 00:15:15,000 Set a라는 지금 집합 자료가 정확하게 출력이 되고 있고요. 170 00:15:15,000 --> 00:15:20,000 이거는 Set형이다 라고 정확히 반환을 해주고 있습니다. 171 00:15:20,000 --> 00:15:25,000 다음으로는 리스트를 집합으로 변형을 하는 겁니다. 172 00:15:25,000 --> 00:15:29,000 S1이라고 변수를 한번 만들어 볼게요. 173 00:15:29,000 --> 00:15:38,000 S1에다가 Set 그리고 1, 2, 3 이라고 요소를 한번 넣어 보겠습니다. 174 00:15:38,000 --> 00:15:44,000 그러면 S1에 있는 자료를 한번 프린트 해볼까요? 175 00:15:44,000 --> 00:15:54,000 그러면 이렇게 원래는 리스트였지만 이게 집합의 형태, Set의 형태로 변형이 되어서 반환이 되는 걸 볼 수 있습니다. 176 00:15:54,000 --> 00:15:58,000 문자열도 집합으로 변형할 수 있다고 했어요. 177 00:15:58,000 --> 00:16:00,000 어떻게 하는지 볼까요? 178 00:16:00,000 --> 00:16:10,000 S2라고 변수를 만들고 Set를 쓰고 그리고 이 안에다가 문자열 Hello를 넣어주겠습니다. 179 00:16:10,000 --> 00:16:21,000 Print S2를 해보고 그 다음 Print type도 확인해 보겠습니다. 180 00:16:21,000 --> 00:16:25,000 이렇게 지금 들어있는 내용, 순서가 없다고 했었잖아요. 181 00:16:25,000 --> 00:16:28,000 그래서 순서가 이렇게 섞여서 나오게 되는 겁니다. 182 00:16:28,000 --> 00:16:33,000 보시면 중복되는 내용은 제거가 된다고 했었죠? 183 00:16:33,000 --> 00:16:41,000 그렇기 때문에 OLEH, 그래서 L이 두 개였는데 하나만 나타나는 걸 볼 수 있습니다. 184 00:16:41,000 --> 00:16:45,000 교집합도 한번 다루어 보겠습니다. 185 00:16:45,000 --> 00:16:50,000 A에도 속하고 B에도 속하는 원소들을 골라놓은 집합이라고 했고 186 00:16:50,000 --> 00:16:53,000 그렇기 때문에 End 연산자 쓸 수 있다고 했는데요. 187 00:16:53,000 --> 00:17:03,000 먼저 Set A에다가는 10, 20, 30, 40, 50, 60을 넣고요. 188 00:17:03,000 --> 00:17:16,000 그 다음 Set B에다가는 50, 60, 70, 80, 90 그리고 100까지 넣어보겠습니다. 189 00:17:16,000 --> 00:17:27,000 여기서 Print 하는데 Set A 그리고 Set B 이렇게 작성을 하시면 190 00:17:27,000 --> 00:17:33,000 A에도 속하고 B에도 속하는 내용이 출력이 되는 건데요. 191 00:17:33,000 --> 00:17:35,000 한번 출력해 보겠습니다. 192 00:17:35,000 --> 00:17:41,000 그래서 중복되는 내용인 50과 60이 출력되는 걸 확인할 수 있습니다. 193 00:17:41,000 --> 00:17:44,000 여기서는 지금 Intersection도 한번 써볼게요. 194 00:17:44,000 --> 00:17:47,000 Set C에다가요. 195 00:17:47,000 --> 00:17:55,000 Set A, Intersection을 하는데 Set B의 내용을 가져다가 196 00:17:55,000 --> 00:17:59,000 Set A와 Set B의 교집합을 구하겠다. 197 00:17:59,000 --> 00:18:04,000 그리고 그 구해진 값을 Set C에다 넣겠다라는 문장입니다. 198 00:18:04,000 --> 00:18:11,000 여기에서 Set C에 들어간 내용 확인하기 위해서 이렇게 Print를 한번 해보겠습니다. 199 00:18:11,000 --> 00:18:19,000 이렇게 하시면 50과 60 똑같이 잘 리턴이 되는 걸 확인할 수 있습니다. 200 00:18:19,000 --> 00:18:22,000 다음으로는 합집합입니다. 201 00:18:22,000 --> 00:18:27,000 A에 속하거나 B에 속하는 원소들로 이루어진 집합이라고 했고요. 202 00:18:27,000 --> 00:18:33,000 여기서 Vertical Bar을 쓸 수 있고 Union 메소드를 쓸 수 있는데요. 203 00:18:33,000 --> 00:18:37,000 Vertical Bar라고 하면 엔터키 위에 있습니다. 204 00:18:37,000 --> 00:18:45,000 엔터키 바로 위에 있는데 이걸 Shift 키를 누르시고 이 버튼을 누르시면 생성이 됩니다. 205 00:18:45,000 --> 00:18:48,000 한번 저희가 먼저 써보도록 하겠습니다. 206 00:18:48,000 --> 00:18:52,000 위에 있는 숫자를 그대로 가져다가 쓸 거니까요. 207 00:18:52,000 --> 00:18:56,000 Set A와 Set B 그대로 복붙하시고요. 208 00:18:56,000 --> 00:19:06,000 Print Set A 그리고 Vertical Bar을 쓰신 다음에 Set B 이렇게 써주시면 209 00:19:06,000 --> 00:19:15,000 지금 A에도 속하고 B에도 속하는 모든 원소들로 이루어진 집합을 반환해줍니다. 210 00:19:15,000 --> 00:19:20,000 그리고 이거를 저희가 Union이라는 걸 가져다가 쓸 수 있다고 했죠. 211 00:19:20,000 --> 00:19:22,000 Union 메소드를 쓸 수 있는데 212 00:19:22,000 --> 00:19:29,000 Set C를 만든 다음에 Set A에 있는 내용 Union을 하겠다라고 적어주고 213 00:19:29,000 --> 00:19:36,000 Set B라고 적어주신 다음에 Print Set C를 해보겠습니다. 214 00:19:36,000 --> 00:19:40,000 이렇게 하면 결과가 똑같이 나오는 걸 확인할 수 있습니다. 215 00:19:40,000 --> 00:19:42,000 차집합이라고 하는데요. 216 00:19:42,000 --> 00:19:51,000 이번에는 이거는 한 집합에서 다른 집합의 요소를 뺀 새로운 집합을 생성하는 집합 연산이라고 했습니다. 217 00:19:51,000 --> 00:19:59,000 그래서 여기서도 마찬가지로 위에서 저희가 작성했던 숫자들 Set A와 Set B를 가져다 쓸 거고요. 218 00:19:59,000 --> 00:20:10,000 여기서는 먼저 저희가 프린트를 할 때 Set A에서 Set B를 뺀 경우와 219 00:20:10,000 --> 00:20:18,000 Print Set B에서 Set A를 뺀 경우 이렇게 두 가지로 나누어서 보겠습니다. 220 00:20:18,000 --> 00:20:25,000 그래서 40, 10, 20, 30, 80, 90, 100, 70 이렇게 각각 나타나는 걸 확인할 수 있고요. 221 00:20:25,000 --> 00:20:33,000 여기서도 마찬가지로 Set C를 한번 만들어서 저기 보이시는 Difference를 가져다가 한번 써보도록 하겠습니다. 222 00:20:33,000 --> 00:20:45,000 Set C에다가 Set A.Difference를 해서 Set B에서 Difference를 하겠다. 223 00:20:45,000 --> 00:20:52,000 차집합을 구하겠다라고 이렇게 적은 다음에 Print Set C를 하겠습니다. 224 00:20:52,000 --> 00:20:59,000 그러면 이렇게 A에서 B를 뺀 경우와 똑같이 나타나는 걸 확인할 수 있고요. 225 00:20:59,000 --> 00:21:16,000 자 반대로 Set C에다가 Set B.Difference를 해서 Set A 이렇게 적으시면 Print Set C 해볼게요. 226 00:21:16,000 --> 00:21:25,000 이러면 여기 두 번째 마이너스 연산 했던 것처럼 B에서 A를 뺐던 것처럼 이렇게 같은 결과가 나타나는 걸 확인할 수 있습니다. 227 00:21:25,000 --> 00:21:32,000 자 다음은 집합 레서드 저희가 사용할 수 있는 것들 Add와 Discard, Remove 이렇게 있었는데요. 228 00:21:32,000 --> 00:21:35,000 한번 저희가 이거를 살펴보도록 할게요. 229 00:21:35,000 --> 00:21:40,000 자 Fruits라고 하는 곳이에요. 230 00:21:40,000 --> 00:21:51,000 이번에는 포도, 딸기 이렇게 두 가지만 넣을게요. 231 00:21:51,000 --> 00:21:55,000 그리고 나서 Fruits에 추가할 거예요. 232 00:21:55,000 --> 00:22:01,000 Fruits에 Add이라고 쓴 다음에 추가할 내용을 적어주시면 되는데요. 233 00:22:01,000 --> 00:22:12,000 수박을 추가하겠다라고 이렇게 적어주신 다음에 Print Fruits를 출력하겠다라고 하시면 234 00:22:12,000 --> 00:22:18,000 포도, 딸기, 수박 이렇게 세 가지 요소가 들어있는 걸 볼 수 있습니다. 235 00:22:18,000 --> 00:22:23,000 자 다음에는 지금 Discard를 한번 사용을 해보겠습니다. 236 00:22:23,000 --> 00:22:28,000 자 Fruits라고 하는 곳에요. 237 00:22:28,000 --> 00:22:42,000 먼저 포도, 딸기, 수박 이렇게 세 가지 요소를 넣고요. 238 00:22:42,000 --> 00:22:48,000 자 Fruits에서 Discard를 할 거예요 이렇게 적어줍니다. 239 00:22:48,000 --> 00:22:55,000 자 제거를 할 건데 수박을 제거할 거예요 라고 씁니다. 240 00:22:55,000 --> 00:22:59,000 그 다음 출력을 한번 해볼까요? 241 00:22:59,000 --> 00:23:06,000 Fruits를 출력을 해보면 이렇게 수박이 제거가 되고 포도와 딸기가 나타나는 걸 볼 수 있습니다. 242 00:23:06,000 --> 00:23:12,000 자 Remove 같은 경우에도 마찬가지로 제거하는 데 사용할 수 있는데요. 243 00:23:15,000 --> 00:23:29,000 Fruits에서 포도, 딸기, 수박 이렇게 세 가지가 들어있고요. 244 00:23:30,000 --> 00:23:38,000 Fruits에서 Remove를 하는데 이번에는 포도 한번 지워볼까요? 245 00:23:38,000 --> 00:23:41,000 포도를 지워보겠습니다. 246 00:23:41,000 --> 00:23:47,000 Print Fruits를 프린트 해보겠습니다. 247 00:23:47,000 --> 00:23:51,000 이렇게 하면 딸기와 수박만 남아있는 거 보실 수 있으시죠? 248 00:23:51,000 --> 00:24:00,000 그래서 추가할 때는 Add를 그리고 제거할 때는 Discard와 Remove를 쓸 수 있다는 점 구분하시면 되겠습니다. 249 00:24:00,000 --> 00:24:06,000 여기서 한 가지 더 보여드릴 것은 Discard와 Remove의 차이인데요. 250 00:24:06,000 --> 00:24:10,000 왜냐하면 Discard도 제거가 되고 Remove도 제거가 되는 거였어요. 251 00:24:10,000 --> 00:24:15,000 도대체 어떤 차이점이 있길래 이렇게 두 가지가 존재하는 걸까요? 252 00:24:15,000 --> 00:24:17,000 저희가 하나씩 비교를 해볼게요. 253 00:24:17,000 --> 00:24:20,000 Discard를 먼저 한번 써보도록 하겠습니다. 254 00:24:20,000 --> 00:24:25,000 위에 지금 Fruits에는 현재 딸기와 수박만 남아있는 상태인 거죠. 255 00:24:25,000 --> 00:24:27,000 Fruits를 가져다가 써볼게요. 256 00:24:27,000 --> 00:24:36,000 Fruits에서 Discard를 할 때 없는 내용인 키위를 제거를 한번 해보도록 하겠습니다. 257 00:24:36,000 --> 00:24:45,000 그리고 Print Fruits를 프린트하겠다 이렇게 적어주시면 258 00:24:46,000 --> 00:24:53,000 없는 내용을 제거한다고 해도 아무 문제가 발생하지 않고 있죠. 259 00:24:53,000 --> 00:24:55,000 다음 하나 더 해보겠습니다. 260 00:24:55,000 --> 00:25:02,000 여기 있는 거 복붙해서 지금 Discard 대신에 Remove를 쓰는 거죠. 261 00:25:02,000 --> 00:25:06,000 Remove로 바꿔볼게요. 262 00:25:06,000 --> 00:25:13,000 우리가 이거를 Remove를 한다고 하면 이렇게 문제가 발생하게 됩니다. 263 00:25:13,000 --> 00:25:20,000 존재 여부를 모를 때 안전하게 삭제하고 싶다라고 하면 이렇게 Discard를 쓰시면 되고요. 264 00:25:20,000 --> 00:25:27,000 반드시 해당 값이 있어야만 삭제해야 한다라고 하는 경우에는 Remove를 쓰시면 됩니다. 265 00:25:27,000 --> 00:25:33,000 저희 오늘 이렇게 Dictionary와 Zip up 두 가지 컬렉션에 대해서 살펴보았는데요. 266 00:25:33,000 --> 00:25:39,000 두 가지 모두 중괄호를 사용했지만 들어있는 요소의 모양이 달랐었죠. 267 00:25:39,000 --> 00:25:48,000 이 부분 잘 기억하시고 비어있는 Dictionary와 비어있는 세트를 생성하는 방법 잘 기억해 두시면 좋겠습니다.

11_30일이면 비전공자도 합격하는 PCCE 완벽 코스!


딕셔너리 기본 개념과 생성·조회

  • 딕셔너리: 순서가 아닌 키(key)를 통해 값(value)을 조회하는 컬렉션 자료형
  • 빈 딕셔너리 생성: a = {} / type(a) → dict
  • 딕셔너리 리터럴 예시:
    • myDict = {"name": "kim", "age": 25, "city": "Seoul"}
  • 값 조회: myDict["name"], myDict["age"]처럼 대괄호 안에 키를 넣어 접근

딕셔너리 요소 추가와 값 수정

  • 새 딕셔너리와 쌍 추가:
    • a = {1: "a"}
    • a[2] = "b" → 키 2, 값 "b" 추가
  • 리스트를 값으로 추가:
    • a[3] = [1, 2, 3] → 값에 리스트 사용 가능
  • 기존 값 수정:
    • myDict = {"name": "Alice", "age": 25, "city": "New York"}
    • myDict["age"] = 26 → age 값 변경

딕셔너리 값 추가·병합: update

  • 기본 구조:
    • a = {"a": 1, "b": 2}
    • b = {"b": 3, "c": 4}
    • a.update(b)
  • 동작 결과:
    • 겹치는 키 "b"의 값은 2 → 3으로 덮어씀
    • 새로운 키 "c"는 추가됨 → {"a": 1, "b": 3, "c": 4}

딕셔너리 요소·전체 삭제

  • 특정 키의 쌍 삭제 (del):
    • del myDict["city"] → 해당 키-값 쌍만 제거
  • 딕셔너리 전체 삭제 (del):
    • del myDict 후 print(myDict) → 변수 자체가 없어져 에러 발생
  • 모든 요소만 비우기 (clear):
    • myDict.clear() → 빈 딕셔너리 {}가 됨
  • pop으로 삭제 + 반환:
    • fruits = {"Apple": "사과", "Banana": "바나나", "Kiwi": "키위"}
    • removed = fruits.pop("Banana")
    • removed에는 "바나나" 저장, fruits에는 나머지 두 쌍만 남음

딕셔너리 키·값·아이템 추출

  • 예시 딕셔너리:
    • nations = {"Korea": "한국", "Japan": "일본", "China": "중국"}
  • 키 목록 가져오기:
    • nations.keys() → 키들의 뷰 객체 (리스트처럼 순회 가능)
  • 값 목록 가져오기:
    • nations.values() → 값들의 뷰 객체
  • 키-값 쌍 가져오기:
    • nations.items() → 각 쌍이 튜플 형태 (key, value)로 묶인 리스트 유사 구조

집합 Set 기본 생성과 변환

  • 빈 집합 생성:
    • a = set() → {}는 빈 딕셔너리이므로 주의
  • 리스트 → 집합:
    • s1 = set([1, 2, 3]) → {1, 2, 3}
  • 문자열 → 집합:
    • s2 = set("Hello") → 순서 없음, 중복 제거: 예) {"H", "e", "l", "o"}
    • 집합은 순서가 없고, 중복을 허용하지 않음

집합 연산 1: 교집합

  • 예시 집합:
    • setA = {10, 20, 30, 40, 50, 60}
    • setB = {50, 60, 70, 80, 90, 100}
  • & 연산자:
    • setA & setB → 둘 다 포함하는 원소: {50, 60}
  • intersection 메서드:
    • setC = setA.intersection(setB)
    • setC 결과도 {50, 60}으로 동일

집합 연산 2: 합집합

  • 합집합 정의: A 또는 B에 속하는 모든 원소들의 집합
  • | 연산자 사용:
    • setA | setB → 두 집합의 모든 원소를 중복 없이 반환
  • union 메서드:
    • setC = setA.union(setB)
    • setC 결과는 | 연산과 동일

집합 연산 3: 차집합

  • 정의: 한 집합에서 다른 집합의 요소를 제거한 새로운 집합
  • 연산자 방식:
    • setA - setB → A에는 있고 B에는 없는 원소
    • setB - setA → B에는 있고 A에는 없는 원소
  • difference 메서드:
    • setC = setA.difference(setB) → setA - setB와 동일
    • setC = setB.difference(setA) → setB - setA와 동일

집합 메서드: add, discard, remove

  • 추가 (add):
    • fruits = {"포도", "딸기"}
    • fruits.add("수박") → 포도, 딸기, 수박
  • 삭제 1 – discard:
    • fruits.discard("수박") → 존재하면 삭제, 없으면 아무 일도 일어나지 않음
    • 없는 값 "키위"를 discard해도 에러 없이 그대로 유지
  • 삭제 2 – remove:
    • fruits.remove("포도") → 존재하면 삭제
    • 없는 값 "키위"를 remove하면 에러 발생
  • 정리:
    • 존재 여부를 모를 때 안전하게 제거: discard 사용
    • 반드시 존재해야 하고, 없을 경우 에러로 확인하고 싶을 때: remove 사용

딕셔너리와 집합 정리 및 주의점

  • 공통점: 둘 다 중괄호를 사용하지만 구조와 의미가 다름
  • 딕셔너리: {key: value} 형태, 키-값 쌍 저장
  • 집합: {값1, 값2, ...} 형태, 값만 저장, 순서 없음·중복 제거
  • 빈 컬렉션 생성 구분:
    • 빈 딕셔너리: {}
    • 빈 집합: set() (중괄호 X)
  • 비어있는 딕셔너리·집합 생성 방식과 각 연산/메서드 패턴을 구분해 기억하는 것이 중요함
KEG
01_블렌더 입문자를 위한 SD 캐릭터 만들기
학습 01_블렌더 입문자를 위한 SD 캐릭터 만들기   완료 콘텐츠
영상 2025_blender3d_08.mp4
02_누구나 쉽게! 파이썬 베이직
학습 02_누구나 쉽게! 파이썬 베이직   완료 콘텐츠
영상 2024_PYTHON BASIC_10.mp4
03_기초부터 실무까지! 자바스크립트 (ES6) 마스터하기
학습 03_기초부터 실무까지! 자바스크립트 (ES6) 마스터하기   완료 콘텐츠
영상 2025_javascript_01.mp4
04_파이썬으로 배우는 데이터 분석 기초
학습 04_파이썬으로 배우는 데이터 분석 기초   완료 콘텐츠
영상 2024_DataAnalysis1_07.mp4
05_파이썬으로 배우는 데이터 분석 심화  AI & 머신러닝
학습 05_파이썬으로 배우는 데이터 분석 심화 AI & 머신러닝   완료 콘텐츠
영상 2024_DataAnalysis2_11.mp4
06_코딩이 처음이라도 괜찮아, 엔트리로 시작하자! part.1
학습 06_코딩이 처음이라도 괜찮아, 엔트리로 시작하자! part.1   완료 콘텐츠
영상 2024_Entry_6-5.mp4
07_코딩이 처음이라도 괜찮아, 엔트리로 시작하자! part.2
학습 07_코딩이 처음이라도 괜찮아, 엔트리로 시작하자! part.2   완료 콘텐츠
영상 2024_Entry_master_13_05.mp4
08_피부미용사 필기, 무조건 합격하는 완벽 로드맵!
학습 08_피부미용사 필기, 무조건 합격하는 완벽 로드맵!   완료 콘텐츠
영상 20250408_국가자격증_미용사(피부)_김효진_8회차_0428종편_unit3.mp4
09_Microsoft 공식 자격증 MCF AI-900
학습 09_Microsoft 공식 자격증 MCF AI-900
영상 MCF AI-900_1-1.mp4
10_Unity 공식 자격증 UCU Programmer
학습 10_Unity 공식 자격증 UCU Programmer
영상 UCU programmer_1-3.mp4
11_30일이면 비전공자도 합격하는 PCCE 완벽 코스!
학습 11_30일이면 비전공자도 합격하는 PCCE 완벽 코스!   현재 콘텐츠
영상 PCCE_06-4.mp4
12_Adobe 공식 자격증 ACP After Effects
학습 12_Adobe 공식 자격증 ACP After Effects
영상 ACP_After Effects_01.mp4
13_영상에 감정을 입히는 기술, 컬러그레이딩  다빈치 리졸브로 배우는 실무 클래스_입문 편
학습 13_영상에 감정을 입히는 기술, 컬러그레이딩 다빈치 리졸브로 배우는 실무 클래스_입문 편
영상 colorgrading 01.mp4
14_하루 20분! 왕초보도 성공하는 '아이패드 드로잉 X 굿즈 수익화'
학습 14_하루 20분! 왕초보도 성공하는 '아이패드 드로잉 X 굿즈 수익화'
영상 3-3_v2.mp4
15_왕초보도 따라하는 완성도 최강의 버츄얼캐릭터
학습 15_왕초보도 따라하는 완성도 최강의 버츄얼캐릭터
영상 004Vtuber 디자인 01.기획서 종편 FHD 0616.mp4
16_실무에 바로 쓰는 SketchUp & Enscape 건축 모델링
학습 16_실무에 바로 쓰는 SketchUp & Enscape 건축 모델링
영상 250701_KKJ_lecture_09_유닛_01_자막.mp4
01 ACP Illustrator CC2023
학습 01 ACP Illustrator CC2023   완료 콘텐츠
영상 01 ACP Illustrator CC2023.mp4
02 ACP Premiere pro CC2023
학습 02 ACP Premiere pro CC2023
영상 02 ACP Premiere pro CC2023.mp4
03 ACP Photoshop CC2023
학습 03 ACP Photoshop CC2023   완료 콘텐츠
영상 03 ACP Photoshop CC2023.mp4
04 ACP Indesign CC2023
학습 04 ACP Indesign CC2023
영상 04 ACP Indesign CC2023.mp4
05 멘토씨리즈 포토웍스
학습 05 멘토씨리즈 포토웍스   완료 콘텐츠
영상 05 멘토씨리즈 포토웍스.mp4
06 확실하게 마스터하자! 디테일 일러스트
학습 06 확실하게 마스터하자! 디테일 일러스트   완료 콘텐츠
영상 06 확실하게 마스터하자! 디테일 일러스트.mp4
07 인포그래픽, 정보가 한눈에 보이는 Visual thinking
학습 07 인포그래픽, 정보가 한눈에 보이는 Visual thinking
영상 07 인포그래픽, 정보가 한눈에 보이는 Visual thinking.MP4
08 웹툰제작
학습 08 웹툰제작   완료 콘텐츠
영상 08 웹툰제작.mp4
09 기초부터 다져보는 누크
학습 09 기초부터 다져보는 누크
영상 09 기초부터 다져보는 누크.mp4
10 누크의 3D Workflow
학습 10 누크의 3D Workflow
영상 10 누크의 3D Workflow.mp4
11 기초부터 시작하는 MAYA 렌더링
학습 11 기초부터 시작하는 MAYA 렌더링
영상 11 기초부터 시작하는 MAYA 렌더링.mp4
12 기초부터 시작하는 MAYA 모델링
학습 12 기초부터 시작하는 MAYA 모델링
영상 12 기초부터 시작하는 MAYA 모델링.mp4
13 기초부터 시작하는 MAYA 애니메이션
학습 13 기초부터 시작하는 MAYA 애니메이션
영상 13 기초부터 시작하는 MAYA 애니메이션.mp4
15 Blender로 인테리어 영상 제작하기
학습 15 Blender로 인테리어 영상 제작하기
영상 15 Blender로 인테리어 영상 제작하기.mp4
16 멘토씨리즈 자바
학습 16 멘토씨리즈 자바
영상 16 멘토씨리즈 자바.mp4
17 스크래치로 공부하는 프로그래밍 기초
학습 17 스크래치로 공부하는 프로그래밍 기초
영상 17 스크래치로 공부하는 프로그래밍 기초.mp4
20 누구나 쉽게! Git&GitHub
학습 20 누구나 쉽게! Git&GitHub   완료 콘텐츠
영상 20 누구나 쉽게! Git&GitHub.mp4
23 디지털 드로잉 기본기 완전판
학습 23 디지털 드로잉 기본기 완전판
영상 23 디지털 드로잉 기본기 완전판.mp4
24 그림스타일에 딱 맞는 인체 연구
학습 24 그림스타일에 딱 맞는 인체 연구
영상 24 그림스타일에 딱 맞는 인체 연구.mp4
25 뱀파이어 서바이벌로 배우는 언리얼 C++
학습 25 뱀파이어 서바이벌로 배우는 언리얼 C++
영상 25 뱀파이어 서바이벌로 배우는 언리얼 C++.mp4
26 하나하나 꼼꼼히! 웹툰 드로잉 네 걸음
학습 26 하나하나 꼼꼼히! 웹툰 드로잉 네 걸음
영상 26 하나하나 꼼꼼히! 웹툰 드로잉 네 걸음.mp4
27 하나하나 꼼꼼히! 웹툰 드로잉 세 걸음
학습 27 하나하나 꼼꼼히! 웹툰 드로잉 세 걸음
영상 27 하나하나 꼼꼼히! 웹툰 드로잉 세 걸음.mp4
28 하나하나 꼼꼼히! 웹툰 드로잉 두 걸음
학습 28 하나하나 꼼꼼히! 웹툰 드로잉 두 걸음
영상 28 하나하나 꼼꼼히! 웹툰 드로잉 두 걸음.mp4
29 하나하나 꼼꼼히! 웹툰 드로잉 첫걸음
학습 29 하나하나 꼼꼼히! 웹툰 드로잉 첫걸음
영상 29 하나하나 꼼꼼히! 웹툰 드로잉 첫걸음.mp4
30 쉽고 재밌게 배우는 모션그래픽_애프터이펙트1
학습 30 쉽고 재밌게 배우는 모션그래픽_애프터이펙트1
영상 30 쉽고 재밌게 배우는 모션그래픽_애프터이펙트1.mp4
31 쉽고 재밌게 배우는 모션그래픽_애프터이펙트2
학습 31 쉽고 재밌게 배우는 모션그래픽_애프터이펙트2
영상 31 쉽고 재밌게 배우는 모션그래픽_애프터이펙트2.mp4
32 기초부터 심화까지 한 번에 배우는 영상편집_프리미어 프로
학습 32 기초부터 심화까지 한 번에 배우는 영상편집_프리미어 프로   완료 콘텐츠
영상 32 기초부터 심화까지 한 번에 배우는 영상편집_프리미어 프로.mp4
33 웹소설 작가 도전하기
학습 33 웹소설 작가 도전하기
영상 33 웹소설 작가 도전하기.mp4
34 올인원 DBMS!! 설계부터 운영까지!!
학습 34 올인원 DBMS!! 설계부터 운영까지!!
영상 34 올인원 DBMS!! 설계부터 운영까지!!.mp4