알고리즘

[Leetcode, Solution] 14. Longest Common Prefix 문제풀이

벌게진눈 2021. 10. 9. 00:49
반응형

안녕하세요. 이번에는 14번 Leetcode 문제를 풀어보고자 합니다. 

Leetcode 문제를 풀기전!!! 아직도 불편하게 웹사이트에서 테스트 진행하고 계신가요?
Jetbrain 계열의 제품들에 있는 Leetcode 플러그인을 사용해보세요. 
테스트코드도 편하게 추가할 수 있고 자동완성도 되니 효율성이 올라갑니다! 
Leetcode 플러그인 설치방법은 아래 포스트를 참고해주세요.

Leetcode 문제를 Pycharm(Jetbrain) 에서 풀어볼까?

문제

Write a function to find the longest common prefix string amongst an array of strings.
If there is no common prefix, return an empty string "".

Example 1:
Input: strs = ["flower","flow","flight"] Output: "fl"
Example 2:
Input: strs = ["dog","racecar","car"] Output: ""

Explanation: There is no common prefix among the input strings.

Constraints:
1 <= strs.length <= 200
0 <= strs[i].length <= 200
strs[i] consists of only lower-case English letters.
Related TopicsString
👍 5607👎 2523

간단히하면 배열의 원소들에 공통된 접두사를 리턴하라는 의미입니다. 

해결

class Solution:
    def longestCommonPrefix(self, strs: List[str]) -> str:
        result = ''

        # 하나의 원소만 존재하는 경우 해당 원소를 리턴한다.
        if len(strs) == 1:
            return strs[0]

        # 첫번째 원소를 기준으로 인덱스를 사용한다.
        # 첫번째 원소가 다른 원소보다 긴 경우는 IndexError 로 비효율성을 줄일 수 있다.
        for i, char in enumerate(strs[0]):
            compare_char = strs[0][i]  # 비교할 단어를 저장

            for string in strs:
                try:
                    # 입력받은 배열의 특정 인덱스를 비교할 단어와 비교하여 다르면 메서드 종료
                    if compare_char != string[i]:
                        return result
                except IndexError:
                    # 인덱스 에러나면 입력받은 배열의 원소중 하나의 비교가 끝났다는 뜻이므로 종료
                    return result

            # 위 for 문을 완료하면 배열의 모든 원소의 특정 인덱스는 같다고 보아도됨
            result += compare_char
        return result

 

결과

 

해당 포스트를 읽어주셔서 감사합니다. 

행복한 하루 보내세요 ~!

 

반응형