본문 바로가기
  • 철은 두드릴수록 강해지고 사람은 굴릴수록 강해진다.

전체 글56

[알고리즘(6)] Python으로 알아보는 트리(Tree) 취준 때문에 바빠서 2주만에 돌아왔다. 다시 꾸준히 글을 쓰려고 한다. [알고리즘 포스팅 순서] 1. 시간복잡도 2. 배열 3. 연결리스트 4. 스택 5. 큐 6. 트리 7. 그래프 8. 해쉬테이블 9. 정렬(선택, 버블, 삽입, 퀵, 힙, 병합) 10. 코테 대비 백준 문제 풀이 꿀팁 [서론] 난 많은 자료구조 중에서 이 '트리' 개념 때문에 초반에 자료구조의 전체적인 흐름을 이해하기가 힘들었다. 용어도 많고 종류도 많고 관련 글도 많아서 복잡해서였다. 그래서 이 답답함을 해소하기 위해 이 알고리즘 시리즈를 시작한 것이라고 해도 과언이 아니다. '트리'에 대한 모든 것을 초! 간단하게 낱낱히 파헤치고자 한다. [트리란?] 트리(Tree)란 노드들이 나뭇가지처럼 연결되어 있는 비선형 자료구조를 의미한다... 2024. 3. 31.
[알고리즘(5)] Python으로 알아보는 큐(Queue) [알고리즘 포스팅 순서] 1. 시간복잡도 2. 배열 3. 연결리스트 4. 스택 5. 큐 6. 트리 7. 그래프 8. 해쉬테이블 9. 정렬(선택, 버블, 삽입, 퀵, 힙, 병합) 10. 코테 대비 백준 문제 풀이 꿀팁 벌써 절반이나 왔다. 이번에 알아볼 자료구조는 큐(Queue)이다. 이는 나중에 많이 사용되니 기억해 둘 필요가 있는 중요한 개념이다. [큐란?] 큐는 데이터가 삽입된 순서대로 삭제도 이루어지는 자료구조이다. 컴퓨터 운영체제에서 시스템 콜이 진행될 때에도 사용된다. 큐를 한국말로 하면 '줄, 대기줄'을 의미한다. 예로 들면 게임 롤(LoL)에서 '큐를 돌린다'라는 관용 표현에서도 쓰인다. 매표소에서 줄을 선 순서대로 표를 구매하는 모습으로도 이해할 수 있다. 이를 FIFO (First In .. 2024. 3. 16.
[알고리즘(4)] Python으로 알아보는 스택(Stack) [알고리즘 포스팅 순서] 1. 시간복잡도 2. 배열 3. 연결리스트 4. 스택 5. 큐 6. 트리 7. 그래프 8. 해쉬테이블 9. 정렬(선택, 버블, 삽입, 퀵, 힙, 병합) 10. 코테 대비 백준 문제 풀이 꿀팁 오늘 알아볼 자료구조는 스택(Stack)이다. [스택이란?] 스택은 컴퓨터에서 아주 많이 사용되는 자료구조이다. 컴퓨터 메모리의 스택 영역은 함수의 호출과 관계되는 지역변수, 매개변수, 리턴 값등의 임시데이터를 저장한다. 스택이란 단어는 ‘차곡 차곡 쌓여진 더미’를 의미한다. 예를 들면 웹 페이지에서 '뒤로 가기' 버튼을 누르면 가장 최근에 보았던 페이지가 다시 나타나는 것과 같다. 이를 LIFO(Last-In First-Out, 후입선출) 구조라고 한다. 가장 최근에 들어온 데이터가 가장 .. 2024. 3. 15.
[알고리즘(3)] Python으로 알아보는 연결리스트(Linked-List) [알고리즘 포스팅 순서] 1. 시간복잡도 2. 배열 3. 연결리스트 4. 스택 5. 큐 6. 트리 7. 그래프 8. 해쉬테이블 9. 정렬(선택, 버블, 삽입, 퀵, 힙, 병합) 10. 코테 대비 백준 문제 풀이 꿀팁 오늘 알아볼 자료구조는 연결리스트이다. [연결리스트란?] 연결 리스트는 사슬처럼 여러 데이터를 연결한 것이다. 연결 리스트는 배열처럼 선형 자료 구조이지만, 연속한 메모리에 값을 저장하는 것은 아니다. 연결 리스트에서는 각각의 데이터(원소)들을 노드라고 부른다. [특징] 1. 종류로는 단일 연결 리스트(Singly Linked List), 이중 연결 리스트(Doubly linked list), 순환 이중 연결 리스트(Circular Doubly linked list)가 존재한다. 단일 연결 .. 2024. 3. 14.
[알고리즘(2)] Python으로 알아보는 배열(Array) 자료구조/알고리즘의 공부 순서, index 분류가 사람마다 달라서 헷갈릴 수도 있다. 학교, 스터디, 교육, 여러 사이트에서 분석한 결과 다음과 같은 순서대로 공부하면 좋다. (사실 2번~8번까지는 자료구조의 범위이지만 이 자료구조를 응용하면 알고리즘이 되기 때문에 더 넓은 의미의 알고리즘이라는 명칭을 사용함) [알고리즘 포스팅 순서] 1. 시간복잡도 2. 배열 3. 연결리스트 4. 스택 5. 큐 6. 트리 7. 그래프 8. 해쉬테이블 9. 정렬(선택, 버블, 삽입, 퀵, 힙, 병합) 10. 코테 대비 백준 문제 풀이 꿀팁 다음은 파이썬을 기준으로 공부해야 할 자료구조 모형도다. 파이썬에서 기본 제공하는 List, Dictionary, Tuple, Set에 대한 이야기는 생략하고 코테 대비를 위한 자료구.. 2024. 3. 13.
[알고리즘(1)] 시간복잡도/공간복잡도 본격적인 알고리즘을 공부하기에 앞서 [시간복잡도/공간복잡도를 배워야하는 이유] 1. 모든 기업은 최대한 빨리 적은 비용으로 서비스를 제공하고자 한다. 2. 이를 위해 최대한 효율적으로 문제를 푸는 능력을 요구한다. 3. 효율적으로 문제를 푼다는 것은 시간복잡도/공간복잡도를 고려한다는 의미다. (공간복잡도는 많이 고려하지 않기도 하고 시간복잡도와 비슷하므로 시간복잡도를 기준으로 작성하겠다.) [시간복잡도란?] 입력값의 변화에 따라 연산을 실행할 때, 연산 횟수에 비해 시간이 걸리는 정도이다. 예를 들면, 밥 1인분을 만드는 데에 10분이 걸린다고 하자. 그럼 10인분은 100분, 100인분은 1000분, 1000인분은 10000분이 걸린다. 그럼 실제로 급식 아주머니들은 하루에 166시간 분량 만큼 일해서.. 2024. 3. 8.