LeetCode-14
Longest Common Prefix : Write a function to find the longest common prefix string amongst an array of strings.
note : If there is no common prefix, return an empty string "".
Answer
:::python
class Solution:
def longestCommonPrefix(self, strs: List[str]) -> str:
if len(strs)==1:
return strs[0]
answer = ''
i = 0
min_p = min([len(s) for s in strs])
if min_p==0:
return ""
while i < min_p:
if len(set([s[i] for s in strs]))==1:
answer+=strs[0][i]
else:
break
i+=1
return answer
Result : 24ms Memory: 14mb
Longest Common Prefix (์ต์ฅ ๊ณตํต ์ ๋์ฌ)
Longest Common Prefix(์ต์ฅ ๊ณตํต ์ ๋์ฌ)๋ ๋ฌธ์์ด ์งํฉ์์ ๊ณตํต์ ์ผ๋ก ๋ํ๋๋ ๊ฐ์ฅ ๊ธด ์ ๋์ฌ๋ฅผ ์ฐพ๋ ์๊ณ ๋ฆฌ์ฆ์ ๋๋ค.
์์
์๋ฅผ ๋ค์ด, ๋ค์๊ณผ ๊ฐ์ ๋ฌธ์์ด ์งํฉ์ด ์์ ๋,
["abcdefg", "abcefg", "abcef"]
๊ณตํต์ผ๋ก ๋ํ๋๋ ๊ฐ์ฅ ๊ธด ์ ๋์ฌ๋ "abc"์ ๋๋ค.
์๊ณ ๋ฆฌ์ฆ
Longest Common Prefix๋ฅผ ์ฐพ๊ธฐ ์ํด์๋ ๋ฌธ์์ด ์งํฉ์ ์ฒซ ๋ฒ์งธ ๋ฌธ์์ด์ ๊ธฐ์ค์ผ๋ก ํ์ฌ ๋ค๋ฅธ ๋ฌธ์์ด๋ค๊ณผ ๋น๊ตํด์ผ ํฉ๋๋ค. ๊ฐ ๋ฌธ์์ด์ ์ฒซ ๋ฒ์งธ ๋ฌธ์๋ถํฐ ์ฐจ๋ก๋๋ก ๋น๊ตํ๋ฉด์ ๊ณตํต๋ ๋ถ๋ถ์ ์ฐพ์ต๋๋ค.
์์์ ๋ฌธ์์ด ์งํฉ์์๋ "abcdefg"๋ฅผ ๊ธฐ์ค์ผ๋ก ํ์ฌ ๋ค์๊ณผ ๊ฐ์ด ๋น๊ตํฉ๋๋ค.
a b c d e f g
- - - - - - -
a b c e f g
a b c e f
์์ ๊ฐ์ด ์ฒซ ๋ฒ์งธ ๋ฌธ์์ด๊ณผ ๋ค๋ฅธ ๋ฌธ์์ด์ ๋น๊ตํด๊ฐ๋ฉด์ ๋ชจ๋ ๋ฌธ์์ด์ ๋ํด ๊ณตํต๋ ์ ๋์ฌ๋ฅผ ์ฐพ์ ๋๊น์ง ๋ฐ๋ณตํฉ๋๋ค.
์๊ฐ ๋ณต์ก๋
Longest Common Prefix ์๊ณ ๋ฆฌ์ฆ์ ์๊ฐ๋ณต์ก๋๋ O(S * N)์ ๋๋ค. (S: ๋ฌธ์์ด์ ํ๊ท ๊ธธ์ด, N: ๋ฌธ์์ด์ ๊ฐ์)
'๐ข One step' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[leetcode-347] Top K Frequent Elements (0) | 2023.04.27 |
---|---|
[leetcode-43] Multiply Strings (0) | 2023.04.26 |
[leetcode-12] Integer to Roman (0) | 2023.04.21 |
[leetcode-10] Regular Expression Matching (0) | 2023.04.20 |
[leetcode-8] String to Integer (atoi) (0) | 2023.04.19 |