Algorithm

곱하기 혹은 더하기 - 페이스북 기출 유형

태인킴 2020. 9. 22. 16:40
반응형

페이스북 기출 문제를 풀어 보겠습니다.

 

1. 문제

각 자리가 숫자(0 ~ 9) 로만 이루어진 문자열이 주어졌을 때 왼쪽부터 오른쪽으로 모든 숫자를 확인하여, 사이 사이의 '+', 'x' 연산 중 하나만 사용하여 가장 큰 수를 출력하는 문제 입니다. 다만, 'x' 곱하기 연산을 먼저 계산하는 방식이 아닌, 왼쪽부터 오른쪽으로 계산 하시오.

 

2. 접근

1. 0 또는 1 빼고 나머지 수들은 'x' 곱하기 연산시 값을 더 크게 만듭니다.

2. 따라서 0 또는 1일 경우만 '+' 연산, 나머지는 'x' 곱하기 연산을 해줍니다.

 

public class Page312 {
    public static void main(String[] args) {
        String value = "02984";
        System.out.print(new Page312().solution(value));
    }

    public int solution(String value) {
        // value의 첫번째 char를 int형으로 변환하기
        int total = Integer.parseInt(String.valueOf(value.charAt(0)));
        // 아래와 같은 방법으로도 char to int 변환 가능
        // int total = value.charAt(0) - '0';

        for (int i = 1; i < value.length(); i++) {
            int digi = Integer.parseInt(String.valueOf(value.charAt(i)));

            if (digi == 0 || digi == 1)
                total += digi;
            else if (total == 0 || total == 1)
                total += digi;
            else
                total *= digi;
        }

        return total;
    }
}

 여기서 Integer.parseInt(String.valueOf(value.charAt(i))) 를 통해서 char 형을 int로 형변환 해주었는데, value.charAt(i) - '0' 으로도 char 에서 int로 형변환 할 수 있습니다.

반응형

'Algorithm' 카테고리의 다른 글

소수의 판별  (0) 2020.09.23
모험가 길드  (0) 2020.09.22
공유기 설치 - 백준 2110번  (0) 2020.09.22
파일 통계 프로그램  (0) 2020.09.21
국영수 - '백준 10825번'  (0) 2020.09.18