LeetCode#344. Reverse String

BLAKE KIM·2021년 1월 20일
0

Algorithm

목록 보기
2/4

문제.

문제를 읽으면서 들었던 생각.

첫째, return이 없다.
둘째, 다른 list를 생성하지 않고 인풋 값 내부에서 조작한다.
셋째, 그냥 reverse() 쓰면 되는 거 아닌가?

내 코드.

생각에 대한 해결책.

첫째, reverse() 사용

다른 풀이에서 얻은 것.

Two Pointer: 전통적인 방식으로 두 개의 포인터에서 서로의 값을 바꿔주는 방법이다. 코드로 보면 다음과 같다.

left, right = 0, len(s) - 1
while left < right:
	s[left], s[right] = s[right], s[left]
    left += 1
    right -= 1

내 코드가 파이썬다운 코드라고 한다. 파이썬에서 기본적으로 제공하는 것을 사용하고 있기 때문이다. 또한 인풋값이 문자열일 경우 문자열 슬라이싱을 활용하는 방법이 있다고 하는데 일반적인 방법인 아래의 방법은 에러가 발생한다.

s = s[::-1]

이유는 문제에서 공간 복잡도를 O(1)로 제한하고 있기 때문이다. 알고리즘에 있어서 시간 복잡도와 공간 복잡도는 빼놓을 수 없다. 보통 (실행시간이) 빠른 알고리즘은 많은 공간이 필요하고 적은 공간이 필요한 알고리즘은 느리다. 그렇지 않은 알고리즘도 존재하지만 보통은 그렇다고 한다.

profile
BackEnd

0개의 댓글