블로그

야나

[그림으로 쉽게 배우는 자료구조와 알고리즘] 배열 연결리스트 스택 큐 덱 해시테이블 셋

* 해당 포스팅은 그림으로 쉽게 배우는 자료구조와 알고리즘- by 감자 멘토님 강의를 수강후 작성하는 글 입니다. KEYWORD배열설명(한줄로): 연속된 메모리 공간에 데이터를 저장하는 선형 자료구조.시간복잡도:접근: O(1)삽입/삭제: O(n) (중간/앞에서), O(1) (끝에서)탐색: O(n) (정렬되지 않은 경우), O(log n) (정렬된 경우)유리한 케이스: 인덱스를 통해 데이터를 빠르게 접근할 때, 데이터 크기가 고정되어 있고 삽입/삭제가 자주 일어나지 않는 경우.연결리스트 (Linked List)설명(한줄로): 각 노드가 데이터와 다음 노드를 가리키는 포인터로 연결된 선형 자료구조.시간복잡도:접근: O(n)삽입/삭제: O(1) (노드를 알고 있을 때)탐색: O(n)유리한 케이스: 크기가 동적이고, 삽입/삭제가 빈번하게 일어나는 경우. 특히, 중간에 데이터가 삽입되거나 삭제될 때.스택 (Stack)설명(한줄로): 후입선출(LIFO, Last In First Out) 방식으로 데이터를 처리하는 자료구조.시간복잡도:접근: O(n)삽입/삭제: O(1) (top에서)탐색: O(n)유리한 케이스: 함수 호출 스택, 되돌리기 기능 등 후입선출 방식이 필요한 경우.큐 (Queue)설명(한줄로): 선입선출(FIFO, First In First Out) 방식으로 데이터를 처리하는 자료구조.시간복잡도:접근: O(n)삽입/삭제: O(1) (front와 rear에서)탐색: O(n)유리한 케이스: 주문 처리 시스템, 프린터 대기열 등 선입선출 방식이 필요한 경우.덱 (Deque, Double-Ended Queue)설명(한줄로): 양쪽 끝에서 삽입과 삭제가 가능한 자료구조.시간복잡도:접근: O(n)삽입/삭제: O(1) (양쪽 끝에서)탐색: O(n)유리한 케이스: 양방향에서 삽입/삭제가 자주 일어나는 경우. 예를 들어, 양쪽에서 데이터를 넣고 빼야 하는 데크나 스케줄링 시스템.해시테이블 (Hash Table)설명(한줄로): 해시 함수를 이용해 키를 인덱스로 변환하여 데이터를 저장하는 자료구조.시간복잡도:접근: O(1) (평균), O(n) (최악의 경우)삽입/삭제: O(1) (평균), O(n) (최악의 경우)탐색: O(1) (평균), O(n) (최악의 경우)유리한 케이스: 키-값 쌍으로 데이터를 저장하고 빠르게 검색할 때. 특히, 데이터의 크기가 클 때 빠른 검색이 필요할 경우.셋 (Set)설명(한줄로): 중복되지 않는 고유한 값들을 저장하는 자료구조.시간복잡도:접근: O(1) (해시셋인 경우)삽입/삭제: O(1) (평균), O(n) (최악의 경우)탐색: O(1) (평균), O(n) (최악의 경우)유리한 케이스: 중복이 없는 고유한 데이터를 관리할 때, 또는 값이 존재하는지 빠르게 확인할 때.

알고리즘 · 자료구조배열연결리스트스택해시테이블

2024-11-19 일간회고

#일간회고어제는 백준 문제를 위주로 풀었습니다.괄호 유형의 스택 문제작성 이유: 엣지 케이스에서 실수가 많았습니다.알고리즘 문제를 풀 때 괄호와 관련된 문제들을 풀 때 스택을 사용하는 방법은 많이 알려져 있습니다.그런데 저는 괄호 및 스택 관련 문제들을 풀 떄마다 엣지 케이스가 있으면 잔실수가 많이 나와서, 정확하게 푸는 요령을 정리하게 되었습니다.나만의 요령: 트리도 같이 연관지어 생각하기 #스택 #트리 #DFS괄호 문제가 나올 때 스택을 사용하는 것은 잘 알려져 있습니다.여기서 한 발 더 나아가, 괄호 텍스트를 가지고 대응되는 트리 구조를 직관적으로 유추할 수 있습니다.예를 들어(())()의 경우, root -> a -> b; root -> c의 트리 구조와 대응됩니다.여기서 괄호 문자열을 순회하는 것은 이 트리 구조를 DFS 탐색하는 것에 비유해볼 수 있습니다.예를 들어 (())()의 각 문자열을 순회하는 것은 트리 구조를 다음과 같이 탐색하는 것과 대응됩니다.( - root -> a( - a -> b) - b -> a) - a -> root( - root -> c) - c -> root저는 개인적으로 엣지 케이스가 있는 등 문제가 복잡한 경우 다음과 같이 문제를 쪼개는 것이 도움이 되었습니다.트리를 순회하면서 문제를 해결하는 알고리즘을 구상한다.구상한 알고리즘을 괄호 순회로 옮긴다.혹시 괄호 문제 말고도 일반적인 스택 유형 문제에 적용이 되는지 한 번 알아보아야겠습니다.

일간회고알고리즘스택트리DFS

채널톡 아이콘