[백준/파이썬] 1225번 이상한 곱셈 풀이

업데이트:



문제 정보


풀이

문제

두 수 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 딕셔너리에 숫자별 부분합을 캐싱해 중복 계산을 줄였습니다.



댓글남기기