들어가며 알고리즘 2주차도 끝이 났다. 방향성도 어느정도 잡은 것 같고, 자신감도 많이 회복되었다. 주차의 마무리로 보는 테스트를 공부 시작한 지 2주만에 스스로 풀어냈다는 거에 굉장한 뿌듯함이 느껴져서 괜히 다른 문제를 스스로 풀어보려고 했다가 시간을 많이 보냈다...ㅎ 결국 못풀었긴 하지만. 오늘의 늦은 TIL은 간단하게 정렬 알고리즘들의 개념을 쓰고, 시험으로 푼 문제를 정리해보고자 한다! 정렬 파이썬에서 정렬은 sort() 함수나 sorted() 함수로 배열이나 리스트 등등의 자료형을 아주 간단하게 오름차순 혹은 내림차순으로 나열할 수 있다. 그러므로 아래에서 정리할 정렬 알고리즘을 굳이 알아둬야하나? 라고 생각할 수 있지만 우리가 사용하는 함수가 어떤 방식으로 동작하고, 어떻게 코드로 구현되어있..
항해99
들어가며 나에게 맞는 알고리즘 공부 방법을 찾고나니 한결 마음이 가벼워졌다. 또, 오늘은 문제가 쉬웠는지 직접 문제 풀이에 성공해서 꽤나 뿌듯했다. 이 기쁜 마음을 안고, 오늘의 TIL은 힙의 개념과 문제풀이, 새로 알게 된 개념을 정리해보고자 한다. 힙 힙(heap)은 최댓값과 최솟값을 빠르게 찾기 위해 고안된 완전 이진 트리(Complete Binary Tree)이다. 어떤 정수형 배열이 있다고 가정해보자. [9, 8, 7, 6, 5, 4, 3, 2, 1] 이 배열에서 가장 작은 값을 꺼내오려면 요소 하나씩을 검색해서 찾아내야 한다. 그렇게 되면 시간복잡도는 O(n)이 된다. 해당 배열을 힙으로 구현한다면 O(log n)의 시간복잡도를 갖게 된다. 위에서 말했듯이 힙은 완전 이진 트리로 이루어져있기 ..
들어가며 갑자기 잘 쓰던 들어가며에 뭘 써야할 지 헷갈리기 시작했다. 원래 아무말이나 적었던거 같은데... 오늘도 열심히 잠을 잤으니 그 업보를 지금의 나에게 지우기로 하고 오늘의 TIL은 이진 탐색트리의 개념과 문제 풀이를 정리해보고자 한다! 이진 탐색 트리 이진 탐색 트리(BST, Binary Search Tree)란 이진 탐색(Binary search)과 연결리스트(Linked list)의 아이디어를 결합한 자료구조의 일종이다. 커리큘럼상 뒤에 배우게 될 이진탐색의 경우 소요되는 시간 복잡도는 O(log n)으로 빠르지만 삽입, 삭제가 불가능하다. 반면 연결리스트의 경우 삽입, 삭제에 필요한 시간 복잡도는 O(1)로 효율적이지만 탐색하는 데에는 O(n)가 소요된다. 이진 탐색 트리는 이진 탐색의 효..
들어가며 쌓인 스트레스 + 컨디션 + 부족한 수면시간 콤보로 하루종일 잠만 잤다. 그 업보로 새벽에 TIL 쓰기 시작하기 형벌을 받게 됐다ㅎ 오늘은 몇시에 잘 수 있을까... 오늘의 TIL은 오늘 배운 트리의 개념과 구현문제를 정리하도록 해보자! 트리 트리란? 뿌리와 가지로 구성되어 거꾸로 세워놓은 나무처럼 보이는 계층형 비선형 자료구조. 한 가족의 계보를 나타내는 족보나 회사 조직도 같은 것들도 트리 구조 형태로 되어 있다. 트리에서 사용하는 용어 기본적으로 그래프와 크게 다르지 않지만 트리에서 사용하는 용어들을 먼저 알고 들어가보자 Node 트리에서 데이터를 저장하는 기본 요소 Root Node 트리 맨 위에 있는 노드 Level 최상위 노드를 Level 0으로 하였을 때, 하위 Branch로 연결된..
들어가며 항해99의 2주차도 끝이 났다. 알고리즘 난이도가 하루하루 어려워지면서 진도를 따라가기가 벅차 방향성이나 내 공부방법이 맞는 지, 내가 바라는게 뭔지에 대한 고민을 정말 많이 하게 된 일주일이었다. 수강생분들과 얘기도 나누고, 주위 사람들에게 조언도 들으며 길을 찾아가는 모습을 보고 있으면 괜시리 뿌듯해지기도 한다. 이번주 WIL은 지난 일주일 간 배운 내용을 간단히 복습하고, 회고록을 작성해보고자 한다! 연결 리스트 각 노드가 데이터와 포인터를 가지고 한 줄로 연결되어 있는 방식으로 데이터를 저장하는 자료구조 [TIL] 05/14 항해99 6일 차 - 연결리스트, 트러블슈팅, 문제풀이 [TIL] 05/14 항해99 6일 차 - 연결리스트, 트러블슈팅, 문제풀이 들어가며 오늘의 강의 내용은 '연..
들어가며 점점 어려워지는 난이도와 떨어지는 집중력 때문에 진도를 많이 나가지 못했다. 오늘의 TIL은 크게 개념적으로 정리 할 내용이 많지 않았으니 CS스터디 중 다루고 싶었던 내용과 백트래킹으로 풀 수 있는 문제를 공부한 내용을 작성해보고자 한다. 컴퓨터 보안 보안 공격 보안 공격하면 많은 사람들이 'DDoS 공격'을 떠올릴 것이다. 나도 정확한 시기는 기억이 나지 않지만 한때 국내에서 DDos 공격이 뉴스에서 자주 언급되어서 알게 됐던 것 같다. 또, 한동안 큰 문제로 부상했던 공격을 꼽으라면 단연 '랜섬웨어'를 말할 수 있다. 그 전까지는 컴퓨터를 자주 사용하지 않는 사람이라면 모를 가능성이 큰 공격이었는데 일반인도 감염되는 사례가 속출하자 뉴스에 본격적으로 다뤄지기 시작하면서 이젠 랜섬웨어를 모르..
들어가며 알고리즘 2주차의 1일차... 오늘의 회고는 짤 하나로 요약하고, 지난 그래프 알고리즘 DFS에 이어 BFS에 대해 TIL을 작성하고자 한다 그래프 탐색(순회) 깊이 우선 탐색(BFS, Breadth First Search) BFS는 특정 노드에서 시작해 인접한 노드를 먼저 탐색해나가는 방법으로, 주로 두 노드 사이의 최단 경로 혹은 임의의 경로를 찾고 싶을 때 사용한다. 쉽게 말하면, 그림처럼 임의의 시작 정점에서부터 가까운 정점을 먼저 방문하고 멀리 떨어져있는 정점을 나중에 방문하는 방식으로 그래프를 순회하는 방법이다. BFS는 일반적으로 큐를 이용해서 지금 위치에서 갈 수 있는 곳들을 모두 큐에 넣는 방식으로 구현한다. 역시나 BFS도 예시를 들어가며 자세하게 설명해주는 글이 있어 첨부한다..
들어가며 알고리즘 1주차가 끝나는 날이다. 항해99 알고리즘 주차에서는 한 주차가 끝날 때마다 테스트를 보게되고, 오늘 그 테스트를 보았다. 사실 1주차 내내 개념 정리에 주로 힘을 써왔기 때문에 구현에는 자신이 없어서 테스트를 잘 볼 수 있을까 걱정했는데 아니나 다를까 어렵더라… 어찌저찌해서 결국 해결은 했는데 문제를 풀어냈다!라는 기쁨보다는 여전히 한참 부족하다는 자괴감이 많이 들었다. 테스트 2시간이었는데 시간이 부족해서 추가시간까지 쓰고 나서야 겨우 해결을 하는 바람에 오늘 문제공부를 할 시간이 부족했다. …라고 오늘 문제풀이를 못하는 이유를 늘어놨는데 결론은 오늘의 TIL은 항해99의 커리큘럼에 따라 그래프와 DFS의 간단한 개념을 정리해보고자한다! 그래프 그래프는 정점(vertex)와 간선(e..
들어가며 해시 테이블은 개념이 연결리스트에 비해 크게 어렵지는 않았지만 여전히 코드 구현은 몇시간이고 붙잡고 있어도 해결이 안된다. 오늘 구현이 안됐던 이유는 문제 접근부터가 잘못되었어서였던거 같아서 오늘의 TIL은 문제를 풀면서 고민했던 것과 해시 테이블의 개념정리를 해보고자한다! 해시테이블 해시 테이블이란? 키에 값을 매핑할 수 있는 구조인, 연관 배열 추상 자료형(ADT)를 구현하는 자료구조이다. ‘키와 값을 매핑한다’ 비슷한게 생각이 난다. 바로 딕셔너리(dictionary)이다. (자바에서는 map, 자바스크립트에서는 object 등등) 해시 테이블을 사용하는 이유는 뭘까? 간단하게 레스토랑의 메뉴를 배열과 비교하여 예시로 생각해보자. 메뉴판에는 각 메뉴와 그 메뉴의 가격이 적혀있다. 이걸 배열..
들어가며 할게 너무 많은데 어제 늦게자는 바람에 하루종일 피곤해서 제대로 공부 못했다. 페이스 조절이 중요한데 자꾸 욕심부리게 된다. 어제도 그렇게까지 할 생각은 아니었는데... 낮 시간에 의미없이 보내는 시간들을 줄이는게 일찍잘 수 있는 방법이지 않을까 싶다. 아무튼, 졸린눈을 부여잡고 오늘의 TIL은 큐에 대한 정리와 문제풀이를 하고자한다. 큐(Queue) 큐는 시퀀스의 한쪽 끝에는 엔티티를 추가하고, 다른 반대쪽 끝에는 제거할 수 있는 엔티티 컬렉션이다. 쉽게 말하면 한쪽 끝으로 자료를 넣고, 반대쪽에서는 자료를 뺄 수 있는 선형구조로, 데이터의 입력과 출력 순서는 선입선출(FIFO, Fisrt In First Out)이다. 큐는 스택에 비해서는 상대적으로 쓰임새가 적다고 한다. 엥? 근데 왜이렇게..
반응형