문제 풀이

백준 등 알고리즘 문제를 풀며 정리한 풀이와 개념입니다.

2026

바이토닉 수열: LIS와 LDS의 만남, 모든 경우를 탐구하다

BOJ 11054번 문제, '가장 긴 바이토닉 부분 수열'을 풀면서 겪었던 시행착오와 그 과정을 통해 얻은 학습 내용을 정리해보려고 합니다. 처음에는 바이토닉 수열의 정의를 곡해하여 문제 접근 방식 자체에 오류가 있었지만, 올바른 DP 구조를 이해하고 코드를 개선할 수 있었습니다.

교차 최소화를 위한 선 제거 알고리즘: LIS로 해결하기

2565번 "교차 최소화를 위한 선 제거 알고리즘"을 해결하며 동적 계획법(DP)과 최장 증가 부분수열(LIS)의 연관성을 깊이 이해하는 시간을 가졌습니다. 처음에는 직관적인 탐욕적 접근으로 시작했지만, 문제의 본질을 파고들수록 DP와 LIS가 정답으로 향하는 길임을 깨닫게 되었습니다.

백준 2156: 포도주 시식

Silver I 난이도의 동적 프로그래밍 문제를 C++로 풀이한 내용입니다. n개의 포도주 잔이 일렬로 놓여있을 때, 연속 3잔을 마시지 않는 제약 조건 하에서 최대한 많은 포도주를 마시는 문제입니다.

백준 1932: 정수 삼각형

Silver_I 난이도 문제를 C++로 풀이한 내용입니다. 정수 삼각형의 최상단에서부터 시작하여 아래로 내려오면서 각 숫자를 하나씩 선택하여 합이 최대가 되는 경로를 찾는 동적 계획법(Dynamic Programming) 문제입니다.

LIS - 최장 증가 부분 수열

LIS, '최장 증가 부분 수열' 알고리즘에 대해 이해하는 시간을 가졌습니다. 처음에는 그저 '중간을 건너뛰는 증가 수열' 정도로만 막연하게 생각했지만, 코드를 깊이 파고들면서 LIS가 왜 일반적인 DP와 다른지, 그리고 제 코드와는 어떤 구조적인 차이가 있는지를 명확하게...

포도주 시식 DP: '시간'으로 문제를 바라보자

오늘은 백준 2156번 '포도주 시식' 문제를 풀면서 다이나믹 프로그래밍(DP)의 핵심을 다시 한번 깊이 깨닫는 시간을 가졌습니다. 처음에는 문제의 제약 조건을 그대로 옮기려 복잡한 모델링을 시도했지만, '시간'이라는 관점으로 문제를 재해석하는 순간 모든 것이 명확해졌습니다.

10844번 계단 수 문제

풀이가 틀리고, 처음에는 단순한 코딩 오류라고 생각했던 것이, 사실은 문제 해석 자체에 있었다는 것을 깨닫는 과정이었습니다. DP의 원리와 함께, 흔히 겪는 함정을 어떻게 극복할 수 있는지 공...

백준 1912: 연속합

Silver II 난이도의 이 문제는 동적 계획법(Dynamic Programming)을 이용하여 주어진 정수 배열에서 연속된 부분 배열의 합 중 최댓값을 찾는 문제입니다. C++ 언어를 사용하여 4ms의 실행 시간과 2804KB의 메모리로 해결되었습니다.