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;
}