문제 소개
문장 형태의 문자열 str을 첫 번째이자 유일한 인수로 받는 자바스크립트 함수를 작성해야 합니다.
이 함수가 해야 할 일은 다음과 같습니다. 문장 전체의 공백과 단어 순서는 그대로 유지하면서, 각 단어 내부의 문자들만 거꾸로 뒤집는 것입니다.
예를 들어, 함수에 아래와 같은 입력이 주어졌다고 가정해 보겠습니다.
const str = 'this is some sample string';
그렇다면 기대되는 출력 결과는 다음과 같습니다.
const output = 'siht si emos elpmas gnirts';
풀이 코드
다음은 위 문제를 해결하는 자바스크립트 코드입니다.
const str = 'this is some sample string';
const reverseWords = (str = '') => {
return str.trim()
.split(/\s+/)
.map((s) => {
let res = ''
for (let i = s.length - 1; i >= 0; i--) {
res += s[i]
}
return res
})
.join(' ');
}
console.log(reverseWords(str));
코드 동작 원리
이 코드가 어떻게 작동하는지 단계별로 살펴보겠습니다.
1. 앞뒤 공백 제거: trim() 메서드를 사용해 문자열 맨 앞과 맨 뒤에 있는 불필요한 공백을 먼저 제거합니다.
2. 단어 분리: 정규 표현식 /\s+/을 기준으로 split()을 호출하여, 하나 이상의 연속된 공백을 모두 처리하면서 문자열을 단어 배열로 나눕니다.
3. 각 단어 뒤집기: map() 안에서 각 단어를 순회하며, 마지막 문자부터 첫 번째 문자까지 역순으로 새 문자열에 이어 붙여 단어를 뒤집습니다.
4. 다시 결합: 마지막으로 join(' ')을 사용해 뒤집힌 단어들을 공백 하나를 사이에 두고 다시 하나의 문장으로 합칩니다.
출력 결과
위 코드를 실행했을 때 콘솔에 출력되는 결과는 다음과 같습니다.
siht si emos elpmas gnirts
모든 단어가 개별적으로 뒤집혔지만, 단어 사이의 공백과 원래의 단어 배치 순서는 그대로 유지된 것을 확인할 수 있습니다.