문제 이름: 1931번: 회의실 배정알고리즘 분류: 그리디 알고리즘 (Greedy), 정렬사용 언어: Python 31개의 회의실을 사용하고자 하는 $N$개의 회의에 대하여 회의실 사용표를 만드려 한다. 각 회의에 대해 시작시간과 끝나는 시간이 주어져 있고, 각 회의가
문제 이름: 2309번: 일곱 난쟁이알고리즘 분류: 브루트포스 알고리즘, 정렬, 백트래킹 (DFS)사용 언어: Python 3아홉 명의 난쟁이 중 진짜 일곱 난쟁이를 찾아야 합니다. 진짜 일곱 난쟁이의 키의 합은 정확히 100입니다. 아홉 난쟁이의 키가 주어졌을 때,
문제 이름: 10816번: 숫자 카드 2알고리즘 분류: 자료 구조, 정렬, 이분 탐색, 해시를 사용한 집합과 맵사용 언어: Python 3숫자 카드 $N$개가 주어졌을 때, 정수 $M$개가 주어지면 이 수가 적혀있는 숫자 카드를 상근이가 각각 몇 개 가지고 있는지 구하
문제 이름: 15650번: N과 M (2)알고리즘 분류: 백트래킹 (Backtracking)사용 언어: Python 3자연수 $N$과 $M$이 주어졌을 때, 1부터 $N$까지 자연수 중에서 중복 없이 $M$개를 고른 수열을 모두 구하는 문제입니다. 단, 고른 수열은 오
문제 이름: 2579번: 계단 오르기알고리즘 분류: 다이나믹 프로그래밍 (DP)사용 언어: Python 3각 계단에 쓰여 있는 점수가 주어질 때, 규칙을 만족하면서 꼭대기 계단까지 올라갔을 때 얻을 수 있는 점수의 최댓값을 구하는 문제입니다. 핵심 규칙은 "연속된 세
문제 이름: 15649번: N과 M (1)알고리즘 분류: 백트래킹 (Backtracking)사용 언어: Python 3자연수 $N$과 $M$이 주어졌을 때, 1부터 $N$까지 자연수 중에서 중복 없이 $M$개를 고른 수열을 모두 구하는 문제입니다. 오름차순 조건이 없으
문제 이름: 1463번: 1로 만들기알고리즘 분류: 다이나믹 프로그래밍 (DP)사용 언어: Python 3정수 $N$이 주어졌을 때, 1) 3으로 나누거나, 2) 2로 나누거나, 3) 1을 빼는 세 가지 연산을 적절히 사용하여 1을 만들려고 합니다. 이때 연산을 사용하
문제 이름: 1260번: DFS와 BFS알고리즘 분류: 그래프 이론, 그래프 탐색, DFS, BFS사용 언어: Python 3그래프를 깊이 우선 탐색(DFS)으로 탐색한 결과와 너비 우선 탐색(BFS)으로 탐색한 결과를 출력하는 문제입니다. 시작 정점 $V$부터 방문하
문제 이름: 2667번: 단지번호붙이기알고리즘 분류: 그래프 이론, 그래프 탐색, 너비 우선 탐색(BFS), 깊이 우선 탐색(DFS)사용 언어: Python 3정사각형 모양의 지도가 주어집니다. 1은 집이 있는 곳, 0은 집이 없는 곳을 나타냅니다. 상하좌우로 연결된
문제 이름: 2178번: 미로 탐색알고리즘 분류: 그래프 이론, 그래프 탐색, 너비 우선 탐색(BFS)사용 언어: Python 3$N \\times M$ 크기의 배열로 표현되는 미로가 주어집니다. 1은 이동할 수 있는 칸, 0은 이동할 수 없는 칸을 나타냅니다. $(1
문제 이름: 14503번: 로봇 청소기알고리즘 분류: 구현(Implementation), 시뮬레이션(Simulation)사용 언어: Python 3$N \\times M$ 크기의 직사각형 공간에서 로봇 청소기가 작동합니다. 로봇 청소기는 특정 규칙(현재 위치 청소 $\
문제 이름: 10026번: 적록색약알고리즘 분류: 그래프 이론, 그래프 탐색, 너비 우선 탐색(BFS), 깊이 우선 탐색(DFS)사용 언어: Python 3$N \\times N$ 크기의 그리드에 R(빨강), G(초록), B(파랑) 중 하나의 색칠이 되어 있습니다. 상
문제 이름: 7576번: 토마토알고리즘 분류: 그래프 이론, 그래프 탐색, 너비 우선 탐색(BFS)사용 언어: Python 3$M \\times N$ 크기의 상자에 토마토가 보관되어 있습니다. 1은 익은 토마토, 0은 익지 않은 토마토, -1은 빈 칸을 의미합니다. 익
문제 이름: 1715번: 카드 정렬하기알고리즘 분류: 자료 구조, 그리디 알고리즘, 우선순위 큐사용 언어: Python 3정렬된 두 묶음의 숫자 카드가 있을 때, 각 묶음의 카드의 수를 $A$, $B$라 하면 보통 두 묶음을 합쳐서 하나로 만드는 데에는 $A+B$ 번의
학습 철학 회고이전에 '다익스트라 완벽 해부' 포스팅에서 정리했던 특정 문제에 종속되지 않은 '순수한 다익스트라 뼈대(Template)'를 꺼내어, 실제 코딩 테스트 환경(백준 1753번)의 요구사항에 맞춰 조립해 보는 실전 훈련을 진행했습니다. 머릿속의 추상화된 논리
학습 철학 회고단순히 주어진 배열에서 숫자를 찾는 것을 넘어, "적어도 M미터의 나무를 집에 가져가기 위해 절단기에 설정할 수 있는 높이의 최댓값"을 구하는 최적화 문제를 만났습니다. 이를 해결하기 위해 이분 탐색을 응용한 '파라메트릭 서치(Parametric Sear
학습 철학 회고본격적인 알고리즘 딥 워크(CPU Overclocking)에 들어가기 전, 뇌를 예열(Cache Loading)하기 위해 가장 기본적이고 순수한 형태의 이분 탐색 뼈대를 백지에서 구현해 보았습니다. 어제 학습한 '파라메트릭 서치(Parametric Sea
학습 철학 회고알고리즘 템플릿을 무작정 외우는 것을 경계하며, 뼈대 코드의 아주 사소한 '초기화 값' 하나까지 극한으로 의심해 보았습니다. "왜 뻔히 더할 첫 번째 값을 놔두고 0으로 시작해서 덧셈 연산을 한 번 낭비하는가?"에 대한 답을 치열하게 고민했고, 그 결과