문제풀이/기타

[Python/파이썬] 1225번 이상한 곱셈

딜레이레이 2021. 11. 28. 18:24

문제

A×B를 계산하다 지겨워진 형택이는 A×B를 새로운 방법으로 정의하려고 한다.

A에서 한 자리를 뽑고 × B에서 임의로 한 자리를 뽑아 곱한다.

의 가능한 모든 조합 (A가 n자리, B가 m자리 수라면 총 가능한 조합은 n×m개)을 더한 수로 정의하려고 한다.

예를 들어 121×34는

1×3 + 1×4 + 2×3 + 2×4 + 1×3 + 1×4 = 28

이 된다. 이러한 형택이의 곱셈 결과를 구하는 프로그램을 작성하시오.



입력

첫째 줄에 A와 B가 주어진다. 주어지는 두 수는 모두 10,000자리를 넘는 음이 아닌 정수이다. 수가 0인 경우에는 0만 주어지며, 그 외의 경우 수는 0으로 시작하지 않는다.


출력

첫째 줄에 형택이의 곱셈 결과를 출력한다.


코드

# 1225번 이상한 곱셈

import sys

a, b = map(list, sys.stdin.readline().split())
a = map(int, a)
b = map(int, b)

print(sum(a) * sum(b))

사실 처음에는 딱 보고 쉬운 문제인 것 같아서 아래와 같이 후루룩 짰는데 시간 초과가 나와서 당황했다.

아래의 코드의 경우 이중 for문을 도니 시간 복잡도가 O(n^2)가 나와서 그런 것 같다.

# 1225번 이상한 곱셈

import sys

a, b = map(list, sys.stdin.readline().split())
sum = 0
for i in a:
    for j in b:
        sum += int(i) * int(j)

print(sum)