저번에 짯던 프로그램이 느리다... 통과를 못하는 중이다.
값 자체는 잘 나오는데 문제점이 무엇일까.
지금 생각한 문제점 : 수를 한번에 하나씩 접근하면서 저장한다.
string이 locality가 보장된다고는 해도 for문을 통해서 하나씩 접근해서 곱하기보다
1만단위로 수를 4개씩 가져와서 곱하는 경우 9999 * 9999 < INT_MAX
임으로 좋지 않을까? 라는 발상을 하게 되었다.
근데 0000 * 0000
의 경우에는 어떻게 정해야하지??
10000 * 10000
의 경우에는 첫 iter에서 0을 저장할 것이고, 두번째 iter에서는 1 * 1
을 저장할 것이다.
두번째 iter의 digit_index는 8이고.. 값은 1이 될 것이다. 이 경우 100000000
이 된다.
평범한 22341 * 54313
곱하기의 경우에는 첫 iter에서 2341 * 4313
이 발생하고 10096733
이 된다.
두번째 iter에서는 5 * 2341
이, 3번째 iter에서는 2 * 4313
, 네번째 iter에서는 2 * 5
가 나온다.
그렇다면 (10 * 10^8) + (5 * 2341 * 10^4) + (2 * 4313 * 10^4) + 10096733
= 22341 * 54313
.
1개의 digit_index를 10^4로 생각하고, 올림을 해줄때도 10000으로 나눈 나머지를 윗 digit_index에 더해주면 될 것이다.
작성했더니 통과... 근데 10^5000승의 곱하기는 아직도 통과를 못했다.
아예 complexity자체를 줄이는 방법으로 접근해야하나?