2023년 6월 상하이 컴퓨터 학회 경기 플랫폼 삼급 문제 분석

T1 - 차분 누적 계산 정수 배열에서 모든 쌍에 대해 후항과 전항의 차를 구한 후, 이 차들의 합을 다시 계산한다. 예를 들어 수열 a₁, a₂, a₃, a₄에 대해 다음과 같은 결과를 도출해야 한다: (a₂−a₁) − (a₃−a₁) − (a₃−a₂) − (a₄−a₁) − (a₄−a₂) − (a₄−a₃) 입력: 첫째 줄에 정수 n, 둘째 줄에 n개의 정수 a₁~aₙ 출력: 최종 결과값 (정수) 제약 조건: - 50% 데이터: 1 ≤ n ...

8월 16일 01:00에 게시됨

USACO 2022년 12월 실버 대회 - Bronze Division 풀이

1. Cow College - 최대 수익 구하기 Farmer John이 소들을 위한 대학을 세우려고 한다. N마리의 소(1 ≤ N ≤ 10^5)가 있으며, 각 소는 최대 c_i(1 ≤ c_i ≤ 10^6)만큼의 학비를 낼 의향이 있다. 등록금을 책정했을 때, 소가 지불할 수 있는 최대 금액보다 높으면 해당 소는入学하지 않는다. FJ는 최대 수익을 얻고자 하며, 그때의 등록금을 구해야 한다. 여러 답이 있다면 가 ...

7월 31일 14:39에 게시됨

Codeforces Round 982 (Div. 2) 문제 해결 및 코드 분석

A 문제: 최적 직사각형 둘레 문제의 핵심은 최종 도형의 둘레가 최대 너비와 높이를 가진 직사각형의 둘레와 같다는 결론을 도출하는 것입니다. #include using namespace std; typedef long long ll; void solve() { int test_case; cin >> test_case; while (test_case--) { int shape_count; cin >> shape_count; ...

7월 20일 09:07에 게시됨

Codeforces Round 891 Div.3 문제 복기 및 풀이 해설

개요 첫 CF Div.3 대회 참가 후, T2의 문제를 오독하고 T3에서 무리한 구조 설계로 실패한 경험을 바탕으로 복기하며 각 문제를 해석하고 해결 방안을 정리한다. A. 배열 분할과 합의奇偶성 문제 요약: 주어진 배열을 두 부분으로 나누어 각 부분의 합의 홀짝성이 동일하도록 만들 수 있는지 판단한다. 해석 및 분석: 홀수(odd)와 짝수(even)의 합 연산 규칙은 다음과 같 ...

7월 17일 21:47에 게시됨

2024년 11월 기초 알고리즘 문제 풀이

A. 구간 나누기 문자열 내에서 연속된 '1'은 서로 독립적인 구간으로 처리할 수 있다. 각 구간에 대해 최적의 분할 방식을 고려해야 한다. 길이가 \( k \) 인 연속된 1의 블록이 있을 때, 다음과 같은 전략이 최선이다: \( k \)가 홀수면, \( \frac{k+1}{2} \) 개의 단일 1로 나누며, 이때 결과는 \( \frac{k+1}{2} \). \( k \)가 짝수면, \( \frac{k}{2} - 1 \) ...

7월 17일 06:37에 게시됨

Codeforces Round 987 (Div. 2) 문제 해설

A번 문제: 최소 변경 횟수 이 문제는 비내림차순 수열로 만들기 위해 필요한 최소 변경 횟수를 구하는 문제입니다. 주어진 수열이 비내림차순이 아니므로, 가장 많은 원소를 그대로 유지할 수 있는 경우를 찾아야 합니다. 비내림차순 수열에서 가장 많이 유지할 수 있는 원소들은 동일한 값의 연속된 부분입니다. 따라서 가장 긴 동일한 값의 연속 부분의 길이를 찾으면 ...

7월 10일 22:00에 게시됨

AtCoder ABC393 풀이: A~F번 문제 해석

A - Poisonous Oyster 문제 요약 두 사람 A, B가 4가지 음식 중 일부를 먹는다. A는 1, 2번을, B는 1, 3번을 먹는다. 각자의 상태(fine/sick)가 주어질 때, 어떤 음식이 독이 있는지 판별하라. 풀이 조건에 따라 직접 분기하면 된다. 코드 #include <bits/stdc++.h> using namespace std; int main() { ios::sync_with_stdio(false); cin.tie(nullptr) ...

7월 5일 02:26에 게시됨

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에 게시됨

Codeforces Round #690 (Div. 3) 풀이

A. Favorite Sequence 길이가 n인 배열 a를 특정 규칙에 따라 재배치하여 배열 b를 만든다. 재배치 규칙은 첫 번째, 마지막, 두 번째, 마지막에서 두 번째, ... 순서로 원소를 선택하는 것이다. 배열 b가 주어졌을 때 원본 배열 a를 복원하는 문제이다. 양쪽 끝에서 중앙으로 이동하는 투 포인터 기법을 적용한다. 왼쪽 포인터는 1부터 시작하고 오른쪽 포인터는 n부터 시 ...

6월 26일 02:34에 게시됨

코드포스 라운드 988 (Div. 3) 문제 해설

A. 동일 숫자 페어 계산 배열 요소의 빈도를 저장하는 카운터를 활용하여 동일한 숫자 쌍의 최대 개수를 계산합니다. 각 숫자에 대해 발생 횟수를 2로 나눈 몫을 합산하여 해결합니다. #include <iostream> #include <unordered_map> using namespace std; int main() { ios_base::sync_with_stdio(false); cin.tie(nullptr); int testCase ...

6월 23일 03:04에 게시됨