상세 컨텐츠

본문 제목

리트코드 344. 문자열 뒤집기 (파이썬)

알고리즘/문자열 조작

by NayC 2021. 9. 2. 20:29

본문

728x90

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

(Write a function that reverses a string. The input string is given as an array of characters s.)

 

Example 1:Input: s = ["h","e","l","l","o"] Output: ["o","l","l","e","h"]

 

Example 2:

Input: s = ["H","a","n","n","a","h"] Output: ["h","a","n","n","a","H"]


[접근 고민] 30분 하자. 8시 30분까지.

- 배열과 리스트의 차이는 뭐지?

array는 인덱스로 값을 불러올수있다. (파이썬에서는 0부터 인덱스가 시작이라는 것을 알자)
파이썬의 리스트는 인덱스를 할수없다는 컴퓨터 공학에서의 리스트와 같게 생각하면 안된다.
파이썬에서 리스트가 어떻게 작동하는지 내부를 보면 파이썬의 리스트는 배열처럼 구현되어있다는것이다(Dynamic Array)
즉, 파이썬 리스트의 아이템들은 메모리 상의 연속적인 위치에 배치되며, 인덱스를 사용하여 접근이 가능하다. 또한 append, pop처럼 하이레벨의 기능들도 지원한다. 따라서 특정 언어와 관계없이 자료구조를 익히기 위해, 파이썬에서는 리스트를 단순 배열로만 생각하는 것이 좋다.

https://www.lostcatbox.com/2020/10/19/array-vs-list/

- 그냥 리스트가 주어졌다는거군

-> reverse나 슬라이싱으로 해주면 그냥 끝나는 문제인 것 같은데... 뭘 원하는걸까. 


[코드 짜기]

 

내 생각으로 짜본 나의 코드. 

 

def change(self, s:array):
    s.revere()

-> array가 밑줄 그어지긴 하지만... 


 

[올바른 코드를 확인해보자]

 

1. 투 포인터를 이용한 스왑

def reverseString(self, s:list[str]) -> None:
    left, right = 0, len(s)-1
    while left < right:
        s[left], s[right] = s[right], s[left]
        left += 1
        right -= 1

 

2. 파이썬다운 방식

def reverseString(self, s:list[str]) -> None:
    s.reverse()

 

reverse()는 리스트에만 제공

슬라이싱은 문자열. 리스트에서 다 가능

728x90
반응형

관련글 더보기