[백준/파이썬] 1225번 이상한 곱셈 풀이
업데이트:
문제 정보
- 문제 출처: 백준 온라인 저지
- 문제 링크: 1225번 이상한 곱셈
- 문제풀이 코드 GitHub 링크
- 제출 언어: Python 3
풀이
문제
두 수 A, B의 모든 자리수 쌍 (a_i, b_j)에 대해
a_i * b_j를 전부 더한 값을 구하는 문제입니다.
코드
a,b=map(list,input().split())
s=0;
dp={str(i):None for i in range(10)}
for aa in a:
if dp[aa] is not None:
s+=dp[aa]
continue
dp[aa]=0
for bb in b:
dp[aa]+=int(aa)*int(bb)
s+=dp[aa]
print(s)
설명
문자열로 각 자리 숫자를 순회하면서
A의 각 자리와 B의 모든 자리를 곱해 누적합니다.
같은 숫자 자리가 반복될 수 있어
dp 딕셔너리에 숫자별 부분합을 캐싱해 중복 계산을 줄였습니다.
댓글남기기