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에 게시됨
AtCoder ABC368 풀이: A~F번 문제 분석
A - Cut
문제 요약
길이 n인 수열에서 마지막 k개 원소를 앞으로 이동시킨 결과를 출력한다.
핵심 아이디어
배열을 회전시키는 기초적인 구현 문제이다. n-k 인덱스부터 끝까지의 원소를 먼저 출력한 뒤, 나머지 원소를 순서대로 출력하면 된다.
구현
#include <bits/stdc++.h>
using namespace std;
int main() {
ios::sync_with_stdio(false);
cin.tie(nu ...
6월 30일 23:02에 게시됨
AtCoder ABC321 풀이 노트
A - 321-like Checker (난이도 22)
주어진 숫자의 각 자리를 순차적으로 확인하여 이전 자리보다 현재 자리가 항상 작은지 검사합니다.
void solve() {
int n;
cin >> n;
int prev = -1;
while (n > 0) {
int cur = n % 10;
if (cur <= prev) {
cout << "No" << endl;
return;
} ...
6월 30일 17:51에 게시됨
하이쿠 조건을 만족하는 구간 존재 여부 판별 알고리즘
O(n log n) 이분 탐색 기법
누적 합 배열을 활용하여 각 시작 인덱스별로 X, Y, Z 합 구간의 종료 지점을 전처리합니다.
이진 탐색을 통해 정확히 X, Y, Z에 해당하는 부분 합의 끝 위치를 계산한 후,
연속된 세 구간이 조건을 만족하는지 O(n) 시간에 검증합니다.
#include <iostream>
#include <vector>
#include <climits>
using namespace std;
...
6월 29일 02:27에 게시됨
ABC362 문제 해설
A 문제
문제는 매우 간단합니다. 세 정수 r, g, b와 문자열 c가 주어집니다. c가 "Red"이면 g와 b 중 최솟값을, "Blue"이면 r와 g 중 최솟값을, 그 외의 경우 r와 b 중 최솟값을 출력하면 됩니다.
코드 보기
#include<bits/stdc++.h>
using namespace std;
int main(){
int red, green, blue;
string color;
cin >> red > ...
6월 19일 01:43에 게시됨
AtCoder Beginner Contest 357 문제 분석 및 풀이
A - 손 소독하기
N명의 외계인이 순차적으로 손을 소독하려고 합니다. 각 외계인은 H_i개의 손을 가지고 있으며, 전체를 소독해야 합니다. 소독제는 총 M회 사용할 수 있습니다. 한 외계인이 소독을 할 때 필요한 양만큼만 사용하며, 부족하면 남은 양만 소모합니다. 모든 손을 소독한 외계인의 수를 구하세요.
단순히 앞에서부터 순회하면서 소독제 잔량을 갱신하고, 소진 ...
6월 13일 19:05에 게시됨
ABC363 문제 풀이
A - 값의 범위
주어진 값 r이 어느 범위에 속하는지 확인하고, 그 범위의 상한에서 r을 뺀 값을 출력하면 된다.
100 미만이면 100-r, 200 미만이면 200-r, 300 미만이면 300-r을 출력한다.
코드 확인하기
#include<bits/stdc++.h>
using namespace std;
int main() {
int r;
cin >> r;
if(r < 100) {
cout << 100 - r;
...
6월 13일 16:20에 게시됨
AtCoder 초보자 대회 450 (ABC450)
A - 3,2,1,GO
값을 입력받은 후 1부터 입력값까지 반복하여 출력합니다.
코드 보기
#include<bits/stdc++.h>
using namespace std;
int n;
int main(){
cin >> n;
for(int i = n; i > 1; --i)
cout << i << ',';
cout << 1;
return 0;
}
B - Split Ticketing
a, b, c를 모두 반복하며 조건을 검사합니다. 조 ...
6월 12일 19:32에 게시됨
AtCoder Beginner Contest 380 문제 분석 및 풀이
A: 문자열 패턴 확인
주어진 문자열에서 '1', '2', '3'의 등장 횟수를 세어, 각각 1개, 2개, 3개인지 검사한다. 이를 위해 배열을 사용해 각 숫자의 빈도를 저장하고 조건을 비교한다.
#include <iostream>
#include <string>
using namespace std;
void solve() {
string s;
cin >> s;
int cnt[4] = {};
for (char c : s) cnt[c - '0' ...
6월 10일 01:13에 게시됨
격자 얼음 바닥 문제 해결 (Toyota Programming Contest 2023#4)
시간 제한: 2초 / 메모리 제한: 1024MB
점수: 400점
문제 설명
N x M 크기의 격자가 주어지며, 이 격자는 얼음 또는 바위로 구성되어 있습니다.
(i, j)는 위에서 i번째 행과 왼쪽에서 j번째 열에 있는 칸을 나타냅니다.
각 칸은 N개의 문자열 S1, S2, ..., SN으로 표현되며, 각 문자열의 길이는 M입니다.
Si의 j번째 문자가 '.'이면 칸 (i, j)는 얼음이고, '#'이면 바위입 ...
6월 7일 21:05에 게시됨