식별자 컨벤션 변환 및 비트마스킹 기반 순열 알고리즘 풀이
1. 카멜 케이스와 스네이크 케이스 변환 알고리즘
프로그래밍에서 자주 사용되는 두 가지 명명 규칙인 카멜 케이스(CamelCase)와 스네이크 케이스(snake_case) 간의 변환을 처리하는 문제입니다. 문제의 핵심은 입력받은 문자열이 유효한 형식인지 판단하고, 카멜 케이스인 경우에만 스네이크 케이스로 변환하는 것입니다.
변환 및 판별 규칙
카멜 케이스: 첫 번째 ...
8월 21일 17:25에 게시됨
행렬 곱셈 및 고속 거듭제곱
1. 행렬 곱셈
1.1. 정의
두 행렬 \\(A, B\\)가 주어졌을 때, 행렬 \\(A\\)의 크기가 \\(n \times m\\)이고 행렬 \\(B\\)의 크기가 \\(m \times p\\)이면 이 두 행렬은 곱셈이 가능합니다. 이 연산의 결과로 생성되는 행렬 \\(C\\)의 크기는 \\(n \times p\\)가 됩니다.
예를 들어 다음과 같은 행렬 \\(A\\)와 \\(B\\)가 있습니다:
\\( A=\\begin{bmatrix} a\_{11} & a\_{ ...
8월 1일 02:25에 게시됨
Codeforces Round 960 (Div. 2) 효율적인 문제 풀이 전략
A. Submission Bait (게임 이론)
앨리스와 밥이 $n$개의 원소를 가진 배열 $a$를 사용하여 게임을 진행합니다. 초기 mx 값은 0이며, 각 플레이어는 자신의 차례에 $a_i \ge mx$인 인덱스 $i$를 선택하여 mx를 $a_i$로 갱신하고 $a_i$를 0으로 만듭니다. 더 이상 움직일 수 없는 플레이어가 패배할 때, 앨리스의 필승 전략 존재 여부를 판별해야 합니다.
이 문제의 핵심은 ...
7월 30일 12:49에 게시됨
동적 프로그래밍을 통한 배낭 문제 이해
배낭 문제 종류 및 해결 방법
다양한 배낭 문제 유형과 그에 따른 최적화 전략을 정리합니다.
01 배낭 문제
n개의 물품(각각의 부피와 가치는 v[i], w[i])과 용량이 V인 배낭이 있을 때 최대 가치를 계산합니다.
for(int i=1; i=v[i]; --j)
dp[j] = max(dp[j], dp[j-v[i]] + w[i]);
완전 배낭 문제
모든 물품이 무한히 제공되는 경우의 최적화 알고리즘입니 ...
7월 24일 01:33에 게시됨
트리 구조에서 제한 시간 내 최대 가치 보석 획득
주어진 문제에는 N개의 방이 있으며, 이들은 N-1개의 도로로 연결되어 트리 구조를 이룹니다. 각 방에는 시한폭탄이 설치되어 T 시간 후에 동시에 폭발합니다. i번째 방에는 P_i 가치의 보석이 있고, 각 도로를 통과하는 데는 특정 시간이 소요됩니다. 한 사람이 1번 방에서 출발하여 N번 방으로 탈출해야 하며, 도중에 폭탄에 의해 사망하지 않는 선에서 최대한 많은 가치 ...
7월 18일 08:57에 게시됨
알고리즘 문제 해결 전략 및 동적 계획법 심화
나무 심기 문제
문제 설명
일직선 위에 서로 다른 위치에 n 그루의 나무가 심어져 있습니다. 각 나무의 위치는 정수 ai로 주어집니다.
기존 나무의 위치를 변경할 수 없지만, 새로운 나무를 추가로 심어 모든 나무(기존 나무와 새로 심은 나무 모두 포함)의 위치를 정렬했을 때, 인접한 나무들 사이의 간격이 모두 동일하도록 만들고 싶습니다. 새로 심는 나무의 위치도 정 ...
7월 18일 01:44에 게시됨
연산자 우선순위와 뱀 이동 알고리즘 분석
연산자 우선순위 (D - Operator Precedence)
길이가 \\(2n\\)인 수열 \\(a_{2n}\\)을 찾는 문제입니다. 조건은 다음과 같습니다:
\\((a_1 × a_2)+(a_3 × a_4)+\ldots+(a_{2n-1} × a_{2n})=a_1×(a_2+a_3)×\ldots×(a_{2n-2}+a_{2n-1})×a_{2n}\\)
#include <iostream>
using namespace std;
int main() {
int n, x = 1, y = 1;
cin >> n;
cout > y;
...
6월 28일 01:10에 게시됨
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에 게시됨
Java 알고리즘 풀이: 텐센트 2018 상반기 채용 기출 문제
문제 1: 교차 부호 수열의 합
길이 n의 연속된 정수 수열 1, 2, 3, ... n에 대해, 매 m개마다 부호를 교차시키는 수열을 정의합니다. 초기 부호는 음수(-)이며, 부호는 -, -, ..., +, +, -, -, ... 순서로 반복됩니다. 이때 처음 n개 항의 총합을 구하는 문제입니다.
입력 조건: 두 정수 n, m (2 ≤ n ≤ 10⁹, 1 ≤ m), n은 2m으로 나누어 떨어짐
출력: 처음 n개 항의 합
...
6월 6일 22:56에 게시됨
코드포스 알고리즘 최적화: 동적 계획법, 그리디, 서로소 집합을 활용한 문제 풀이
1787C - Remove the Bracket
동적 계획법(DP)을 사용하여 괄호를 제거했을 때의 최소 비용을 계산하는 문제입니다. 각 원소를 특정 임계값 $k$를 기준으로 두 부분으로 나누고, 이전 상태의 최소값을 갱신하는 방식으로 접근합니다. 상태 전이 시 곱셈 연산이 발생하므로, 각 위치에서 0번과 1번 선택지에 따른 누적 비용을 독립적으로 관리하여 최적해를 도출합니다.
#inc ...
6월 5일 21:57에 게시됨