728x90
반응형
📌 문제
주어진 문자열을 뒤집어서 반환하는 함수를 구현하시오.
function reverseString(str) {
// 여기에 코드 작성
}
console.log(reverseString("hello")); // "olleh"
🔎 풀이 과정
function reverseString(str) {
return str.split('').reverse().join('');
}
console.log(reverseString("hello")); // "olleh"
- 문제 접근 방식
- 문자열을 배열로 변환한 후, reverse() 메서드를 사용하여 순서를 뒤집고 다시 문자열로 결합하는 것이다.
- 문제 해결 과정
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
반응형
'Algorithm > 코테준비' 카테고리의 다른 글
[JS] 피보나치 수 반환 / 재귀함수, 반복문, 시간복잡도,공간복잡도 비교 (0) | 2025.03.16 |
---|---|
[JS] 버블 정렬 (Bubble Sort) / 버블 정렬, 최적화 버블 정렬, 내장 sort() (0) | 2025.03.15 |
[JS] 문자열 내 각 문자 개수 세기 / Map 사용, Object 사용, reduce 활용 방법 비교 (0) | 2025.03.15 |
[JS] 배열에서 최솟값과 최댓값 찾기 / 정렬sort, Math.min()&max(), 반복문 방법 비교 (0) | 2025.03.15 |
[JS] FizzBuzz 문제 / 조건문, 문자열누적, Map활용 (0) | 2025.03.15 |