들어가며 거의 1개월동안 묵혀놨던 동기 & 비동기 / 블락 & 논블락을 드디어 정리했다! 지금까지 가슴 한 켠에 짐으로 남겨뒀었는데 해결하고 나니까 후련하다. 다만 다른 사람한테 설명을 해주려니 스스로 이해를 제대로 하진 못했다는 생각이 들어서 여러번 다시 봐야겠다는 생각이 들었다. 아무튼, 오늘의 TIL은 동기 & 비동기를 정리한 글을 다시 이해하기 위해 간단히 정리해보고자 한다! [개발지식] 동기 & 비동기 vs 블로킹 & 논블로킹 [개발지식] 동기 & 비동기 vs 블로킹 & 논블로킹 들어가며 예전에 Petpular 프로젝트 때 사용해본 Spring WebClient에서 동기 & 비동기 / 블로킹 & 논블로킹의 개념이 등장했었다. WebClient는 논블로킹방식으로 작동하고 block() 메소드를 이..
CATEGORY
들어가며 예전에 Petpular 프로젝트 때 사용해본 Spring WebClient에서 동기 & 비동기 / 블로킹 & 논블로킹의 개념이 등장했었다. WebClient는 논블로킹방식으로 작동하고 block() 메소드를 이용해서 블로킹방식으로 바꿔주는데, 이 부분에서 동기 & 비동기 / 블로킹 & 논블로킹 개념에 대한 이해부족으로 고생을 했던 경험이 있었다. 앞으로의 삽질을 방지하기 위해 동기 & 비동기 / 블로킹 & 논블로킹 개념에 대해 스터디 하고자한다. 본격적으로 들어가기 전에 참조한 블로그의 서론을 보자. 동기와 비동기는 프로세스의 수행 순서 보장에 대한 매커니즘이고 블록킹과 논블록킹은 프로세스의 유휴 상태(제어권)에 대한 개념으로 완전한 별개의 개념이라는 것이다. 아무래도 동기와 블록킹, 비동기와 ..
들어가며 벌써 항해 3주차인데 알고리즘 주차는 2주차...? 항해 시작한 지는 얼마 안된거 같은데 알고리즘 주차 시작한 지는 한달이 훌쩍 넘은 것 같다. 그만큼 열심히 보낸 일주일이라는 말이겠지! 이번주 WIL도 여느때와 같이 지난 일주일 간 배운 내용을 간단히 복습하고, 회고록을 작성해보고자 한다! 트리 / 이진 트리 나무를 뒤집어 둔 모양으로 생긴 트리. 그래프와 비슷하게 생겼지만 차이점은 분명히 존재한다. 트리는 순환 구조를 갖지 않는 그래프라는 점과 단방향 그래프라는 점, 단 하나의 부모 노드만 갖는다는 점이 그래프와 다르다. 이진 트리는 각 노드가 최대 두개의 자식을 가진다는 특징이 있는 트리의 일종이다. [TIL] 05/23 항해99 13일차 - 트리, 이진 트리, 문제풀이 [TIL] 05/2..
들어가며 이진 탐색은 예전에 맛보기로 공부했던 적이 있었기도 하고 크게 어려운 개념이 아니라 이해하기 쉬웠다. 늘 말하듯이 구현은 다른 문제지만. 오늘의 TIL은 이진 탐색의 개념을 정리해보고자 한다! 이진 탐색 이진 탐색 알고리즘(binary search algorithm)은 오름차순으로 정렬된 리스트에서 특정한 값의 위치를 찾는 알고리즘이다. 출처 - 위키백과 이진 탐색(Binary Search)은 그림에서 보는 것처럼 중앙값을 기준으로 절반 씩 줄여나가면서 목표값을 찾아가는 알고리즘이다. 단, 이진 탐색을 하기 위해서는 자료가 순서에 따라 정렬되어 있어야 한다. 만약 정렬되어 있지 않은 자료에서 이진 탐색을 한다고 하면, 중앙값 기준으로 좌/우가 무조건 작거나 크다고 보장할 수 없기 때문이다. 이진..
들어가며 TIL을 쓰려고 보니 새삼 벌써 항해99에 승선한 지 19일 밖에 지나지 않았다는 사실을 깨달았다. 체감상 알고리즘 주차가 시작된지 한달은 족히 된거같은데 아직 한주가 더 남았다니... 이제 슬슬 체력이 딸리기 시작했다. 최근 며칠간 TIL을 쓸 기력이 없어서 대충 쓴 느낌이 컸는데, 오늘도 아마 비슷할 것 같다. 이번 주 일요일에 푹 쉬어서 체력을 보충해야겠다. 넋두리는 이정도로 하고, 오늘의 TIL은 강의 진도에 맞게 퀵 정렬과 병합 정렬의 개념을 정리하고자 한다. 정렬 퀵 정렬 퀵정렬(Quick sort)은 이름에서 알 수 있다시피 O(n log n)이라는 빠른 속도로 정렬할 수 있는 알고리즘이다. 퀵 정렬은 분할 정복(Divide and Conquert)를 통해 정렬을 하게 되는데, 기준..
들어가며 알고리즘 2주차 마무리 테스트 문제 중 하나인 '방문 기록' 심화트랙 알고리즘 주차에 들어온 이래로 직접 풀어낸 몇 안되는 문제였다. 물론 DFS/BFS 문제는 건들지도 못했지만... 뿌듯하니까 자랑하면서 들어가기로 문제 https://programmers.co.kr/learn/courses/30/lessons/49994 코딩테스트 연습 - 방문 길이 programmers.co.kr 입출력 예시 dirs answer "ULURRDLLU" 7 "LULLLLLLU" 7 생각과정 상하좌우로 움직이는 좌표를 딕셔너리와 튜플을 이용해서 구성하고, 지난 섬의 개수 강의에서 배웠던 것처럼 nx, ny 변수를 만들어 이용해보았다. 처음에는 지나간 부분을 len(visited)로 리턴값을 구하려고 했지만 테스트..
들어가며 알고리즘 2주차도 끝이 났다. 방향성도 어느정도 잡은 것 같고, 자신감도 많이 회복되었다. 주차의 마무리로 보는 테스트를 공부 시작한 지 2주만에 스스로 풀어냈다는 거에 굉장한 뿌듯함이 느껴져서 괜히 다른 문제를 스스로 풀어보려고 했다가 시간을 많이 보냈다...ㅎ 결국 못풀었긴 하지만. 오늘의 늦은 TIL은 간단하게 정렬 알고리즘들의 개념을 쓰고, 시험으로 푼 문제를 정리해보고자 한다! 정렬 파이썬에서 정렬은 sort() 함수나 sorted() 함수로 배열이나 리스트 등등의 자료형을 아주 간단하게 오름차순 혹은 내림차순으로 나열할 수 있다. 그러므로 아래에서 정리할 정렬 알고리즘을 굳이 알아둬야하나? 라고 생각할 수 있지만 우리가 사용하는 함수가 어떤 방식으로 동작하고, 어떻게 코드로 구현되어있..
들어가며 본 포스팅은 책에서 다룬 리트코드 문제들을 다루고 있습니다. 문제들은 모두 리트코드에서 출제된 문제들이며, 문제 풀이의 많은 부분을 책의 힌트와 해설을 참고하였습니다. 포스팅되는 모든 문제들의 목록과 풀이는 파이썬 알고리즘 인터뷰에서 제공하는 깃허브에서 확인하실 수 있습니다. 문제 Given the array of integers nums, you will choose two different indices i and j of that array. Return the maximum value of (nums[i]-1)*(nums[j]-1). 배열에서 (nums[i]-1)*(nums[j]-1)가 가장 큰 값을 출력하라 입출력 예시 Example 1: Input: nums = [3,4,5,2] Ou..
들어가며 나에게 맞는 알고리즘 공부 방법을 찾고나니 한결 마음이 가벼워졌다. 또, 오늘은 문제가 쉬웠는지 직접 문제 풀이에 성공해서 꽤나 뿌듯했다. 이 기쁜 마음을 안고, 오늘의 TIL은 힙의 개념과 문제풀이, 새로 알게 된 개념을 정리해보고자 한다. 힙 힙(heap)은 최댓값과 최솟값을 빠르게 찾기 위해 고안된 완전 이진 트리(Complete Binary Tree)이다. 어떤 정수형 배열이 있다고 가정해보자. [9, 8, 7, 6, 5, 4, 3, 2, 1] 이 배열에서 가장 작은 값을 꺼내오려면 요소 하나씩을 검색해서 찾아내야 한다. 그렇게 되면 시간복잡도는 O(n)이 된다. 해당 배열을 힙으로 구현한다면 O(log n)의 시간복잡도를 갖게 된다. 위에서 말했듯이 힙은 완전 이진 트리로 이루어져있기 ..
들어가며 본 포스팅은 책에서 다룬 리트코드 문제들을 다루고 있습니다. 문제들은 모두 리트코드에서 출제된 문제들이며, 문제 풀이의 많은 부분을 책의 힌트와 해설을 참고하였습니다. 포스팅되는 모든 문제들의 목록과 풀이는 파이썬 알고리즘 인터뷰에서 제공하는 깃허브에서 확인하실 수 있습니다. 문제 Given an integer array nums where the elements are sorted in ascending order, convert it to a height-balanced binary search tree. A height-balanced binary tree is a binary tree in which the depth of the two subtrees of every node never..
반응형