전체 글
-
[모두의 알고리즘] 자료구조공부일기/알고리즘 2020. 8. 20. 22:54
자료구조 회문찾기(큐와 스택) 큐: 줄서기. FIFO(First In First Out) 인큐와 디큐: 인큐는 자료를 집어 넣는 동작이고 디큐는 자료를 빼내는 동작. 스택: 접시 꺼내기. LIFO(Last In First Out) 뷔페에서 맨 아래 있는 접시를 꺼내려면 맨 위에 있는 접시부터 하나하나 꺼내야 한다. 푸쉬, 팝: 푸쉬는 스택에 자료를 집어 넣는 동작, 팝은 자료를 빼는 동작 큐와 스택은 자료를 일렬로 보관하는 특징이 있다. 리스트를 사용해 큐와 스택을 만들어 볼 수 있다. 큐) qu = [] : 빈 리스트를 만들고 qu.append(x) : 리스트의 맨 뒤에 x를 추가한다 x = qu.pop(0) 리스트의 맨 앞에서 자료를 꺼낸다. 스택) st = [] : 마찬가지로 빈 리스트를 생성 st..
-
[생활코딩 - 머신러닝 야학] 머신러닝1 day5, 6공부일기/머신러닝 야학 2020. 8. 19. 22:40
1 - 19. 군집화 군집화(clustering)는 비슷한 것들을 찾아서 그룹을 만드는 것. 분류와 혼동될 수 있으나 분류보다는 포괄적인 개념이다. 어떤 대상들을 구분해서 그룹을 만드는 것이 군집화라면 분류는 어떤 대상이 어떤 그룹에 속하는지 판단하는 것이다. 예를 들어 전 국민에게 물류서비스를 제공해야 하고, 100개의 물류센터를 만든다고 가정할 때, 전 국민의 지도상 위치(위도와 경도)를 참조해 적절히 100개의 그룹으로 묶어야 한다. 이때 이 그룹을 군집(cluster)이라고 하며 이런 군집을 만드는 것을 군집화(clustering)라고 한다. 묶어야 할 그룹들이 많아지고, 참고해야 할 특징들(위에서는 위도와 경도)이 많아진다면 자연스럽게 인간의 계산 범위를 넘어서고, 컴퓨터에게 계산을 시키는 게 ..
-
NAVER 부스트코스 CS50 - 6. 자료구조공부일기/CS50 2020. 8. 19. 00:34
6 자료구조 6-1 malloc과 포인터 복습 포인터 초기화: 포인터 변수에 malloc으로 메모리영역을 할당해 주는 것 초기화 되지 않은 포인터는 프로그램 어딘가를 임의로 가리키고 있을 수 있고, 오류를 발생시킬 수 있다. 6-2 배열의 크기 조정하기 일정한 크기의 배열이 주어졌을 때, 그 크기를 키우려면 새로운 공간에 큰 크기의 메모리를 다시 할당해 기존 배열의 값들을 하나씩 옮겨줘야 한다. 코드로 나타내 보게 되면, #include #include int main(void) { //int 자료형 3개로 이루어진 list 라는 포인터를 선언하고 메모리 할당 int *list = malloc(3 * sizeof(int)); if (list == NULL){ return 1; } list[0] = 1; ..
-
[생활코딩 - 머신러닝 야학] 머신러닝1 day3, 4공부일기/머신러닝 야학 2020. 8. 18. 22:38
1 - 11. 직업의 시작 데이터 자체는 현실이 아니지만 현실을 데이터로 표현할 수 있다면 컴퓨터로 많은 양의 데이터를 처리할 수 있게 되고 데 이터를 처리하는 방법 중의 하나가 머신러닝이다. 데이터 산업은 데이터 과학과 데이터 공학으로 분류할 수 있다. 데이터 과학은 데이터를 만들고 만들어진 데이터를 이용하는 일이라고 할 수 있고, 데이터 공학은 데이터를 다루는 도구를 만들고 관리하는 일이라고 할 수 있다. 1 - 12. 표 데이터 산업을 입문하는데 있어 표를 이해하는 것은 굉장히 중요한 일이다. 행은 개체, 관측치, 기록, 사례, 경우 등으로도 사용되며 열은 특성, 속성, 변수, 필드와 같은 표현으로도 사용된다. 1 - 13. 독립변수와 종속변수 표에서 의미있는 데이터를 뽑아낼 수 있어야 한다. 통찰..
-
[모두의 알고리즘] 탐색과 정렬(2)공부일기/알고리즘 2020. 8. 18. 01:33
탐색과 정렬 병합정렬 / O(n*log n) 재귀호출을 이용한 방법과 일반적인 방법이 있다. 재귀호출을 이용한 방법 리스트의 중앙값을 mid로 두고 g1은 mid의 왼쪽 값들, g2는 mid의 오른쪽 값들로 설정한다. g1과 g2에 값이 있는 동안 g1이 각 배열의 첫 번째 값들을 비교하며 작은 것을 결과 리스트에 추가한다. g1과 g2 둘 중에 한쪽 값만 남게 되는 경우 순서대로 결과 리스트에 추가하며 정렬한다. 일반적인 방법 퀵정렬 기준과 비교해서 그룹을 나눈 다음 각각 재귀 호출해 합치는 방식 재귀호출을 이용한 방법 기준을 맨 끝 인덱스 값으로 잡고 리스트의 값이 기준보다 작으면 g1, 크면 g2에 추가한다. 각각의 리스트에서 리스트 길이가 1이 될때까지 실행하므로 g1(기준 값 보다 작은 리스트)..
-
[생활코딩 - 머신러닝 야학] 머신러닝1 day2공부일기/머신러닝 야학 2020. 8. 17. 19:41
1 - 7. 머신러닝머신 머신러닝을 이용하지 않으면 그저 신기한 것에 불과한다. 학습자가 아닌 공학자의 마인드로 유용한 것에 도전을 해야 한다. 여기서 저번 시간에 실습해본 teachablemachine 모델을 갖고 스크래치의 형식으로 코딩을 했다. 어플이 만들어지면 이런 느낌이겠구나하는 것을 웹을 통해 간접적으로 체험할 수 있었다. 1 - 8. 애플리케이션과 프로그램 애플리케이션은 어떤 기능을 부품으로 해서 만든 완제품이라고 볼 수 있다. 1 - 7 에서 만들어 본 애플리케이션은 머신러닝의 모델이라는 부품을 응요해서 만든 소프트웨어이다. 머신러닝과 같은 기술이 그런 것 처럼 이제는 인류에게 없던 부품(머신러닝 모델)을 쉽고 빠르고 무료로 사용할 수 있게 됐고 부품을 잘 활용하면 원리를 몰라도 부품의 능..
-
NAVER 부스트코스 CS50 - 5. 메모리공부일기/CS50 2020. 8. 17. 17:27
5 메모리 5-1 메모리 주소 컴퓨터 과학에서는 숫자를 10진수나 2진수 대신 16진수로 표현하는 경우가 많다. 데이터를 처리 할 때 장점이 있기 때문인데, 0 1 2 3 4 5 6 7 8 9 a b c d e f 의 순서로 표현한다. 16진수를 표현 할 땐 모든 수 앞에 0x를 붙인다. C에서는 변수의 메모리상 주소를 받기 위해 ‘&’ 연산자를 사용할 수 있다. 반대로 ‘*’를 사용하면 그 메모리 주소에 있는 실제 값을 얻을 수 있다. 5-2 포인터 * 연산자는 메모리 주소에 있는 값을 받아올 수 있게 하는데 이를 이용해 포인터 역할을 하는 변수를 선언할 수 있다. 여기서 *p는 포인터 변수이다. 이 포인터 변수에 n의 주소를 받게 되고 int는 포인터가 가리키는 값이 int라는 뜻이다. 5-3 문자열..
-
[생활코딩 - 머신러닝 야학] 머신러닝1 day1공부일기/머신러닝 야학 2020. 8. 16. 14:00
유튜브에 '생활코딩'이라는 채널이 있다. 아마 프로그래밍을 공부하는 분들이라면 한 번씩은 다 들어봤을 법한 유명한 채널이다. 8/13일부터 구글과 생활코딩 채널, 그리고 오픈튜토리얼스가 만든 '머신러닝 야학'이라는 컨텐츠를 진행한다고 해서 참가신청을 하고, 기다리고 있었다. 그리고 오늘부터 시작하게 됐고, 하루 늦게 시작했지만 매일매일 내가 배운 것들을 정리하기 위해 블로그 글로 남긴다. 1 - 2. 머신러닝이란? 결정 = 비교+ 선택. 무엇이 좋은 무엇이 더 나쁜지를 파악할 수 있다면 선택은 기계적인 게 된다. 비교가 쉽지 않은 경우가 많다. 이럴 때 특히 결정을 내리기는 더욱 어려워지게 된다. 인류는 좋은 결정을 하기 위해 몸부림을 쳐왔고 이를 위해 숫자와 같은 도구를 만들어 냈다. 이 도구들도 점점..