본문 바로가기
알고리즘

[BAEKJOON] 1225 이상한 곱셈

by mAlfred 2023. 11. 19.
반응형

문제

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

출력

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

예제 입력 1 복사

123 45

예제 출력 1 복사

54

이 문제 같은 경우 생각없이 접근했다가 앗차 싶은 문제였다...

 

브론즈 문제이니까 쉽겠지 싶었는데,,,

 

import sys
import copy
import math
from collections import deque


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

print(s)

 

그냥 반복 돌리면 되겠다 싶었는데

문제를 읽어보니 10,000 자리라고 한다.

그렇다면 반복이 5**5 정도되니 시간 초과가 나타난 것 같다.

3125 니까 2초를 넘겨버린듯.

 

그래서 계산식으로 풀어야된다는 것을 깨닫고 수정하여 풀었다.

import sys
import copy
import math
from collections import deque



a,b = map(str, sys.stdin.readline().strip().split())
s = 0

a = sum(list(map(int, a)))
b = sum(list(map(int, b)))

print(a*b)
반응형

'알고리즘' 카테고리의 다른 글

[BAEKJOON] 10699 오늘 날짜  (0) 2023.11.22
[BAEKJOON] 1357 뒤집힌 덧셈  (0) 2023.11.22
[BAEKJOON] 1159 농구 경기  (0) 2023.11.18
[BAEKJOON] 1212 8진수 2진수  (0) 2023.11.17
[BAEKJOON] 1173 운동  (0) 2023.11.17