매개변수 str를 2문자씩 짝지어라. 이때 str가 홀수 길이라면 짝지을 때 2번째 문자는 빈칸이므로 _로 대체해라
For example:
solution('abc') // should return ['ab', 'c_']
solution('abcdef') // should return ['ab', 'cd', 'ef']
쉬운 편이었던 것 같은데 이 풀이가 나오기 전에 크리티컬한 실수를 했다.
for문에서 i를 2씩 증가시키고 싶어서 i+2
를 한 것..! 이렇게 하면 i에 2를 더하기만 하지 할당은 하지 않아서 결과적으로 내가 원하는 숫자를 얻을 수 없고 i는 계속 0으로 나올 것이다.
for 문에서 관례처럼 사용하는
i=i+1
=> i+=1
=> i++
이 과정을 통해 만들어지는 것을 명심하자 ^_^
function solution(str) {
let result = [];
for (let i = 0; i < str.length; i += 2) {
if (i === str.length - 1) {
result.push(str.slice(i) + "_");
} else {
result.push(str.slice(i, i + 2));
}
}
return result;
}
function solution(str){
var i = 0;
var result = new Array();
if (str.length % 2 !== 0) {
str = str + '_';
}
while (i < str.length) {
result.push(str[i] + str[i+1]);
i += 2;
}
return result;
}
✔️ new Array()를 써서 빈 배열을 만들어 result에 할당했다.
✔️ str가 홀수라면 str+"_"로 해버려서 그 후의 연산을 쉽게 했다.
✔️ 내가 했듯이 slice 메소드를 굳이 쓸 필요가 없다. 그저 현재 인덱스, 다음 인덱스의 요소를 푸쉬!
function solution(s){
return (s+"_").match(/.{2}/g)||[]
}