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

Codeforces Round 1029 Div.3 A-D번 문제 해설

A. False Alarm 문제의 지시에 따라 직접 구현하면 됩니다. 1이 등장하는 위치들을 기록하고, 인접한 1들 사이의 거리를 누적하여 총 소요 시간을 계산합니다. 정답 코드: #include <bits/stdc++.h> using namespace std; int main() { ios::sync_with_stdio(false); cin.tie(nullptr); int tc; cin >> tc; while (tc--) { ...

6월 18일 01:45에 게시됨

USACO 2022년 11월 대회 문제 풀이: 외톨이 사진과 단어 맞추기

문제 1: 외톨이 사진(Lonely Photo) 농장주 존이 N마리의 소를 새로 샀다. 각 소는 게른지(Guernsey) 또는 홀스틴(Holstein) 품종이다. 소들이 한 줄로 서 있을 때, 길이가 3 이상인 모든 연속 구간에 대해 사진을 찍는다. 단, 구간 내에 특정 품종이 정확히 한 마리만 존재하는 "외톨이 사진"은 폐기처분한다. 폐기되는 사진의 총 개수를 구하라. 입력 첫 줄: N (소의 ...

6월 16일 01:00에 게시됨

백트래킹, 그리디, 분할정복, 동적계획법 알고리즘 비교

백트래킹 알고리즘 백트래킹은 해결 가능한 모든 경로를 탐색하는 알고리즘으로, 재귀 호출을 통해 결정 트리를 탐색하며 실패 시 이전 상태로 돌아가는 방식을 사용합니다. def backtrack(current_path, choices): if is_solution(current_path): add_to_result(current_path) return for choice in choices: if not is_valid(ch ...

6월 15일 16:23에 게시됨

중산 집중 훈련 기록 (7.28–8.11)

7월 29일 주로 모의고사 중심으로 진행되었으며, 일부 문제에 대한 분석과 후기 포함. T1 간단한 시뮬레이션 문제. CSP-S2023 T3보다도 쉬웠다. 디버그 문구를 지우지 않아서 실수했지만, 다행히 오답은 아니었다. 복잡도가 높을 수 있다는 점을 인지하고, 더 효율적인 접근 방식을 고려해야 한다. 결국 코드는 통과했으나, 조건이 애매하면 예외 처리가 필요하다. T2 초기 ...

6월 11일 20:47에 게시됨

LeetCode 2270: 누적합을 활용한 배열 분할 조건 탐색

문제 이해LeetCode 2270번 Split Array Largest Sum과 유사한 조건으로, 배열을 두 부분으로 나누었을 때 왼쪽 구간의 합이 오른쪽 구간의 합 이상이 되는 분할 지점의 개수를 구하는 문제입니다.길이가 n인 배열 nums에서 인덱스 i (0 ≤ i < n-1)를 기준으로 분할할 때, 다음 조건을 만족하면 유효한 분할입니다:sum(nums[0..i]) ≥ sum(nums[i+1..n-1])핵심 관찰전체 ...

6월 6일 21:21에 게시됨

9월 6일 알고리즘 대회 풀이

$$100 + 90 + 65 + 0 = 255$$점, 학내 $$rk7$$. 링크 T1 분류: 가볍게 풀 수 있는 문제 (노란색 난이도) 문제의 핵심은 반전 연산의 특성이다. 두 위치가 서로 다르다면, 그 중 하나만 바꾸는 것이 아니라, 인접한 두 위치가 서로 순서가 잘못되어 있을 때에만 동시에 교환하는 것이 최적임을 알 수 있다. 따라서 단순한 그리디 시뮬레이션으로 해결 가능하며, 시간 복잡도 ...

5월 29일 13:16에 게시됨