프론트 개발자를 위한 여정

모든 영역을 안내하는 개발자

Algorithm/코테준비

[JS] 문자열 뒤집기 / array-reverse, for문, 재귀함수

ji-frontdev 2025. 3. 15. 15:03
728x90
반응형

📌 문제

주어진 문자열을 뒤집어서 반환하는 함수를 구현하시오.

 

function reverseString(str) {
// 여기에 코드 작성
}
console.log(reverseString("hello")); // "olleh"

🔎 풀이 과정

function reverseString(str) {
return str.split('').reverse().join('');
}
console.log(reverseString("hello")); // "olleh"
  1. 문제 접근 방식
    • 문자열을 배열로 변환한 후, reverse() 메서드를 사용하여 순서를 뒤집고 다시 문자열로 결합하는 것이다.
  2. 문제 해결 과정

split('')을 사용하여 문자열을 문자 배열로 변환

"hello".split(''); // ['h', 'e', 'l', 'l', 'o']

reverse()를 호출하여 배열의 순서를 뒤집음

['h', 'e', 'l', 'l', 'o'].reverse(); // ['o', 'l', 'l', 'e', 'h']
 

join('')을 사용하여 배열을 다시 문자열로 변환

['o', 'l', 'l', 'e', 'h'].join(''); // "olleh"
 

 

🚀 추가적인 해결 방법

위 코드 이외에도 여러 가지 방법으로 문자열을 뒤집을 수 있다.

1️⃣ for 루프를 이용한 방식

function reverseString(str) {
let reversed = "";
for (let i = str.length - 1; i >= 0; i--) {
reversed += str[i];
}
return reversed;
}
console.log(reverseString("hello")); // "olleh"

✅ O(n)의 시간 복잡도를 가지며, 배열을 사용하지 않고 문자열을 직접 조작하는 방식이다.

 

2️⃣ 재귀 함수 사용

function reverseString(str) {
if (str === "") return "";
return reverseString(str.slice(1)) + str[0];
}
console.log(reverseString("hello")); // "olleh"​
 

✅ 재귀적으로 문자열을 뒤집으며, O(n)의 시간 복잡도를 가진다.

다만, 스택 오버플로우를 방지하기 위해 긴 문자열에서는 주의가 필요하다.

 

🏆 결론

가장 효율적이고 간결한 방법은 배열 메서드를 활용한 방법 (split().reverse().join()) 이다.
하지만, 면접에서는 다른 접근 방식(루프나 재귀)도 설명할 수 있으면 좋다! 😊

728x90
반응형