관리 메뉴

솜씨좋은장씨

[BaekJoon] 1225번 : 이상한 곱셈 (Python) 본문

Programming/코딩 1일 1문제

[BaekJoon] 1225번 : 이상한 곱셈 (Python)

솜씨좋은장씨 2021. 7. 4. 20:23
728x90
반응형

코딩 1일 1문제! 오늘의 문제는 백준의 이상한 곱셈입니다.

 

1225번: 이상한 곱셈

첫째 줄에 A와 B가 주어진다. 주어지는 두 수는 모두 10,000자리를 넘지 않는다.

www.acmicpc.net

첫번째 시도

def strange_multiplication(string):
    result = 0
    number1, number2 = string.split()
    
    for num1 in number1:
        for num2 in number2:
            result += int(num1) * int(num2)
            
    return result

if __name__ == "__main__":
    string = input()
    
    print(strange_multiplication(string))

먼저 숫자 두개를 입력 받은 뒤에 공백으로 split합니다.

각 숫자에서 각 자리수의 수를 꺼내서 곱한 값들을 쭉 더하여 결과를 도출합니다.

결과는!

아쉽게도 시간초과였습니다.

첫째 줄에 A와 B가 주어진다. 주어지는 두 수는 모두 10,000자리를 넘지 않는다.

위의 조건을 보고 생각해보니 가장 오래걸리는 경우 10,000 * 10,000 == 100,000,000 입니다.

 

그리고 다시 생각해보니 abc * def 일 때

문제로 구하라는 값 (ad + ae + af + bd + be + bf + cd + ce + cf ) == ( a + b + c ) * ( d + e + f ) 와

같다는 것을 꺠달았습니다.

 

Solution

def strange_multiplication(string):
    result = 0
    number1, number2 = string.split()
    
    num1 = list(map(int, number1))
    num2 = list(map(int, number2))

    return sum(num1) * sum(num2)

if __name__ == "__main__":
    string = input()
    
    print(strange_multiplication(string))

위의 아이디어를 바탕으로 각 자리수의 수를 모두 더한 값들을 곲한 값으로 해결하였습니다.

 

SOMJANG/CODINGTEST_PRACTICE

1일 1문제 since 2020.02.07. Contribute to SOMJANG/CODINGTEST_PRACTICE development by creating an account on GitHub.

github.com

Comments