처음에는 prefix가 뭔지 몰라서 오해해서 문제를 풀려고 했었다. 그래서 딕셔너리를 통해서 접근을 하려고 했었는데
이런 식으로 딕셔너리에 있는 숫자를 통해서 정리해서 출력을 하려고 했지만, 다음과 같은 에러가 나타났다.
여기서 prefix가 접두사 라는 것을 검색하고, "붙어 있어야 한다"라는 것을 알았다.
class Solution:
def longestCommonPrefix(self, strs: List[str]) -> str:
strs = sorted(strs,key=len)
short_str = strs.pop(0)
cnt = 0
for i in range(len(short_str)):
for st in strs:
if short_str[i] != st[i]:
return short_str[:i]
cnt += 1
return short_str[:cnt]
해당 코드가 최종 제출 코드인데, 수순은 다음과 같다.
초반에는 sorted() 안에 어떤 세세한 기능들을 다 알아야 하는줄 알았지만, 그저 "아 이런 기능이 필요한데" 할 때마다 찾아보면 됐다.
가장 짧은 단어를 선별했으면, 리스트 안에 있는 모든 문자열과 한번씩 비교를 하면 된다.
나는 이중 for문을 사용했기에, 코드가 조금 지저분해졌다. cnt(count의 약자)를 나중에 어거지로 추가를 했는데, 이유는 i가 바깥에는 존재하지 않아서다.
원래는 while문을 활용하면, 조금 더 깔끔한 코드가 나오지만, 나는 while을 싫어하고, 두려워서 잘 못쓰겠다.
그리고 딥러닝을 하면 while을 쓸 일이 없기 때문에 그냥 안쓰는 것도 있다.
'리트코드 알고리즘 > 리트코드 easy' 카테고리의 다른 글
(간단한 코드)리트코드 771. Jewels and Stones (0) | 2024.12.12 |
---|---|
(간단한 코드)리트코드 228. Summary Ranges (0) | 2024.12.10 |
(간단한 코드)리트코드 121. Best Time to Buy and Sell Stock (0) | 2024.12.08 |
(간단한 코드)리트코드 392. Is Subsequence (0) | 2024.12.08 |
(간단한 코드)리트코드 1768. Merge Strings Alternately (0) | 2024.12.03 |