LeetCode - Length of Last Word

wodnr_P·2023년 10월 7일
0

LeetCode Top Interview 150

목록 보기
28/32
post-thumbnail

⭐️ LeetCode 알고리즘 풀이 (with Python)

# Single Number

[Quetion]

LeetCode 58. Length of Last Word

📌 접근법

[문제 이해]

  • 문자열 s의 하위 문자열에서 마지막 하위 문자열(단어)의 길이
  • hello world --> world : 5 출력

문자열 s에서 공백이 있는 경우도 있을 것이기 때문에 strip()함수를 활용해서 해결해야겠다고 생각했다.

간단한 문제이기 때문에 2가지의 접근 방법으로 접근 해보았다.

  • 첫번째는 split()으로 s를 공백으로 분리하여 해결
  • 두번째는 문자열을 역순으로 반복하여 판단하는 것으로 해결

💻 구현

# 첫번째 split() 활용
class Solution:
    def lengthOfLastWord(self, s: str) -> int:
        s=s.rstrip().split(' ')
        return len(s[-1])

Runtime: 26ms | Memory: 16.3MB
LeetCode 코드 중 Runtime 99%, Memory 72% 해당하는 결과

# 두번째 반복문 활용
class Solution:
    def lengthOfLastWord(self, s: str) -> int:
        s=s.strip()
        i=1
        while len(s)>i:
            if s[-i] == ' ':
               return i-1
            i+=1  
        return i

Runtime: 28ms | Memory: 16.1MB
LeetCode 코드 중 Runtime 97%, Memory 99% 해당하는 결과

📌 로직 핵심

  • strip(), rstrip() 함수의 활용으로 문자열에서 공백 제거
  • 첫번째는 공백으로 분리하여 마지막 단어를 쉽게 찾음
  • 두번째는 마지막 단어와 그 이전 단어와의 공백을 활용하여 찾음
  • 두번째에서 i는 마지막과 그 이전 단어와의 공백을 가리키므로 -1을 해줌으로써 마지막 단어의 처음을 가리키게 됨

📝 Length of Last Word 회고

  • 두 방법 모두 시간복잡도는 O(N), 공간복잡도는 O(1)에 해당하는 결과이다.

  • 성능적으로는 두 코드 모두 유사하다고 할 수 있다. 하지만 python 함수를 아는 경우, 코드 가독성과 간결성은 첫번째 코드가 더 좋다고 판단된다.

  • 문제를 해결하고 다른 솔루션들을 참고해보니 대부분 첫번째 코드의 방법으로 접근하여 해결했지만, 두번째 접근법과 유사한 코드도 확인했다.

  • 문자열을 다루는 문제는 다른 복잡한 자료구조 문제와는 달리 접근 방법이 더 다양한 것 같다고 생각된다.

profile
발전하는 꿈나무 개발자 / 취준생

0개의 댓글