-
[그리디 알고리즘] 곱하기 혹은 더하기 ★☆☆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; }
'Algorithms > Greedy Algorithm' 카테고리의 다른 글
[그리디 알고리즘] 만들 수 없는 금액 ★☆☆ (0) 2021.02.17 [그리디 알고리즘] 문자열 뒤집기 ★☆☆ (0) 2021.02.17 [그리디 알고리즘] 모험가 길드 ★☆☆ (0) 2021.02.17 [그리디 알고리즘] 1이 될 때까지 ★☆☆ (0) 2021.02.09 [그리디 알고리즘] 큰 수의 법칙 ★☆☆ (0) 2021.02.09