초보개발자14 IM8일차 TIL ( Time complexity) 오늘은 그래프와 트리, 이진탐색트리 과제를 마무리 짓고 시간복잡도(time complexity)에 관해 공부하는 시간이었다. 시간 복잡도란 문제를 해결하는 데 걸리는 시간과 입력의 함수관계를 말한다. 시간복잡도는 기본적으로 Big-o 표기법을 사용한다. O(n) , O(log n), O(n^2), O(C^n), O(n!) 등으로 나타낼 수 있다. 시간 복잡도는 기본적인 연산을 수행하는데에 어떤 고정된 시간이 걸릴 때, 알고리즘에 의해서 수행되는 기본 연산의 개수를 세어 예측할 수 있다. 위의 사진과 같이 O(1)이나 O(log n) 처럼 평평하게 나오는 곡선을 그리는 경우 문제 증가에 따라 걸리는 시간이 낮다고 할 수 있다. 반대로 O(n!)과 같이 위로 올라가는 곡선을 그리는 경우 문제가 조금만 증가 .. 2020. 5. 7. IM 7일차 TIL ( graph, tree & Binary Search Tree) Graph 그래프는 정점(Vertex)와 각 정점을 연결하는 변(Edge)로 나누어 진다. 변은 해당 정점들을 연결하여 자료를 탐색할 수 있게 만들어 준다. 변에는 방향성이 있는 변이 있고, 방향성이 없는 변이 있다. 방향성이 있는 변을 가지는 그래프를 유향 그래프라고 하며, 정점에서 해당 변의 방향만을 따라서 연결된 정점으로 이동 가능하다. 방향성이 없는 변을 가지는 그래프는 무방향 그래프라고 하며, 연결된 정점들 끼리 왕래할 수 있다. 각 정점들을 서로 연결하여 순환할 수 있는 것이 가장 큰 특징이다. 그래프의 구조는 SNS에서 가장 많이 사용되며, 통신망이나 친구관계등을 모델링할 수 있다. Tree 트리구조는 그래프의 자료구조에 속하지만 그래프와는 다른 특징을 가진다. 그래프는 순환 구조를 가질 수.. 2020. 5. 7. IM 6일차 초보개발자 TIL(Linked list & Hash table) DATA 구조에서 linked list 와 hash table에 대해서 배우는 날이었다, stack과 queue에 비해서는 조금 더 복잡한 형태의 DATA구조 였다. Linked list linked list(연결 리스트)는 각 노드(Node)가 데이터와 포인터를 가지고 한 줄로 연결되어 있는 방식으로 데이터를 저장하는 DATA구조이다. 데이터를 담고 있는 노드들이 연결되어 있는데, 노드의 포인터가 다음이나 이전의 노드와의 연결을 담당하게 된다. 위 그림과 같이 노드는 자기자신을 가리키는 원소와 다음 노드를 가리키는 포인터로 구성되어 있다. 연속되는 노드들은 포인터로 연결되어 있으며, 마지막 항목은 Null을 가리킨다. 또한, 프로그램이 수행하는 동안 크기가 커지거나 작아질 수 있으며, 메모리 공간을 낭.. 2020. 5. 5. IM5일차 TIL (Stack & Queue) 오늘은 데이터 구조에 대해서 배우는 시간이었다. 이번 시간에 배운 것은 stack 과 queue 였다. stack은 LIFO: last in, first out 의 개념으로 정보가 위로 차곡차곡 쌓이며 쌓은 이후 가장 위에 쌓였던 정보가 우선적으로 나오는 형태이다. 접시를 쌓는 거나, 하노이의 탑의 구조를 생각하면 이해하기 쉽다. stack method가 존재 하며 해당 메소드는 다음과 같다. pop — Pulls (removes) the element out of the stack. The location is specified by the pointer push — Pushes (inserts) the element in the stack. The location is specified by the .. 2020. 5. 1. IM 3일차 초보개발자 TIL (Linting & Testing) 3일차 Pair programming 을 진행하면서 고딩과정에서 Liting 과 testing 과정이 필요하다. 우선 testing은 작성한 코드가 의도대로 작동하는지, 또는 결함이나 문제가 없는지 확인하는 과정이다. 이번 과정에서 testing을 위해 jest를 사용하는 방법을 배웠다. npm을 사용하는 경우 터미널에서 npm install --save-dev jest 입력하여 설치할 수 있다. 해당 폴더에서 package.json 파일에 { "scripts": { "test": "jest" } } 라고 적혀 있으면 설치가 완료되었다는 의미이다. 해당 js파일을 확인하고 test.js파일에 작성된 코딩 작성 요구사항을 확인한다. js파일을 수정하고 해당 레포지토리와 관련된 testing을 진행하기 위해.. 2020. 4. 29. IM 1일차 초보개발자 PRE course를 통과하고 드디어 Immersive 코스를 본격적으로 시작하는 하루였다. OT 를 하면서 Immersive 코스에서는 어떤 것을 배우고 , 무엇이 중요한지를 배울 수 있었다. 그 첫걸음으로 github에서 Pair programming을 어떻게 진행할 것인지에 대해 알려주었다. github에서 fork 한 이후 pair의 url주소를 연결하여 협업을 진행하는 방식이었다. 우선 터미널에서 나의 repo에서 local로 git clone 을 진행 한 이후 git remote add pair git remote -v 를 통해 페어의 url에 연결한다. 그리고 새로운 파일을 만들고 수정 후 git add git commit -m git push origin master 를 진행 하여 pair.. 2020. 4. 28. git 개발자 도구 사용법 git은 가장 많이 사용되는 분산형 버전 관리 시스템(VCS)으로 프로그래밍을 진행하면서 잘못된 부분을 고치고 변경하기 위해 필요로 하는 프로그램이다. https://git-scm.com/ Git git-scm.com git 홈페이지에서 윈도우 ,맥os, 리눅스 버전의 git을 다운 받을 수 있다. 맥 os를 이용하는 경우에는 내장되어있는 터미널을 통해서 간편하게 설치할 수 있다. 터미널에서 git이라고 입력 하면 바로 설치가 가능하다. command line command line은 표준 입출력 장치를 이용하여 입력과 출력을 나타낸다. 마우스나 UI 컴포넌트 대신 unix/linux의 command line 명령어를 사용한다. 장점으로는 빠르고 강력하며, 접근성이 좋다. command line명령어는 .. 2020. 4. 23. 16일차 초보개발자 TIL 지난 시간 동안 실제 앱이나 웹이 작동되는 형태를 구현하기 위한 twitter 과제 진행하였다. 과제 이후 심화과정으로 넘어가 callback에 대한 용어 이해 부분을 익히는 시간을 가졌다. 우선 twitter과제를 통해서 실제 앱이나 웹이 어떠한 방식으로 작동되는지에 대한 부분을 익히는 시간이었다. 단순하게 user와 comment를 입력하여 화면에 나타내는 것은 물론이고, 화면상의 comment에 대한 새로고침 버튼을 눌렀을때 DATA에 저장되어 있는 내용을 실시간으로 표시하여 나타내게 하는 방법을 배웠다. 거기다가 같은 이름의 user가 작성한 comment를 확인하기 위해 user를 클릭하였을떄 해당 user만 작성한 글이 나오도록 나타내고, 다시 되돌아가 원래의 형태로 돌아가는 방식을 구현하였다.. 2020. 4. 13. 13일차 초보개발자 TIL 오늘은 HTML 과 CSS에 관해 익히는 시간을 가졌다. 우리가 흔히 보는 웹사이트나 모바일앱에서 나타나는 모양을 구현하기 위해 사용한다. HTML의 경우 웹사이트를 제작할때의 기본 구조를 만들어내는 것이고 CSS는 HTML을 꾸며주는 역할을 한다고 볼 수 있다. twittler과제를 하면서 비슷한 모양으로 구현하기 위해 어떤 요소가 있는지 공부하고, 실제 비슷한 모양으로 만들어내는 과정을 익히는 시간이었다. 우선 처음에 전체적으로 구성을 어떻게 할 것인지 와이어프레임을 우선적으로 짜고, 거기서 실제 작동되지는 않더라도 보여지는 모양을 그대로 구현하는 것 목업작업을 하였다. 처음 아무것도 없이 시작하려니 막막하였지만, 페어와 함께 하나하나씩 구현해 나가고, 만들어진 과제를 꾸며가면서 우리가 생각하는 웹사.. 2020. 4. 8. 이전 1 2 다음