728x90
문제
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
이 된다. 이러한 형택이의 곱셈 결과를 구하는 프로그램을 작성하시오.
https://www.acmicpc.net/problem/1225
입력
첫째 줄에 A와 B가 주어진다.
주어지는 두 수는 모두 10,000자리를 넘지 않는 음이 아닌 정수이다.
수가 0인 경우에는 0만 주어지며, 그 외의 경우 수는 0으로 시작하지 않는다.
출력
첫째 줄에 형택이의 곱셈 결과를 출력한다.
예제 입력
123 45
예제 출력
54
문제 풀이
처음엔 아래와 같이 문자열로 입력받아 이중 반복문으로 풀었으나, 시간 초과로 인해 정답 처리되지 못했습니다.
A, B = input().split()
ans = 0
for i in A:
for j in B:
ans += int(i)*int(j)
print(ans)
해서 아래와 같이 풀었습니다.
A, B = input().split()
A, B = list(map(int,A)), list(map(int,B))
print(sum(A)*sum(B))
아래와 같이 생각하시면 편할 것 같습니다.
1*4 + 1*5 + 2*4 + 2*5 + 3*4 + 3*5
=1(4+5) + 2(4+5) + 3(4+5)
=(1+2+3) * (4+5)
저처럼 파이썬을 독학하시는 분들에게 도움이 되길 바라며,
혹 더 좋은 방법이 있거나 오류가 있다면 편하게 말씀 부탁드립니다.
728x90