기타 사이트/이코테
[그리디] 곱하기 혹은 더하기
빙수빈수
2021. 6. 15. 20:00
[문제] 각 자리가 숫가 0~9로만 이루어진 문자열 S가 주어졌을 때, 숫자 사이에 '*', '+'를 삽입하여 만들수 있는 가장 큰 수를 구하는 프로그램을 작성하시오.
[코드]
import java.util.*;
public class greedy_p312 {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner sc=new Scanner(System.in);
String str=sc.next();
// 첫 번째 문자를 숫자로 변경한 값을 대입
long result=str.charAt(0)-'0';
for(int i=1;i<str.length();i++) {
/*
* 문자열의 값이 0이나 1인 경우는 곱하기 보다는 +를 수행하는 것이
* 결과값을 더 크게 만들며, 첫 번째 값이 들어있는 result도
* 이와 같은 이유로 아래 조건은 설정해준다.
*/
if(str.charAt(i)-'0'<=1||result<=1)
result+=str.charAt(i)-'0';
else
result*=str.charAt(i)-'0';
}
System.out.println(result);
}
}
[고찰]
문자열의 값이 1인 경우에도 곱하기가 아닌 더하기를 해야한다는 점만 주의하면 어렵지 않게 해결할 수 있는 문제였다.