주의할점은 배열(여기선 리스트)를 새로 생성하지말고, 내부에서 바꾸는 함수를 정의해야 한다.
아래처럼 새로운 리스트타입 데이터인 snew 를 생성해서 원소를 거꾸로 넣는방법은, 제약에 걸린다.
s.reverse()
이 한줄로 리스트타입 s 는 안의 원소순서가 반대로 정렬된다.
👈👉파이썬은 포인터가 없다.
하지만 포인터란 주소를 변수에 참조형으로 저장한것 뿐이다. 그러므로 포인터를 파이썬 코드를 이용해 임의적으로 설정할 수 있다.
class Solution:
def reverseString(self, s: List[str]) -> None:
"""
Do not return anything, modify s in-place instead.
"""
left = 0 #min index 0
right = len(s)-1 #returns max index
while left<right: #starting at 0<4 in this case
# multiple assignment keeps the evaluation order right
s[left],s[right] = s[right],s[left]
# code below returns different result
#s[left] = s[right]
#s[right]= s[left]
left +=1
right -=1
📌주의할점은, 파이썬에서 다중 assignment 할때는
s[left] 와 s[right] 가 동시에 할당 된다는 점이다.
그래서 각자를 한줄씩 따로따로 할때는 결과가 틀리게 나온다.