문자열을 입력받아 해당 문자열에 등장하는 두 칸의 공백을 모두 한칸의 공백으로 바꾼 문자열을 리턴하는 문제이다.
내가작성한 코드
function SpaceToSingle(str) {
// TODO: 여기에 코드를 작성합니다.
// split('')을 이용하여 문자를 한단어씩 쪼개 주어 words라는 변수에 값을 할당해주었다.
let words = str.split('')
let arr = []
for(let i = 0; i < words.length; i++) {
// 반복문을 돌면서 words의 인덱스가 ' ' 이고 해당 인덱스에 1을 더한 인덱스도 ' ' 이라면 아무것도 동작하지 않게 해주었다.
if(words[i+1] === ' ' && words[i] === ' ') {
// 그렇지 않다면 arr라는 빈배열에 push메소드를 이용하여 한단어씩 push해 주었다.
} else {
arr.push(words[i])
}
}
// arr는 배열 이니 join 메소드를 이용하여 문자열로 바꾸어 리턴해주었다.
return arr.join('')
}
레퍼런스
function SpaceToSingle(str) {
let result = '';
let beforeWord = '';
for (let i = 0; i < str.length; i++) {
// 직전의 문자가 공백이고, 현재의 문자도 공백인 경우
// 즉, 현재의 문자가 두 번째 공백인 경우(에만), 무시한다.
if (beforeWord !== ' ' || str[i] !== ' ') {
result = result + str[i];
}
beforeWord = str[i];
}
return result;
}
레퍼런스 코드랑 내가 짠 코드랑 비교하면서 굳이 split으로 나누고 push하고 join메소드를 사용하여 복잡하게 할필요없이 변수에 전의 인덱스를 할당하고 비교하니 훨씬 코드가 간편해진걸 보니 더 간편하게 코드를 짜야겠다는 생각이 들었다.