(EASY) LeetCode No.355 - Reverse String

Kade Jeon·2024년 1월 30일

LeetCode

목록 보기
2/6
post-thumbnail

(EASY) LeetCode No.355 - Reverse String 풀러가기

문제

  • 문자열을 뒤집는 함수를 작성할 것.
  • 입력값은 문자 배열.
  • 리턴 없이 리스트 내부를 직접 조작하라.

문제 풀이

교재에서는 두 가지 방식을 소개하고 있다. 이번에도 혼자 풀어보았다. 이번엔 43분 24초가 소요됐다.

내가 제출한 코드

  • Language: Python3
  • 배열로 들어오는 문자의 갯수가 홀수라면 정가운데를 뺀만큼 양끝의 두개씩 바꿔야 한다.
  • 짝수라면 딱 중간까지만 바꾸어주어야 한다.
class Solution:
    def reverseString(self, s: List[str]) -> None:
        """
        Do not return anything, modify s in-place instead.
        """
        temp1: str
        temp2: str
        length = len(s)

        # 데이터 길이를 반으로 나눈 값만큼 반복문을 돌리도록 계산
        repeat = length // 2

        for i in range(repeat):
            # 리스트의 데이터 수가 홀수개인 경우.
            # 정가운데를 제외하고 맨 앞과 맨 뒤를 차례로 바꿔 준다.
            if length % 2 == 1:
                temp1 = s[i]
                end_no:int = length-1-i
                temp2 = s[end_no]
                s[end_no] = temp1
                s[i] = temp2

            # 리스트의 데이터 수가 짝수개인 경우.
            else:
                temp1 = s[i]
                end_no:int = length-1-i
                temp2 = s[end_no]
                s[end_no] = temp1
                s[i] = temp2

결과

교재에서 제시해주는 풀이 두 가지보다, 이번에도 내가 작성한 코드가 빨랐다.

파이썬을 쓸 줄 모르는 자의 억울함

바로 reverse()로 뒤집으면 될 줄 알았는데, leetcode에서 기본 함수정의 부분은 가져와서 사용하려고 했다.

def reverseString(self, s: List[str]) -> None:

위가 리트코드에서 제공하는 기본 틀, 파이참에서 쓰기위해 아래와 같이 self를 지웠다.

def reverseString(s: List[str]) -> None:

근데 Pycharm에서 List가 정의되지 않았다고 에러가 떴다. 그래서 '아 이건 안되나보다' 하고 나만의 코드를 작성했다.

NameError: name 'List' is not defined

일단 제출 후 교재를 보니 내가 처음에 생각했던 reverse() 한 줄로 끝내버리는 게 있었다... 그래서 우리의 스승 gpt에게 물어보니. import를 해주어야 한다고...

from typing import List

위를 import 해주니 한방에 풀렸다. leetcode에서도 s.reverser() 한 줄 작성하니 Accepted가 떴다. 확실히 이 방법이 간결해서 보기에 너무 좋았다. 그래도 내가 고심해서 짠 코드를 칭찬하자면, 이것보다 더 실행시간이 짧다는 것.

파이썬을 잘 모르다보니 이와 같이 쉽게 해결 할 수 있는 걸 꼬아서 생각한 것 같다. 이제 시작하는 것이니 계속 공부하면서 좋아지리라 기대한다 !

profile
안녕하세요. 백엔드 개발자가 되고 싶은 Kade 입니다.

0개의 댓글