BOJ 2935번 소음 문제

A와 B의 입력이 최대 100자리까지 들어올 수 있어서 string을 이용해서 처리했다.

곱하기일 경우엔 1을 출력하고 A와 B의 0의 개수 합 만큼 0을 출력하면 된다.

더하기일 경우엔 같은 자리면 2 출력후 0의 개수 출력을 한다.

자리수가 다르면 1 출력 후 (0의 개수 차이-1)만큼 0을 출력하고, 1을 다시 출력한 후 작은 0의 개수를 출력하면 된다.

2935.cpp

#include <bits/stdc++.h>
using namespace std;
void print0(int t) {
    for (int i = 0; i < t; i++) {
        cout << "0";
    }
}
int main() {
    string a, b;
    char o;
    cin >> a >> o >> b;
    int a0 = a.size() - 1;
    int b0 = b.size() - 1;
    if (o == '+') {
        if (a0 == b0) {
            cout << "2";
            print0(a0);
        } else {
            cout << "1";
            int big = max(a0, b0);
            int small = min(a0, b0);
            print0(big - small - 1);
            cout << "1";
            print0(small);
        }
    }
    if (o == '*') {
        cout << "1";
        print0(a0 + b0);
    }
}

+ Recent posts