본문 바로가기
프로그래밍

leetcode 14. Longest Common Prefix 풀이

by 웃즐 2021. 4. 7.

문제 : 소문자로 쓰인 문자열들로 구성된 list에서 가장 긴 공통의 접두어를 구해서 반환하라. 없을 시에는 "" 공백 반환

Follow up : -

 

아이디어 : list가 비어있을 시에는 공백을 반환하고, list를 문자열의 길이 순으로 정렬한 후 가장 첫 번째 요소 (길이가 가장 짧은) 를 기준으로 삼아서 list를 순회하며 공통되지 않은 요소 발견 시 기준 문자열을 수정한다.

 

코드 :

class Solution:
    def longestCommonPrefix(self, strs: List[str]) -> str:
        strs.sort(key=lambda x: len(x))
        if not strs:
            return ""
        ss = strs[0]
        n = len(ss)
        for st in strs:
            i = 0
            while i < n:
                if ss[i] != st[i]:
                    if i == 0:
                        return ""
                    ss = ss[0:i]
                    n = len(ss)
                    continue
                else:
                    i += 1
        return ss

 

학습 포인트 : lambda 를 이용하면 더 짧게 풀이도 가능할 것 같은데 좀 더 생각해봐야겠다.

 

출처 : leetcode.com/problems/longest-common-prefix/