새소식

Programming/1 Day 1 Commit

[LeetCode] Longest Common Prefix (Python3)

  • -
 

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 lowercase English letters.

사실 처음에 고민을 많이 했지만,,, 풀지 못했고 다른 분들이 leetcode에 올려두신 solution을 참고했다.

 
class Solution:
    def longestCommonPrefix(self, strs: List[str]) -> str:
        # get str
        # print(strs)
        
        res = ""
        # loop statement for the number of input str
        for a in zip(*strs):
            print(set(a))
            if len(set(a)) == 1:
                res += a[0]
            else :
                return res
        return res
  • 아직 python 문법에 대해 모르는 부분이 많다.
  • 파이썬의 경우 주먹구구식으로 프로젝트부터 진행했던 터라 체계적으로 어떻게 돌아가는 지도 잘 알지 못하고, 다른 언어와 달리 파이썬은 제공해주는 기본 함수들이 굉장히 많은데 이런 부분들을 잘 알지 못하고 있다.
  • 그런 면에 있어서 오늘은 'zip' 함수와 'set'함수에 대해서 나오는 데 이를 한 번 살펴보자.

zip() Function

The zip() function returns a zip object, which is an iterator of tuples where the first item in each passed iterator is paired together, and then the second item in each passed iterator are paired together etc.

  • 그러니까 이게 무슨 말인가 하면, 각각의 tuple의 짝을 이뤄준다는 뜻이다.
  • 그래서 지퍼를 올리는 것 처럼 짝을 맞춰주는 것인데 밑에 예제를 돌려보면 (('John', 'Jenny'), ('Charles', 'Christy'), ('Mike', 'Monica')) 이런 식으로 짝을 이룬다.
In [4]:
a = ("John", "Charles", "Mike")
b = ("Jenny", "Christy", "Monica")

x = zip(a, b)
print(tuple(x))

# Source: https://www.w3schools.com/python/ref_func_zip.asp
(('John', 'Jenny'), ('Charles', 'Christy'), ('Mike', 'Monica'))

set() Function

Sets are used to store multiple items in a single variable. Set items are unordered, unchangeable, and do not allow duplicate values.

  • Set은 수학에서 처럼 교집합으로 생각하면 편하다.
  • 순서가 없다는 특징이 있고, 변하지 않으며 중복을 허용하지 않는다.
    • 따라서 답안에서 set의 길이가 1이라고 하면, 중복된 값이 없다는 뜻이므로 같은 문자를 뜻하는 것을 알 수 있다.

 

 

GitHub - Park-Minjoo/CODINGINTERVIEW_PRACTICE: 1 Day 1 Problem since 2022.4.7

1 Day 1 Problem since 2022.4.7. Contribute to Park-Minjoo/CODINGINTERVIEW_PRACTICE development by creating an account on GitHub.

github.com

 

Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.