Problem Solving

[알고리즘] 22. 트리 기초

[알고리즘] 22. 트리 기초지난 글에서는 힙(Heap)에 대해 정리했습니다. 이번 글에서는 자료구조에서 매우 중요한 개념인 트리(Tree)에 대해 알아보겠습니다.트리는 데이터를 계층적으로 표현하는 자료구조입니다. 파일 시스템, 조직도, 댓글 구조, 카테고리, 이진 탐색 트리, 힙 등 다양한 곳에서 사용됩니다.트리는 하나의 시작점에서 여러 데이터가 가지처럼 뻗어나가는 계층형 자료구조입니다.1. 트리란?트리는 노드들이 부모와 자식 관계로 연결된 자료구조입니다. 가장 위에는 하나의 시작 노드가 있고, 그 아래로 여러 노드가 이어집니다. A / \ B C / \ \ D E F위 구조에서 A는 가장 위에 있는 노드입니다. B와 C는 A의 자식이고..

[알고리즘] 21. 힙(Heap)

[알고리즘] 21. 힙(Heap)지난 글에서는 우선순위 큐(PriorityQueue)에 대해 정리했습니다. 이번 글에서는 PriorityQueue의 내부 동작과 깊게 연결된 자료구조인 힙(Heap)에 대해 알아보겠습니다.힙은 최솟값이나 최댓값을 빠르게 찾기 위해 사용하는 자료구조입니다. 알고리즘 문제에서는 직접 힙을 구현하는 경우도 있지만, Java에서는 보통 PriorityQueue를 통해 힙 구조를 사용합니다.힙은 부모와 자식 사이의 우선순위 관계를 유지하는 완전 이진 트리 기반 자료구조입니다.1. 힙이란?힙은 여러 데이터 중에서 가장 작은 값이나 가장 큰 값을 빠르게 꺼내기 위해 사용하는 자료구조입니다.예를 들어 숫자들이 다음과 같이 있다고 생각해보겠습니다.30, 10, 40, 20, 50이 중 가..

[알고리즘] 20. 우선순위 큐(PriorityQueue)

[알고리즘] 20. 우선순위 큐(PriorityQueue)지난 글에서는 해시셋(HashSet)에 대해 정리했습니다. 이번 글에서는 알고리즘 문제에서 매우 자주 등장하는 자료구조인 우선순위 큐(PriorityQueue)에 대해 알아보겠습니다.일반 큐는 먼저 들어온 값이 먼저 나가는 구조입니다. 하지만 우선순위 큐는 들어온 순서와 상관없이 우선순위가 높은 값이 먼저 나갑니다.우선순위 큐는 데이터를 우선순위 기준에 따라 꺼내는 자료구조입니다.1. 우선순위 큐란?우선순위 큐는 일반 큐처럼 값을 넣고 꺼내는 자료구조입니다. 하지만 값을 꺼낼 때는 먼저 들어온 순서가 아니라, 정해진 우선순위에 따라 값이 나옵니다.예를 들어 숫자를 우선순위 큐에 넣는다고 생각해보겠습니다.입력 순서: 30, 10, 20일반 큐라면 3..

[알고리즘] 19. 해시셋(HashSet)

[알고리즘] 19. 해시셋(HashSet)지난 글에서는 해시맵(HashMap)에 대해 정리했습니다. 이번 글에서는 알고리즘 문제에서 중복 제거와 빠른 존재 확인에 자주 사용하는 해시셋(HashSet)에 대해 알아보겠습니다.HashSet은 값을 중복 없이 저장하는 자료구조입니다. 배열이나 리스트처럼 순서대로 값을 저장하는 것보다, 어떤 값이 이미 있는지 빠르게 확인하는 데 더 적합합니다.HashSet은 중복을 허용하지 않고, 값의 존재 여부를 빠르게 확인할 수 있는 자료구조입니다.1. HashSet이란?HashSet은 여러 값을 저장할 수 있는 자료구조입니다. 하지만 일반 리스트와 다르게 중복된 값을 저장하지 않습니다.예를 들어 숫자 1, 2, 2, 3, 3, 3을 HashSet에 넣으면 실제로는 1, 2..

[알고리즘] 18. 해시맵(HashMap)

