[문제] 각 자리가 숫가 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인 경우에도 곱하기가 아닌 더하기를 해야한다는 점만 주의하면 어렵지 않게 해결할 수 있는 문제였다.
'기타 사이트 > 이코테' 카테고리의 다른 글
[구현문제] 기둥과 보 설치_2020 카카오 신입 공채 (0) | 2021.06.21 |
---|---|
[구현 문제] 게임 개발 (0) | 2021.06.18 |
[구현문제] 자물쇠와 열쇠_2020 카카오 신입 공채 (0) | 2021.06.15 |
[그리디] 무지의 먹방 라이브_2019 카카오 신입 공채 (0) | 2021.06.15 |
[구현문제] 문자열 재정렬 (0) | 2021.06.15 |