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