AtCoder Beginner Contest 119 A - Still TBD \(\text{년도}\times 800 + \text{월}\times 40 + \text{일}\)로 계산하면 그나마 구현이 편하다.123456789101112#include int main() { int a, b, c; scanf("%d/%d/%d", &a, &b, &c); a = a * 40 * 20 + b * 40 + c; printf("%s", a > n; long long tot1 = 0; double tot2 = 0; while (n--) { string x, u; cin >> x >> u; if (u == "JPY") tot1 += stoll(x); else tot2 += stod(x); } printf("%.10lf..
Codeforces Round #541 (Div. 2) 보라색 달려고 2시간 정말 꽉꽉 채워서 해봤다... A. Sea Battle생각해보면, 모든 경우에서 \(4+2\text{max}(w_1,w_2)+2h_1+2h_2\)가 답이 된다.대충 생각해보고 그냥 제출해놨다가 다른거 다 풀고 다시풀려고했는데, 시간을 풀로 써서 다시 풀 시간이 없었다.그래도 이 방법이 맞아서 다행이다. 12345678910#include int main() { int a, b, c, d; scanf("%d %d %d %d", &a, &b, &c, &d); printf("%d", 4 + 2 * (std::max(a, c) + b + d)); return 0;}Colored by Color Scriptercs B. Draw!일단 \..
AtCoder Beginner Contest 118 A - B +/- A 문제 설명대로 \(A\)가 \(B\)의 약수면 \(A+B\)를, 아니라면 \(B-A\)를 출력하면 된다. 123456789101112131415#include int main() { int a, b; scanf("%d %d", &a, &b); if (b % a == 0) printf("%d", a + b); else printf("%d", b - a); return 0;} cs B - Foods Loved by Everyone이것도 문제 설명대로 각 음식이 몇 번 나왔는지 센 다음에, 모두에게 선택받은 음식의 수를 세면 된다. 1234567891011121314151617181920212223242526272829#include i..
Codeforces Round #520 (Div. 2) 사실 B번은 너무나도 틀리기 쉬운문제라서 내 것도 당연히 반례가 있을거라고 생각하긴 했다. 그래도 왠만한거 다 해보고 잠근다음에 핵을 하려 했는데... 너무 졸려서 그냥 중간에 잤다. 시스템테스트에서 너무 많이들 틀려서 순위가 크게 바뀌지 않은게 다행이긴 하다. 레이팅이 1814에서 1825로 11점 올랐는데, B번을 맞았으면 50점은 올랐을 것 같은데 조금 아쉽다. 다시 떨어지더라도 보라색 달고싶은데... A. A Prank 증가하는 수열에서 다시 복구할 수 있도록 원소들을 지우라는건데, 당연히 1씩 증가하는 부분의 길이를 구하면 된다. 문제는 복구할 때 원소들이 1부터 1000사이라는 점인데, 수열 양 옆에 1과 1000을 넣어두면 깔끔하게 처리..
Educational Codeforces Round 50 (Rated for Div. 2) A. Function height 문제 설명도 길고 그래프까지 나와있어서 무서웠는데, 해석만 하면 간단하다. 어떤 점의 높이를 1올리는 것은 넓이를 1올리는 것과 같다. 그러니 점들에 넓이를 나눠준다고 생각하면 된다.12345678910#include int main() { long long n, k; scanf("%lld %lld", &n, &k); printf("%lld", (n + k - 1) / n); return 0;}Colored by Color Scriptercs B. Diagonal Walking v.2 우선 \(k\)보다 큰 좌표에는 도달할 수 없다. 그리고, \(x\)좌표와 \(y\)좌표 모두 마..
Manthan, Codefest 18 (rated, Div. 1 + Div. 2) A. Packets 영어가 안 돼서 문제를 이해하느라 힘들었다. 문제 내용은, 동전의 총합이 \(n\)이 되고, 그 중 몇개를 뽑아 합으로 \(1\)부터 \(n\)까지의 수를 모두 만들 수 있게 하는 동전의 최소 개수를 구하는 것이다. 동전을 선택하는 것을 비트로 생각하면, 이진수로 나타내는 것이 가장 효율적이므로 가까운 2의 제곱수를 찾으면 된다. 이해 못 하고 한 번 제출해서 틀렸었다.1234567891011121314#include int main() { long long n; scanf("%lld", &n); for (long long i = 1, cnt = 1;true;i *= 2, cnt++) if (i > n)..