리트코드 78: 재귀와 백트래킹을 활용한 부분 집합 문제 풀이
부분 집합(Subsets) 문제는 주어진 정수 배열의 모든 가능한 조합(멱집합, Power Set)을 찾는 알고리즘 문제입니다. 재귀적 사고를 통해 문제를 작은 단위로 분해하고, 결정 트리(Decision Tree)를 구축하여 해결하는 과정은 백트래킹의 기초를 다지는 데 매우 효과적입니다.
1. 문제 핵심 이해하기
리트코드 78번 문제는 정수로 이루어진 배열 nums가 주어졌을 때, 해당 ...
7월 6일 17:54에 게시됨
Codeforces Round 2204 풀이: A~F번 문제 해설
A. 공 던지기
간단한 시뮬레이션으로 해결할 수 있다. 현재 위치에서 지시에 따라 좌우로 이동하며, 처음 방문하는 지점의 개수를 기록하면 된다.
코드 보기#include <bits/stdc++.h>
using namespace std;
int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
int T;
cin >> T;
while (T--) {
int n;
st ...
7월 4일 01:15에 게시됨
2025년 2월 4일~9일 주차 문제 정리
주간 개요
이번 주는 생활 리듬이 불규칙하여 학습 효율이 저하되었고, 이를 개선하기 위해 환경을 변경하였다. 새로운 일정으로 인해 다음 주부터는 더 체계적인 학습과 경기 준비를 할 계획이다.
문제 해결 기록
SMU Winter 2025 Round 6
B. 스트리머의 밤
문제 요약: 여러 프로그램의 시작 및 종료 시간이 주어질 때, 전체 시간 내에 볼 수 있는 최대 프로그램 수를 ...
7월 1일 05:37에 게시됨
AtCoder ABC368 풀이: A~F번 문제 분석
A - Cut
문제 요약
길이 n인 수열에서 마지막 k개 원소를 앞으로 이동시킨 결과를 출력한다.
핵심 아이디어
배열을 회전시키는 기초적인 구현 문제이다. n-k 인덱스부터 끝까지의 원소를 먼저 출력한 뒤, 나머지 원소를 순서대로 출력하면 된다.
구현
#include <bits/stdc++.h>
using namespace std;
int main() {
ios::sync_with_stdio(false);
cin.tie(nu ...
6월 30일 23:02에 게시됨
2024 CCPC 동북 4성 초청 대회 알고리즘 문제 해설 및 구현
Problem J. Breakfast
이 문제는 주어진 공식을 기반으로 한 간단한 산술 연산을 요구합니다. 표현식의 결과를 계산한 후, 출력 형식에 맞게 소수점 둘째 자리까지 포맷팅하면 됩니다.
#include <iostream>
#include <iomanip>
int main() {
std::ios_base::sync_with_stdio(false);
std::cin.tie(nullptr);
double base_value = 32.0;
...
6월 27일 16:56에 게시됨
그래프 순회 알고리즘: 너비 우선 탐색(BFS)과 깊이 우선 탐색(DFS)
너비 우선 탐색 (Breadth-First Search, BFS)
너비 우선 탐색은 시작 정점으로부터 가까운 노드를 우선적으로 탐색하는 알고리즘으로, 이진 트리의 레벨 순회(Level-order traversal) 방식과 유사합니다. 탐색 과정에서 큐(Queue)를 사용하여 정점을 관리하고, 방문 여부를 기록하기 위한 불리언 배열을 사용합니다.
시작 정점을 큐에 넣고 방문 처리한 뒤, 큐가 ...
6월 8일 16:40에 게시됨
삼차원 던전 탈출 문제 - BFS 알고리즘 풀이
문제 출처
백준 온라인 저지(BOJ) 2251번, POJ 2251, 정보학奥賽一本通
알고리즘 분류
너비 우선 탐색(BFS), 삼차원 그래프 탐색
문제 설명
삼차원 던전에서 가장 빠른 탈출 경로를 찾아야 한다. 던전은 여러 층으로 구성되어 있으며, 각 층은 행과 열로 구분되는 单位 격자로 이루어져 있다.
각 이동은 北, 南, 東, 西, 上, 下 중 하나의 방향으로 정확히 한 칸 이동하 ...
6월 8일 03:29에 게시됨
격자 얼음 바닥 문제 해결 (Toyota Programming Contest 2023#4)
시간 제한: 2초 / 메모리 제한: 1024MB
점수: 400점
문제 설명
N x M 크기의 격자가 주어지며, 이 격자는 얼음 또는 바위로 구성되어 있습니다.
(i, j)는 위에서 i번째 행과 왼쪽에서 j번째 열에 있는 칸을 나타냅니다.
각 칸은 N개의 문자열 S1, S2, ..., SN으로 표현되며, 각 문자열의 길이는 M입니다.
Si의 j번째 문자가 '.'이면 칸 (i, j)는 얼음이고, '#'이면 바위입 ...
6월 7일 21:05에 게시됨
적용된 알고리즘과 문제 해결 전략
총점: \(100+100+30+45=275\)
시작 10분 동안 문제 A에 접근했으나, 한 시간 후 포기하고 다른 문제로 이동.
문제 B를 빠르게 해결한 후 C에 도전하였으나 실패.
D의 폭력적인 해법을 작성하고 남은 30분 동안 다시 A를 시도.
A: H 군의 블록
상단과 하단의 숫자를 모두 세그먼트 트리에 추가합니다. 만약 숫자가 두 번 이상 등장하면 이를 후보로 설정하며, 각 단계에서 ...
6월 4일 03:09에 게시됨
n-Queens 문제 해결을 위한 백트래킹 알고리즘
문제 개요
n-Queens 문제는 n×n 크기의 체스판 위에 n개의 퀸을 배치하는 조합 최적화 문제입니다. 이때 어떤 두 퀸도 서로를 공격할 수 없어야 하며, 즉 같은 행, 열, 또는 대각선 상에 존재해서는 안 됩니다. 주어진 n에 대해 가능한 모든 배치를 출력하는 것이 목표입니다.
입력 및 출력 형식
입력: 정수 n (1 ≤ n ≤ 9)
출력: 각 해법은 n개의 줄로 구성되며, 각 ...
5월 26일 16:28에 게시됨