이진탐색(Binary Search)
·
Algorithm
정렬된 상태의 데이터에서 특정 값을 빠르게 탐색하는 방법 - 찾고자 하는 값과 데이터 중앙에 있는 값을 비교 - 찾고자 하는 값이 더 작으면 데이터 왼쪽 부분에서 이진 탐색 - 찾고자 하는 값이 더 크면 데이터 오른쪽 부분에서 이진 탐색 알고리즘 시간 복잡도 : O(logn) 이진 탐색의 구현 1. 탐색의 대상이 되는 자료들이 array[low] 에서부터 array[high]에 들어있다고 가정하자. (정렬되어 있어야 함) 즉 어떤 시점에서 탐색되어야 할 범위는 low에서 high 까지가 된다. 맨 처음 low에는 0번 인덱스의 값, high에는 n-1번 인덱스의 값이 들어갈 것이다. 2. low와 high값에 의거해 중간값mid 값은 (low + high) / 2이다. 즉, array[low] ~ arr..
힙(Heap)
·
Algorithm
힙(Heap) 완전 이진 트리 형태 - 중복 값 허용 - 반 정렬 상태 최소값 또는 최대값을 빠르게 찾아내는데 유용한 자료구조 - 최소 힙, 최대 힙 힙의 종류 최대 힙 부모 노드의 키 값이 자식 노드의 키 값보다 크거나 같은 완전 이진 트리 key(부모 노드) >= key(자식 노드) 최소 힙 부모 노드의 키 값이 자식 노드의 키 값보다 작거나 같은 완전 이진 트리 key(부모 노드) 1 && heap.get(cur / 2) 1 && heap.get(cur / 2) > heap.get(cur)){ // 방금 들어온 data가 부모 data 보다 작다면 int parentVal = heap.get(cur / 2); heap..
낙관주의 vs 낙천주의
·
Daily/memoir
낙관주의와 낙천주의 의 차이점을 알아보았다. 이둘은 신기하게도 영어로 둘다 optimism 이라고 불린다. 두 마리의 개구리를 우유가 조금 밖에 들어 있지 않은 우유팩 에 넣어보자. A 개구리와 B 개구리 둘 다 탈출하려고 노력을 한다. 몇 일이 지나도 탈출한 개구리는 없다. 얼마 지나지 않아 B 개구리 홀로 탈출에 성공했고, A 개구리는 탈출하지 못해 죽었다. A 개구리는 생각을 했다. 조금만 더 버텨보자 잘 될거야~, 어떻게든 되겠지 반면에, B 개구리는 지금이 상황에서 할 수 있는 최선을 다 해보자! 라고 생각을 했다. 결국 B 개구리는 포기하지 않고 계속해서 점프를 시도하며 결국 남아있던 우유가 치즈로 굳어 발판을 삼아 탈출에 성공하였다. 나는 이러한 개발자가 되고 싶다. 지금 하는 공부들이 나에..
백엔드 개발자가 되기 위한 나의 공부 계획
·
Daily/memoir
My daily schedule starts with 09:00 ~ 16:00 university course 17:00 ~ 22:00 Studying algorithms and preparing for coding tests 23:00 ~ 24:00 work out 01:00 ~ 04:00 Practicing Spring Boot and computer science 나의 장점 심각한 불면증이 있어 잠이 없다. 처음에는 스트레스도 받고 힘들었는데 공부를 하기 시작하고 남들 보다 더 많은 시간을 활용할 수 있다고 생각하니, 장점이라고 생각한다. 집착이 강하다 모든 일에 집착이 강한 편이라서, 모르는 것이 생기면 알 때 까지 물고 늘어진다. 오류, 피드백에 대해서 긍정적이다 공부 중 오류가 발생하면 처음에..