요즘에는 개발자들이 회사에 취업하기 위해서 사용한다는 리트코드 (leetcode) 사이트의 문제들을 풀어보고 있습니다. 이제 막 시작한 초보자라 힘든 점이 많아서 이렇게 글로 남겨서 복습하려고 합니다.
문제: Longest Prefix
등급: EASY
<코드>
class Solution(object):
def longestCommonPrefix(self, strs):
if len(strs) == 1:
return strs[0]
#find the shortest string
length = len(strs[0])
shortest = strs[0]
for string in strs:
if len(string) < length:
length = len(string)
shortest = string
# iterate through the shortest string to make different prefixes
# [0:last]
# [0:last-1], [0+1:last]
# [0:last -1 -1], [0+1:last-1], [0+1+1:last]
# ...
i = 0
j = 0
while i < length:
common = shortest[0:length-i]
count = 0
for strings in strs:
if common not in strings[0:length-i]:
break
count += 1
if count == len(strs):
return common
i += 1
# if none, return None
return ""
"""
:type strs: List[str]
:rtype: str
"""
<논리>
나의 논리는 이러했다:
1. 제일 짧은 문자열을 찾는다.
2. 그 문자열의 prefix가 다른 문자열에도 있는지 확인했다
2-2. (긴 prefix부터 수를 세는 방법으로)
그런데, 굉장히 느렸다... :/
<총평 외 comment>
솔루션이 있긴 한데... 너무 어렵다. 다음에 다시 읽어봐야 할 듯싶다.
Happy coding!
'코딩 공부' 카테고리의 다른 글
Leetcode 258. Add Digits - Python (0) | 2022.02.13 |
---|---|
Leetcode 27. Remove Element Python (0) | 2022.02.11 |
Leetcode: 13. Roman to Integer - Python (0) | 2022.02.08 |
Leetcode 9. PalinDrome Number (대칭수) Python 파이썬 (0) | 2022.02.06 |
댓글