Meoru_tech
-
💡 [자료구조] Stack and Queue| 자료구조 & 알고리즘/자료구조 2021. 10. 26. 09:28
Stack 후입선출(LIFO) 자료구조 함수가 호출되면 스택 영역 메모리에 함수가 올라가요 삽입과 삭제가 한 방향에서만 일어나요 DFS에서 많이 쓰여요 (재귀적 호출) Queue 선입선출(FIFO) 자료구조 작업을 순서대로 실행시키기 위해 대기열을 구현할때 많이 사용돼요 삽입과 삭제가 양 방향 각각에서 일어나요 BFS에서 많이 쓰여요 (재귀적 호출) 다양한 형태의 Queue가 존재하는데, 특히 Deque의 경우는 삽입과 삭제가 양 방향에서 모두 일어날 수 있어요
-
💡 [자료구조] Heap이란?| 자료구조 & 알고리즘/자료구조 2021. 10. 26. 09:21
💡 힙(Heap)이란? 정식명은 Heap tree, 여러 개의 값 중에서 가장 크거나 작은 값을 빠르게 찾기 위해 만든 이진 트리에요 삽입/삭제의 속도 때문에 완전 이진 트리로 나타내며, 대개 배열로 표현하는데 계산을 편하게 하기 위해 인덱스는 1부터 사용해요 두 종류, 최대 힙(부모 노드가 항상 자식들보다 큰 힙)과 최소 힙(부모가 항상 자식들보다 작은 힙)으로 나뉘어요 최댓값(최솟값)을 O(1)안에 찾을 수 있어요 데이터의 삽입/삭제는 O(logN)이 소요돼요 데이터의 삽입은 다음 프로세스로 이루어져요 가장 끝의 자리에 노드 삽입 그 노드와 부모 노드를 비교하여 규칙(최대/최소)에 맞으면 보존, 아니면 교환 규칙에 맞을 때까지 2번 과정 반복 데이터의 삭제는 루트 노드만 가능하며, 다음 프로세스로 이..
-
💡 [자료구조] Array vs. LinkedList| 자료구조 & 알고리즘/자료구조 2021. 10. 26. 09:16
Array(배열) 데이터 접근에 유리. 데이터 size가 정해져 있을 때 유리. 정적인 자료구조로, 컴파일 타임에 크기가 결정된다. 인덱스를 통해 데이터에 빠른 접근이 가능하다. O(1) 데이터의 삽입/제거 시 O(N) 사용할 자료의 사이즈가 명확할 때, 데이터의 삽입/제거가 아주 빈번한 게 아니라면 LinkedList보다 효율적이다. Linked List(연결리스트) 데이터 추가/삭제에 유리. 동적인 자료구조로, 런타임에 크기가 계속해서 변한다. 인덱스를 사용하지 않기 때문에 데이터의 조회가 느리다. O(N) 트리 구조의 근간이 되는 자료구조이다. 양측 끝에 데이터의 삽입/제거 시 O(1), 중간 삽입/제거 시 O(N). 이 경우에도 Array보다 빠르다. 논리 구조상 Linked List가 Array..
-
💡 [알고리즘] 거품정렬, 선택정렬, 삽입정렬| 자료구조 & 알고리즘/알고리즘 2021. 10. 26. 09:06
Bubble Sort (거품 정렬) 서로 인접한 두 원소의 대소를 비교하고, 조건에 맞지 않다면 자리를 교환하며 정렬하는 알고리즘 첫번째 라운드가 끝나면 가장 큰 데이터가 맨뒤 N번째에 있게 되어서 2회차는 N-1번째까지만 정렬하고 3회차는 N-2번째까지 정렬하는 식으로 정렬해요 총 라운드는 (배열 크기-1) 번 진행되고, 각 라운드별 비교 횟수는 (배열 크기-라운드 횟수)이에요 시간 복잡도 : 최선, 평균, 최악 모두 O(N^2) 공간 복잡도 : 주어진 배열 안에서 교환(swap)을 통해 정렬이 수행되므로 O(n) 장점 추가적인 메모리 소비가 적어요 구현이 매우 쉬워요 안정 정렬, 제자리 정렬이에요 단점 다른 정렬 알고리즘에 비해 교환 과정이 많은 비효율적 알고리즘이에요 Selection Sort (선..
-
✨ [비전공자의 SW개발자 성장기록] 새로운 언어로 Go하기 위한 준비 (~211025)| 성장 기록 2021. 10. 25. 20:24
작년 말부터, 인턴 합격 메일을 확인한 지지난주 토요일까지, 컴퓨터 혹은 노트북을 품에 안고 살아왔다. 매일은 아니었겠지만 코드를 치지 않은 날이 거의 없었던 것 같다. 그래서 지난 한 주 동안 나름의 refresh를 하며 새로운 학습을 위한 토대를 마련했다.... 쉽게 말해서 적당히 이것저것 찾아보면서 휴식을 좀 취했다. 회사생활 준비 인턴 생활이 처음인 것은 아니다. 대학교 3학년 겨울방학동안 해양환경공단에서 체험형 인턴을 잠깐 했었다. 하지만 그 때와는 상황이 많이 다르다고 생각했다. "체험형" 인턴이었고, 그저 사회생활을 경험해보고자 하는 마음으로 임했다. 어리기도 했고... 물론 지금도 마음만은 응애다. 이번에는 "채용형" 인턴이기도 하고, 정말 내가 하고 싶은 일을, 정말 가고 싶은 회사에서 ..
-
🏃♂️ [Effective Go] Go를 Go답게 사용하는 방법| 프로그래밍 분야/Go 2021. 10. 25. 19:08
#Go #GoLang 출처 : https://golang.org/doc/effective_go 본 포스팅은 Go의 기본적인 문법사항이 아닌, Go를 Go답게 사용하는 코드 컨벤션에 대해 다루고 있어요. 포맷팅(Formatting) 모든 언어에서 그렇듯 포맷팅은 아주 중요한 이슈는 아니지만, 협업과 가독성의 측면에서 은근히 신경쓰이는 요소가 아닐 수 없어요 Go는 언어 자체에서 지원하는 Formatter인 gofmt를 통해 일관된 포맷을 유지할 수 있어요 type T struct { name string // name of the object value int // its value } 예를 들어, gofmt는 위와 같은 코드를 다음과 같이 자동으로 정렬할 거에요 type T struct { name st..
-
🏃♂️ Golang 학습에 유용한 사이트 정리| 프로그래밍 분야/Go 2021. 10. 21. 23:36
서버 개발에 Go 언어가 점점 각광받고 있지만, 다른 언어들에 비해 reference가 적어서 처음 접근하기 어려운 느낌이 있어요 제가 Go 를 학습하며 도움을 얻었던 사이트를 정리해볼게요 예제로 배우는 Go 프로그래밍 예제로 배우는 Go 프로그래밍 쉽고 재미있는 Go 프로그래밍 예제로 배우는 Go 프로그래밍 I like a lot of the design decisions they made in the [Go] language. Basically, I like all of them. - Martin Odersky, Creator of Scala golang.site - 한글로 Go의 기초 문법과 활용까지 잘 설명되어 있어요 Effective Go [영어] [한글] README · Effective Go..
-
🏃♂️ Golang - defer 키워드| 프로그래밍 분야/Go 2021. 10. 21. 23:03
defer? Golang의 특징적인 키워드 중 하나로 defer 가 있어요 defer 는 defer 를 포함한 함수가 반환되기 직전에 명령을 수행하도록 하는 예약 키워드에요 // Contents returns the file's contents as a string. func Contents(filename string) (string, error) { f, err := os.Open(filename) if err != nil { return "", err } defer f.Close() // f.Close will run when we're finished. var result []byte buf := make([]byte, 100) for { n, err := f.Read(buf[0:]) result..