Mgcllee

[C#] 기본 데이터 형식과 범위(정수, 2진수, 16진수)

개인 학습을 기록한 내용을 담고 있어 추후 수정될 수 있습입니다. 자료형은 프로그램에서 데이터를 담는 형식을 의미합니다. 프로그래밍 언어 마다 기본적으로 제공하는 자료형이 있고, 프로그래머가 직접 자료형을 만들 수도 있습니다. 이번 포스트에서는 C# 에서 제공하는 기본 자료형에 대해서 설명하겠습니다. C# 의 기본 자료형은 크게 3가지로 나...

[백준][1717] 집합의 표현

이 포스트는 백준 사이트의 집합의 표현 문제 풀이입니다. 문제 해결 과정 이 문제는 Union-Find 알고리즘을 활용하면 쉽게 해결할 수 있습니다. 첫 상태는 문제의 설명처럼 0부터 N까지의 각 숫자가 독립적으로 존재하는 상태에서 사용자의 합집합 연산과 집합 확인 연산을 반복적으로 수행하면 됩니다. 여기서 합집합 연산에 사용되는 것...

[알고리즘] A* 알고리즘 구현해보기

개인 학습을 기록한 내용을 담고 있어 추후 수정될 수 있습입니다. A* 알고리즘이란 A* 알고리즘은 최단 경로 탐색 알고리즘 중 하나로 유명합니다. 주어진 지도(map)에서 출발 지점부터 도착 지점까지 최적의 경로를 찾는 기술입니다. A* 코드의 구조가 다익스트라 최단거리 알고리즘과 닮았다는 특징이 있지만 다익스트라의 경우, 우선순위 큐와 ...

[자료구조] Heap(힙)의 개념

힙(Heap) 자료구조란 완전 이진 트리를 사용한 자료구조로 주로 우선순위를 표현하기 위해 사용됩니다. 힙의 구현 방법에 따라 최댓값 혹은 최솟값을 빠르게 찾을 수 있습니다. 최댓값을 빠르게 구하기 위한 힙을 최대 힙이라고 하며, 최솟값을 빠르게 구하기 위한 힙을 최소 힙이라고 합니다. 최대 힙 최댓값을 빠르게 구할 수 있는 최대 힙은 루트...

[백준][1197] 최소 스패닝 트리

이 포스트는 백준 사이트의 최소 스패닝 트리 문제 풀이입니다. 문제 해결 과정 이 문제는 Union-Find 알고리즘을 활용한 크루스칼 알고리즘으로 해결할 수 있습니다. 최소 스패닝 트리란, 주어진 그래프의 모든 정점을 연결하는 부분 그래프에서 그 가중치의 합이 최소인 트리를 의미합니다. 그리고 이 트리를 구하기 위한 크루스칼 알고리즘...

[DB] 데이터베이스가 사용하는 인덱스는 무엇일까?

개인 학습을 기록한 내용을 담고 있어 추후 수정될 수 있습니다. 인덱스의 개념 인덱스는 데이터베이스 테이블에서 검색 성능을 향상시키기 위한 자료구조의 이름입니다. 테이블에 있는 특정 칼럼에 대해 인덱스를 생성하면, 해당 칼럼의 데이터들은 별도의 메모리 공간에 데이터의 물리적 주소와 함께 저장됩니다. 인덱스가 생성된 이후 입력 받은 쿼리문에서 ...

[백준][7579] 앱

이 포스트는 백준 사이트의 앱 문제 풀이입니다. 문제 해결 과정 이 문제는 DP 테이블을 활용하여 해결할 수 있는 문제입니다. 또 다른 대표 DP 문제인 배낭 문제와 유사하게 메모리 교체 비용의 최소값을 구해야 합니다. 차이점이 있다면 배낭 문제의 경우, 최댓값을 구하는 것이 목표였지만 이 문제에서는 최솟값을 구하는 것이 목표라는 점 ...

[멀티 쓰레드] 교착 상태(Dead Lock)와 해결 방법

이 포스트는 개인 학습을 기록한 내용을 담고 있어 추후 수정될 수 있습니다. 교착 상태란 쓰레드란 프로세스 안에서 존재하는 하나의 실행 단위입니다. 이 실행 단위는 실행 중인 프로그램 안에서 최소 1개 이상이 존재하며 복수의 쓰레드가 동시에 실행될 수 있습니다. 쓰레드는 고유의 스택을 갖고 있기 때문에 함수의 호출로 생성되는 정보들을 저장하...