본문 바로가기
코딩 공부

Leetcode 14. Longest Prefix

by 카우보이연구소 2022. 2. 9.

요즘에는 개발자들이 회사에 취업하기 위해서 사용한다는 리트코드 (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!

 

댓글