A. GCD Sum

#include <bits/stdc++.h>
#define fastio ios::sync_with_stdio(0), cin.tie(0)
#define all(c) c.begin(), c.end()
#define INF 1e9
typedef long long ll;
typedef unsigned long long ull;
using namespace std;

ll gcd(ll a, ll b){
    if(b == 0) return a;
    else return gcd(b, a%b);
}

int main(){
    fastio;
    int tc;
    cin >> tc;
    while(tc--){
        ll n;
        cin >> n;
        while(true){
            string s = to_string(n);
            ll sum = 0;
            for(char x : s){
                sum += (ll)x-'0';
            }
            if(gcd(n, sum) > 1) break;
            n++;
        }
        cout << n << "\n";
    }
    return 0;
}

주어진 수 n과 n의 자리수를 모두 더한 값의 최대공약수가 1보다 크도록 n을 1씩 증가시킬 때 제일 작은 값을 구하는 문제이다.

문제의 조건을 그대로 구현해주면 된다.

B. Box Fitting

C++

#include <bits/stdc++.h>
#define fastio ios::sync_with_stdio(0), cin.tie(0)
#define all(c) c.begin(), c.end()
#define INF 1e9
typedef long long ll;
typedef unsigned long long ull;
using namespace std;

int main(){
    fastio;
    int tc;
    cin >> tc;
    while(tc--){
        int n, W;
        cin >> n >> W;
        map<int, int> w;
        for(int i = 0; i < n; i++){
            int tmp;
            cin >> tmp;
            w[tmp]++;
        }
        int ans = 0;
        while(n){
            ans++;
            int rW = W;
            for(int x = 19; x >= 0; x--){
                int v = pow(2, x);
                int d = rW/v;
                int c = w[v];
                int e = min(d, c);
                rW -= v*e;
                w[v] -= e;
                n -= e;
            }
        }
        cout << ans << "\n";
    }
    return 0;
}

너비가 2의 거듭제곱 형태로 주어지는 n개의 높이 1 직사각형 블록을 W 너비의 박스에 담을 때 가능한 높이의 최소값을 구하는 문제이다.

예제 몇개를 풀다보니 너비가 큰 블록부터 가능한대로 쌓아 올리는것이 최적해일 것 같아 그리디로 해결했다.

후기

1솔 전사를 탈출했다. C번은 바텀업 dp 연습이 부족해서 풀지 못했다.

'Codeforces' 카테고리의 다른 글

Codeforces #1475C Ball in Berland  (0) 2021.03.31
Codeforces #1484B Restore Modulo  (0) 2021.03.30
Codeforces #1496B Max and Mex  (0) 2021.03.29
Codeforces #1506B Partial Replacement  (0) 2021.03.27
Codeforces #1499B Binary Removals  (0) 2021.03.27

댓글