해당 문제에 대해서 다음의 코드가 첫 번째 시도였고, 시간 초과라는 문제가 계속 발생했다.
1
2
3
4
5
6
7
|
import sys
a, b = map(str, sys.stdin.readline().split())
total = []
for i in a:
for j in b:
total.append(int(i)*int(j))
print(sum(total))
|
cs |
그래서 계속 문제를 보던 중, 반복문을 사용하지 않고 하는 방법이 있던 것을 발견했다.
이 부분은 코드의 문제라기보다는 수학 문제에 가깝다고 봐야 할 듯하다.
1*3 + 1*4 + 2*3 + 2*4 + 1*3 + 1*4 = 28
==>이 식을 더욱 간단한 식으로 바꾸면...
(1 + 2 + 1) * (3 + 4)
라는 식이 나온다는 점을 찾아야 한다.
(A + B) * (C + D) = AC + AD + BC + BD라는 형태의 식을 생각하면 금방 답이 나올 것이다...
따라서, 다음과 같은 코드를 해야 제대로 시간 초과 없이 문제를 맞힐 수 있다.
1
2
3
4
5
6
|
a, b = input().split()
a = list(map(int, a))
b = list(map(int, b))
print(sum(a) * sum(b))
|
cs |
'코딩 문제풀이 및 연습 > Python 연습' 카테고리의 다른 글
[백준] 11650_좌표 정렬하기 파이썬 (lambda 활용) (0) | 2021.09.19 |
---|---|
[백준] 1672_DNA 해독 파이썬 (0) | 2021.09.18 |
[백준] 2566_최댓값 파이썬 (0) | 2021.09.16 |
[백준] 15873_공백 없는 A+B 파이썬 (0) | 2021.09.13 |
[백준] 5596_시험 점수 파이썬 (0) | 2021.09.11 |