* 해당 포스트는 <파이썬 알고리즘 인터뷰> 공부 후 정리 목적으로 작성되었습니다. *

 

leetcode 344번 ( https://leetcode.com/problems/reverse-string/ )

 

풀이방법 1. 

투 포인터를 사용한다. left 포인터는 문자열의 맨 처음에, right 포인터는 문자열의 맨 끝에 두고 다중 할당 방식을 이용해서 바꾼다. 

 

파이썬에서 두 변수의 값을 바꿀 경우, 다른 언어들과는 달리 다중 할당을 이용해야 한다. 그렇지 않으면 예상하던 결과가 나오지 않을 수 있다. 파이썬에서는 다른 언어들과 달리 한 변수가 다른 변수에 할당될 때 값을 복사(call by value)하지 않고 값을 참조(call by reference)하기 때문이다. 

 

값을 복사하는 다른 언어의 경우, 임시로 값을 저장할 다른 변수를 만들어서 swap 한다. 

int a = 1; int b = 2;

// swap
int temp = a;
a = b;
b = temp;
System.out.println(a);	# 2
System.out.println(b);	# 1

 

반면 값을 참조하는 파이썬의 경우, 다중 할당을 이용한다. 

a = 1
b = 2
# swap
a, b = b, a
print(a, b)	# 2, 1

 

풀이방법 2. 

파이썬에서 기본으로 제공하는 함수를 사용한다. 

string.reverse()

text = "hello"
print(text.reverse())	# olleh

 

문자열이므로 기본 함수를 사용하지 않고 문자열 슬라이싱으로도 풀 수 있다. 

text = "hello"
print(text[::-1])	# olleh

 

+ Recent posts