문제 소개
정확히 두 개의 단어로 이루어진 문자열을 입력받아, 각 단어의 첫 글자를 서로 맞바꾼 새로운 문자열을 만들어 반환하는 JavaScript 함수를 작성해야 합니다.
예를 들어 'hello world'라는 문자열이 주어지면, 'hello'의 첫 글자 'h'와 'world'의 첫 글자 'w'를 교환하여 'wello horld'를 결과로 반환하면 됩니다.
해결 접근 방법
이 문제는 다음과 같은 순서로 해결할 수 있습니다.
- split(' ') 메서드를 사용해 문자열을 공백 기준으로 나누어 두 단어를 분리합니다.
- 배열 구조 분해 할당을 활용해 각 단어를 변수에 담습니다.
- 인덱스 [0]으로 각 단어의 첫 글자를 추출합니다.
- substring(1) 메서드로 첫 글자를 제외한 나머지 부분을 얻습니다.
- 서로의 첫 글자를 앞에 붙여 새로운 단어를 만든 뒤, 공백으로 연결해 최종 문자열을 완성합니다.
예제 코드
다음은 위 로직을 구현한 코드입니다.
const str = 'hello world';
const interchangeChars = (str = '') => {
// 공백을 기준으로 두 단어를 분리
const [first, second] = str.split(' ');
// 각 단어의 첫 글자 추출
const fChar = first[0];
const sChar = second[0];
// 첫 글자를 서로 교환하여 새 단어 생성
const newFirst = sChar + first.substring(1);
const newSecond = fChar + second.substring(1);
// 새 단어를 공백으로 연결해 반환
return newFirst + ' ' + newSecond;
};
console.log(interchangeChars(str));코드 설명
str.split(' '): 문자열을 공백 문자를 기준으로 잘라 ['hello', 'world'] 배열을 만듭니다.first[0],second[0]: 각 단어의 첫 번째 문자인 'h'와 'w'를 가져옵니다.substring(1): 인덱스 1부터 끝까지, 즉 첫 글자를 뺀 'ello'와 'orld'를 반환합니다.- 교환된 첫 글자와 나머지 부분을 합치면 'wello'와 'horld'가 되고, 이를 공백으로 이어 붙입니다.
실행 결과
콘솔에는 다음과 같은 출력이 나타납니다.
wello horld
마무리
이처럼 split(), substring() 같은 기본 문자열 메서드만 활용하면 복잡한 정규식 없이도 두 단어의 첫 글자를 손쉽게 교환할 수 있습니다. 코드를 더 간결하게 만들고 싶다면 아래처럼 한 줄로 표현하는 것도 가능합니다.
const interchangeChars = str => {
const [a, b] = str.split(' ');
return b[0] + a.slice(1) + ' ' + a[0] + b.slice(1);
};