이것이 코딩테스트다 - 곱하기 혹은 더하기 (java)

2023. 2. 20. 16:22코딩테스트/이것이 코딩테스트다

문제

각 자리가 0부터 9로만 이루어진 문자열 s가 주어질 때 숫자 사이에 x 혹은 + 연산자를 넣어 가장 큰 수를 구하라

 

입력 조건

첫째 줄에 여러 개의 숫자로 구성된 하나의 문자열 s가 주어진다.

 

출력 조건

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

 

나의 풀이

public class greedy02 {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        String s = scanner.next();

        ArrayList<String> arrayList = new ArrayList<>();

        for (int i = 0 ; i < s.length(); i++) {
            arrayList.add(String.valueOf(s.charAt(i)));
        }

        int answer = Integer.parseInt(arrayList.get(0));

        for (int i = 1; i < s.length(); i++) {
            int number = Integer.parseInt(arrayList.get(i));

            if (answer <= 1 || number <= 1) {
                answer += number;
            } else {
                answer *= number;
            }
        }

        System.out.println("answer = " + answer);
    }
}

계산을 할 떄 0 이나 1이 있을 경우에는 더하기를 하는 것이 유리하고 나머지인 경우는 곱하기가 유리하다.