[백준]B2-1225

oxllz·2022년 2월 8일
0

백준-브론즈

목록 보기
40/65
post-thumbnail

문제

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으로 시작하지 않는다.


출력

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


풀이

시간초과 코드

from sys import stdin
mylist = list(stdin.readline().split())
a = list(mylist[0])
b = list(mylist[1])

res = 0
for i in a:
    for j in b:
        res += int(i) * int(j)
print(res)

반복문을 이용해 A와 B의 값 하나하나를 곱하고 더하는 형식
ex) 121×34
1×3 + 1×4 + 2×3 + 2×4 + 1×3 + 1×4 = 28

성공 코드

from sys import stdin
A, B = stdin.readline().split()
A = list(map(int, A))
B = list(map(int, B))
print(sum(A) * sum(B))

A의 합계, B의 합계를 각각 구해 곱하는 방식
ex) 121×34
(1 + 2 + 1) * (3 + 4) = 28

list(map(int, A)) 이런 방식으로도 list 만들 수 있다는 것을 알게됐다.

0개의 댓글