ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Code605s Round # 605 (Div. 3)
    코드포스(CodeForce) 2020. 1. 16. 22:55
    반응형

    https://codeforces.com/contest/1272/problem/A

     

    Problem - A - Codeforces

     

    codeforces.com

    세친구가 있는대 각각의 자리가 주어진다. 각 친구들은 현재 위치에서 +1, -1 이동하거나 안움직 일수 있는데 각 친구들의 거리의 차이중 가장 적은 거리를 구하는 문제로서 모든 경우의 수 조합을 만들어서 주어진 식 X = |A-B| + |A-C| + |B+C| 의 최소값을 구하면 된다. 문제의 제약시간 1초고 입력으로 들어오는 수 A, B, C 는 10^9 범위 안에 들기 때문에 BRUTE-FORCE 로 가능하다.

     

    
    #include <iostream>
    #include <sstream>
    #include <string>
    #include <algorithm>
    #include <functional>
    #include <vector>
    #include <list>
    #include <queue>
    #include <deque>
    #include <map>
    #include <unordered_map>
    #include <set>
    #include <stack>
    #include <cstring>
    
    using namespace std;
    
    #define MAX_SIZE 100
    #define INF 0x7fffffff
    #define CENDL "\n"
    #define ll long long
    
    int calc(int a, int b, int c) {
        return abs(a - b) + abs(a - c) + abs(b - c);
    }
    int main() {
    
        std::ios::sync_with_stdio(false); cin.tie(0); cout.tie(0);
    
        int count; cin >> count;
        
        while (count--) {
            int a, b, c; cin >> a >> b >> c;
    
            int sol = calc(a, b, c);
    
            for (int da = -1; da <= 1; da++) {
                for (int db = -1; db <= 1; db++) {
                    for (int dc = -1; dc <= 1; dc++) {
                        int na = a + da;
                        int nb = b + db;
                        int nc = c + dc;
                        
                        int cand = calc(na, nb, nc);
    
                        sol = min(sol, cand);
                    }
                }
            }
    
            cout << sol << CENDL;
        }
        return 0;
    }

     

    https://codeforces.com/contest/1272/problem/B

     

    Problem - B - Codeforces

     

    codeforces.com

    로봇이 청소를하는데 메시지는 LRDU 로 들어온다 전제조건은 한번 지나간 위치는 다시 올수는 없으나 허용되는 위치는 0.0 시작점은 재진입을 할수 있다. 걍 풀었다 아아아아

     

    
    #include <iostream>
    #include <sstream>
    #include <string>
    #include <algorithm>
    #include <functional>
    #include <vector>
    #include <list>
    #include <queue>
    #include <deque>
    #include <map>
    #include <unordered_map>
    #include <set>
    #include <stack>
    #include <cstring>
     
    using namespace std;
     
    #define MAX_SIZE 100
    #define INF 0x7fffffff
    #define CENDL "\n"
    #define ll long long
     
     
     
    const string MOVES = "LRUD";
     
    int main() {
     
        std::ios::sync_with_stdio(false); cin.tie(0); cout.tie(0);
     
        int q;
        cin >> q;
        for (int i = 0; i < q; ++i) {
            string s;
            cin >> s;
            map<char, int> cnt;
            for (auto c : MOVES) cnt[c] = 0;
            for (auto c : s) ++cnt[c];
            int v = min(cnt['U'], cnt['D']);
            int h = min(cnt['L'], cnt['R']);
            if (min(v, h) == 0) {
                if (v == 0) {
                    h = min(h, 1);
                    cout << 2 * h << endl << string(h, 'L') + string(h, 'R') << endl;
                }
                else {
                    v = min(v, 1);
                    cout << 2 * v << endl << string(v, 'U') + string(v, 'D') << endl;
                }
            }
            else {
                string res;
                res += string(h, 'L');
                res += string(v, 'U');
                res += string(h, 'R');
                res += string(v, 'D');
                cout << res.size() << endl << res << endl;
            }
        }
     
        return 0;
    }
     
     
    반응형

    댓글

Designed by Tistory.