문제 소개
임의의 문자열이 주어졌을 때, 단 하나의 추가 변수만 사용하여 그 문자열을 뒤집은 결과를 만들어 내는 JavaScript 프로그램을 작성해야 합니다.
- 프로그램은 내장 함수나 직접 만든 함수를 선언하거나 사용할 수 없습니다.
- 바닐라 JavaScript와 필요하다면 기본적인 반복문만 활용해야 합니다.
접근 방법
핵심 아이디어는 매우 간단합니다. 원본 문자열의 끝에서부터 한 글자씩 읽어 들여, 결과를 담을 문자열 변수에 순서대로 이어 붙이는 것입니다. 이때 새롭게 선언하는 변수는 결과 문자열 하나뿐입니다.
예제 코드
const string = 'abcdef';
let reverse = '';
while (reverse.length !== string.length) {
const index = string.length - 1 - reverse.length;
reverse += string[index];
}
console.log(reverse);코드 동작 원리
reverse는 뒤집힌 문자열을 저장하는 유일한 추가 변수입니다.- while 반복문은
reverse의 길이가 원본 문자열의 길이와 같아질 때까지 반복됩니다. - 매 반복마다
string.length - 1 - reverse.length로 인덱스를 계산해 문자열 끝부터 차례대로 문자에 접근합니다. - 'abcdef'를 예로 들면, 첫 반복에서 인덱스 5의 'f', 다음 반복에서 인덱스 4의 'e' 순으로 이어 붙여 나갑니다.
실행 결과
콘솔에는 다음과 같이 출력됩니다.
fedcba
정리
이 방식은 split(), reverse(), join() 같은 배열 메서드나 내장 함수 없이, 순수한 반복문과 인덱스 연산만으로 문자열을 뒤집을 수 있습니다. 시간 복잡도는 O(n)이며, 추가로 사용하는 메모리가 결과 문자열 하나뿐이므로 주어진 제약 조건을 충족하는 효율적인 해결책입니다.