[codeKata_12] 배열을 뒤집어 반환(feat.새로운 배열을 선언금지!)

devCecy·2020년 12월 15일
0

CodeKata

목록 보기
5/5
post-thumbnail

1. 문제


새로운 배열을 선언하면 안 됩니다.
인자로 받은 배열을 수정해서 만들어주세요.
Input: ["h","e","l","l","o"]
Output: ["o","l","l","e","h"]
Input: ["h","e","l","l","o"]
Output: ["o","l","l","e","h"]
Input: ["H","a","n","n","a","h"]
Output: ["h","a","n","n","a","H"]

2. 나의 코드

왜이렇게 쉽지하고 보니 새로운 배열을 선언하지 말라는 조건이 보였다. 당연하게도 빈배열을 선언해서 반복문을 거꾸로 돌려 push하려고 했는데 말이다. 그래 이렇게 쉬울리가 없지, 하며 다시 도전. 배열안에서 원소를 이동시키려면 뭔가 기준점이 필요할 것 같아서 length의 반으로 잡아주었고, 그 다음 이것들을 어떻게 사용하면 좋일지에서 막혀있었다. slice를 사용해서 원소를 쪼개 이동해 보려고 했는데, 사실 프로젝트 레이아웃이 머릿속에서 떠나질 않아 깊은 고민을 하지 못하고 여기서 정답을 찾아보았다. 이 부분은 진짜 반성...! 내일 부터 11시까지는 무슨일이 있어도 코드카타 시간으로 할당해놓자. (급 반성의 시간,,)

const s = ["h","e","l","l","o"]

const reverseString = s => { 
  for (let i = 0; i < s.length/2 ; i++){
  const firstHalf = s.slice(s[i],s.length/2);
  const secondHalf = s.slice(s.length/2,s.length[i]);
	//...
  }
}
reverseString(s)

3. 정답 코드

정답 코드를 보자 조금더 해볼 걸 하는 생각밖에는 ㅠ^ㅠ
나는 i값을 어디로 옮겨야 하나 고민했는데, length를 이용하여 i번째 값을 length-1-i로 할당해주는 것이 키포인트였던 것 같다.

const reverseString = s => {
    for (let i = 0; i < s.length/2; i++) {
        let reverseS = s[i];
        s[i] = s[s.length-1-i];
        s[s.length-1-i] = reverseS;
    }  

    return s;
};
profile
🌈그림으로 기록하는 개발자🌈

0개의 댓글