Algorithms/Greedy Algorithm

[그리디 알고리즘] 곱하기 혹은 더하기 ★☆☆

잉숭 2021. 2. 17. 18:54

문제 : 숫자로만 이루어진 문자열 S가 주어질 때, 숫자 사이에 X 또는 + 연산자를 추가하여 만들 수 있는 가장 큰 수는?

 

입력 조건

  • 첫째 줄에 여러 개의 숫자로 구성된 문자열 S가 주어진다 (1<=size(S)<=20)

출력 조건

  • 첫째 줄에 만들어 질 수 있는 가장 큰 수를 출력한다

입력 예시 1

02984

출력 예시 1

576

입력 예시 2

567

출력 예시 2

210

현재 계산값이 0이 아니라면 0이나 1을 만났을 때 더해주고 나머지 숫자들은 곱해주면 된다


#include<bits/stdc++.h>
using namespace std;
string str;
char c;
int result;
int main() {
    ios::sync_with_stdio(0);
    cin.tie(0);
    cin >> str;
    for (int i = 0;i < str.size();i++) {
        if (result == 0) {
            if (str[i] == '0') continue;
            result = int(str[i] - 48);
        }
        else {
            if (str[i] == '0') continue;
            if (str[i] == '1') result++;
            else result *= int(str[i] - 48);
        }
    }
    cout << result;
    return 0;
}