[알고리즘] 18. 해시맵(HashMap)지난 글에서는 덱(Deque)에 대해 정리했습니다. 이번 글에서는 알고리즘 문제에서 정말 자주 사용하는 자료구조인 해시맵(HashMap)에 대해 알아보겠습니다.HashMap은 데이터를 key와 value 형태로 저장하는 자료구조입니다. 값을 빠르게 찾거나, 등장 횟수를 세거나, 특정 데이터에 연결된 정보를 저장할 때 자주 사용됩니다.HashMap은 key를 이용해 value를 빠르게 저장하고 찾는 자료구조입니다.1. HashMap이란?HashMap은 데이터를 쌍으로 저장합니다. 하나의 데이터는 key와 value로 이루어져 있습니다.구분의미예시key값을 찾기 위한 기준이름, 번호, 단어valuekey에 연결된 값점수, 개수, 정보예를 들어 학생 이름과 점수를 저장..

[알고리즘] 17. 덱(Deque)

[알고리즘] 17. 덱(Deque)지난 글에서는 큐(Queue)에 대해 정리했습니다. 이번 글에서는 큐보다 조금 더 유연한 자료구조인 덱(Deque)에 대해 알아보겠습니다.덱은 양쪽 끝에서 데이터를 넣고 뺄 수 있는 자료구조입니다. 스택처럼 사용할 수도 있고, 큐처럼 사용할 수도 있어서 알고리즘 문제에서 꽤 자주 등장합니다.덱은 앞과 뒤 양쪽에서 삽입과 삭제가 가능한 자료구조입니다.1. 덱이란?덱은 Double Ended Queue의 줄임말입니다. 이름 그대로 양쪽 끝을 모두 사용할 수 있는 큐입니다.일반 큐는 뒤에서 넣고 앞에서 꺼내는 구조입니다. 하지만 덱은 앞에서도 넣을 수 있고, 뒤에서도 넣을 수 있습니다. 또 앞에서도 꺼낼 수 있고, 뒤에서도 꺼낼 수 있습니다.일반 큐:뒤에서 넣고 → 앞에서 꺼..

[알고리즘] 16. 큐(Queue)

[알고리즘] 16. 큐(Queue)지난 글에서는 스택(Stack)에 대해 정리했습니다. 이번 글에서는 스택과 함께 알고리즘 문제에서 자주 등장하는 자료구조인 큐(Queue)에 대해 알아보겠습니다.큐는 데이터를 먼저 넣은 순서대로 꺼내는 자료구조입니다. 대기열, 순서 처리, BFS, 작업 예약, 프린터 문제 같은 곳에서 자주 사용됩니다.큐는 먼저 들어온 데이터가 먼저 나가는 선입선출 구조입니다.1. 큐란?큐는 데이터를 줄 세우듯이 관리하는 자료구조입니다. 가장 쉽게 떠올릴 수 있는 예시는 은행 창구나 편의점 계산대의 대기줄입니다.먼저 줄을 선 사람이 먼저 서비스를 받고, 나중에 온 사람은 뒤에 서서 기다립니다. 큐도 이와 같은 방식으로 동작합니다.1번 손님이 줄을 선다.2번 손님이 줄을 선다.3번 손님이 ..

[알고리즘] 15. 스택(Stack)

[알고리즘] 15. 스택(Stack)지난 글에서는 예외 케이스 처리법에 대해 정리했습니다. 이번 글부터는 알고리즘 문제에서 자주 사용하는 자료구조 영역으로 들어갑니다. 그 첫 번째 주제는 스택(Stack)입니다.스택은 데이터를 한쪽 방향으로만 넣고 빼는 자료구조입니다. 처음에는 단순해 보이지만, 괄호 검사, 되돌리기, 뒤집기, DFS, 수식 처리 같은 문제에서 매우 자주 사용됩니다.스택은 나중에 들어온 데이터가 먼저 나가는 후입선출 구조입니다.1. 스택이란?스택은 데이터를 차곡차곡 쌓아두는 구조입니다. 가장 쉽게 떠올릴 수 있는 예시는 접시 더미입니다.접시를 쌓을 때는 위에 올리고, 꺼낼 때도 가장 위에 있는 접시부터 꺼냅니다. 중간에 있는 접시를 바로 꺼내기는 어렵습니다.접시 A를 놓는다.접시 B를 놓..