LeetCode-43
Multiply Strings : Given two non-negative integers num1 and num2 represented as strings, return the product of num1 and num2, also represented as a string.
note : Note: You must not use any built-in BigInteger library or convert the inputs to integer directly.
:::python
class Solution:
def multiply(self, num1: str, num2: str) -> str:
if (num1=='0') or (num2=='0'):
return '0'
return str(int(num1)*int(num2))
Result : 19ms Memory: 13.9mb
using dict
:::python
class Solution:
def multiply(self, num1: str, num2: str) -> str:
num_dict = {
"0":0
,"1":1
,"2":2
,"3":3
,"4":4
,"5":5
,"6":6
,"7":7
,"8":8
,"9":9
}
i=0
answer = ''
s = 0
for nu, n1 in enumerate(num1[::-1]):
for nu2, n2 in enumerate(num2[::-1]):
s += num_dict[n1]*10(nu)*num_dict[n2]*10nu2
return str(s)
Result : 230ms Memory: 14mb
Multiply Strings
Multiply Strings๋ ๋ ๊ฐ์ ๋ฌธ์์ด์ ์ ๋ ฅ์ผ๋ก ๋ฐ์์, ๋ ๋ฌธ์์ด์ด ๋ํ๋ด๋ ์ซ์๋ฅผ ๊ณฑํ ๊ฒฐ๊ณผ๋ฅผ ๋ฌธ์์ด ํํ๋ก ๋ฐํํ๋ ํจ์์ด๋ค.
๋ฌธ์ ์ค๋ช
์๋ฅผ ๋ค์ด, ์ฃผ์ด์ง ๋ฌธ์์ด์ด "123"๊ณผ "456"์ธ ๊ฒฝ์ฐ, ๋ ์ซ์๋ฅผ ๊ณฑํ ๊ฒฐ๊ณผ๋ "56088"์ด ๋๋ค.
์๊ณ ๋ฆฌ์ฆ ์ค๋ช
์ฃผ์ด์ง ๋ฌธ์ ์์๋ ๋ฌธ์์ด๋ก ํ์๋ ๋ ์ซ์๋ฅผ ๊ณฑํ ๊ฒฐ๊ณผ๋ฅผ ๋ฌธ์์ด ํํ๋ก ๋ฐํํด์ผํ๋ค. ์ด๋ฅผ ๊ณ์ฐํ๊ธฐ ์ํด์๋ ๋ค์๊ณผ ๊ฐ์ ์๊ณ ๋ฆฌ์ฆ์ ์ฌ์ฉํ ์ ์๋ค.
- ์ ๋ ฅ์ผ๋ก ์ฃผ์ด์ง ๋ ๋ฌธ์์ด์ ๋ค์ง๋๋ค.
- ์ ๋ ฅ์ผ๋ก ์ฃผ์ด์ง ๋ฌธ์์ด ์ค ๊ธธ์ด๊ฐ ์งง์ ๋ฌธ์์ด์ ๊ธฐ์ค์ผ๋ก ์ซ์๋ฅผ ํ๋์ฉ ๊ฐ์ ธ์์, ๊ธด ๋ฌธ์์ด๊ณผ ๊ณฑํ๋ค.
- ๊ณฑ์ ๊ฒฐ๊ณผ๋ฅผ answer๋ผ๋ ๋ณ์์ ๋ํด์ค๋ค. answer๋ ์ด๊ธฐ๊ฐ์ผ๋ก 0์ ๊ฐ์ง๋ค.
- ๋ง์ง๋ง์ผ๋ก, answer์ ์ ์ฅ๋ ๊ฐ์ ๋ค์ ๋ค์ง์ด์ ๋ฆฌํดํ๋ค.
์ด ์๊ณ ๋ฆฌ์ฆ์ ๋ ๋ฌธ์์ด์ ๊ธธ์ด๊ฐ ์ต๋ 10^4์ธ ๊ฒฝ์ฐ์๋ ์๋ํ ์ ์์ผ๋ฉฐ, ์๊ฐ๋ณต์ก๋๋ O(nm)์ด ๋๋ค. (n์ ๋ฌธ์์ด1์ ๊ธธ์ด, m์ ๋ฌธ์์ด2์ ๊ธธ์ด)
์์ ์ฝ๋
class Solution:
def multiply(self, num1: str, num2: str) -> str:
num1, num2 = num1[::-1], num2[::-1]
m, n = len(num1), len(num2)
ans = [0] * (m + n)
for i in range(m):
for j in range(n):
ans[i+j] += int(num1[i]) * int(num2[j])
carry = 0
for i in range(m+n):
temp = ans[i] + carry
ans[i] = temp % 10
carry = temp // 10
while len(ans) > 1 and ans[-1] == 0:
ans.pop()
return ''.join(map(str, ans[::-1]))
์ ์ฝ๋๋ Python์ผ๋ก ์์ฑ๋ Multiply Strings์ ์์ ์ฝ๋์ด๋ค. ์ฝ๋์ ์ ๋ฐ์ ์ธ ๋ถ๋ถ์์๋ ์์์ ์ค๋ช ํ ์๊ณ ๋ฆฌ์ฆ๊ณผ ์ ์ฌํ ๋ฐฉ๋ฒ์ด ์ฌ์ฉ๋๊ณ ์๋ค. ๋จ, ๋ํ ์ผํ ๋ถ๋ถ์ ์ฝ๋๋ฅผ ๋ณด๋ฉด์ ์ดํด๋ฅผ ํ๋๋ก ํ์.
'๐ข One step' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[leetcode-48] Rotate Image (0) | 2023.04.30 |
---|---|
[leetcode-347] Top K Frequent Elements (0) | 2023.04.27 |
[leetcode-14] Longest Common Prefix (0) | 2023.04.24 |
[leetcode-12] Integer to Roman (0) | 2023.04.21 |
[leetcode-10] Regular Expression Matching (0) | 2023.04.20 |