알고리즘

[백준, 자바, 1225번] 이상한 곱셈

hminor 2023. 12. 29. 12:09

풀이

  • 해당 문제는 단순히 각 자리의 값을 곱하는 
  • 2중 for문으로 접근하여 해결하려 하니까 시간 초과가 계속 발생해서
  • 방법을 찾아보니 각 자리의 합을 먼저 구한 다음 곱하면 된다는 것을 알게 되어
  • 아래와 같이 간단하게 해결할 수 있었다.

 

추가 학습

  • 파이썬은 위와 같이 적용했을때 되었는데 자바에선 왜 안되는건지 생각해보다가
  • 혹시 int의 초과 값 때문인건지 생각이 들어 Long으로 타입을 변경 후 제출하니 해결할 수 있었다.

 

import java.io.*;
import java.util.*;

public class 이상한곱셈 {
    public static void main(String[] args) throws IOException{
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringTokenizer st = new StringTokenizer(br.readLine());
        char[] a_li = st.nextToken().toCharArray();
        Long a = 0L;
        char[] b_li = st.nextToken().toCharArray();
        Long result = 0L;
        for (int i = 0; i < a_li.length; i++) a += Integer.parseInt(String.valueOf(a_li[i]));
        for (int i = 0; i < b_li.length; i++) result += a*Integer.parseInt(String.valueOf(b_li[i]));
        System.out.println(result);
    }
}