문자열을 뒤집는 함수를 작성하라. 입력값은 문자 배열이며, 리턴 없이 리스트 내부를 직접 조작하라.
My solution
리턴 없이 리스트 내부를 직접 조작하라고 하는데 js에서는 reverse() 메서드만 사용하면 바로 풀릴 것 같다.
우선 아래와 같이 풀었다.
Code
const reverseString = function (s) {
return s.reverse();
};
JavaScript
복사
Solution
1. 투포인터를 이용한 스왑
이 방식이 전통적이다.(7장) 2개의 포인터를 이용해 범위를 조정해가며 풀이하는 방식으로 점점 범위를 좁혀 가며 스왑하는 형태로 푼다.
const reverseString = function (s) {
let lt = 0;
let rt = s.length - 1;
while (lt < rt) {
[s[lt], s[rt]] = [s[rt], s[lt]];
lt++;
rt--;
}
return s;
};
JavaScript
복사
코드 라인이 많아져서 가독성은 떨어졌지만 성능은 더 빠른 것으로 나왔다.(파이썬은 오히려 기본 제공되는 기능(reverse)이 더 빠르다.)
2. 파이썬다운 방식 Pythonic way // 파이썬 슬라이싱은 매우 빠르다
내 풀이와 동일하다고 볼 수 있다.
s.reverse()나 s[::-1] ( 1은 기본값이고 -1은 뒤집는다. )으로 가능하다.