7월 24일 토요일 TIL

김병훈·2021년 7월 24일
0

til

목록 보기
43/89

배열 코플릿 복습

8번

반복문으로 배열을 순회하였을 때, 가장 큰 수를 리턴해야하는 문제였는데, maxNum을 0으로 할당해줬는데 5개 테스트중 하나인 음수케이스가 통과되지 않아서 math.abs() 를 사용하려고 했다가 알고보니 arr[0]을 maxNum에 할당해주면 해결되는 문제 였다.

9번

function getLongestWord(str) {
  let arr = str.split(' ');
  let longWord = arr[0];

  for(let word of arr){
    if(word.length > longWord.length){
      longWord = word;
    }
  }
    return longWord;
}

  // 주의할 점 for of 문 안에서 변수를 선언하면 적용이 안되는 것 같다.
  // for(let i = 0; i < arr.length; i++){
  //   if(arr[i].length > longWord.length){
  //     longWord = arr[i];
  //   }
  // }
  //   return longWord;

13번

두 개의 배열을 입력 받아 순서대로 합쳐진 배열을 리턴해야한다.
[arr, ...arr2] 이 아니면 뭐가 맞는 문법일까 spread
<> arr1.concat(arr2);

14번

  • 주어진 인덱스 이후의 요소들을 갖는 새로운 배열을 리턴해야한다
  • immutable, mutable? 한 메소드들을 알아야한다.
  • slice는 사용할때 바로 리턴을 해야한다. 적용하고 원본배열을 리턴해보면 적용이 안되어있다.

15번

  • 주어진 인덱스 이전의 요소들을 갖는 새로운 배열을 리턴
  • 배열의 길이를 넘는 인덱스를 입력받은 경우, 빈 배열을 리턴해야한다.
    • if(index > arr.length) return [];
    • [1, 2, 3, 4] => arr.lengh = 4. last index = 3
    • index >= arr.length 가 맞는 표현인것 같다.
  • slice의 end값은 알아서 1을 빼주기 때문에 만약 반복문으로 , 이나 - 같은 특수문자를 넣어준 경우에 마지막 요소를 제거해줘야 특문이 사라지게 되는데, end값에서 그냥 arr.length -1 이 마지막 요소니까 이걸 입력해줘야 한번 더 빼줘서 마지막 요소를 제외한 배열이 나오게 되는 것 같다.

21번

입력받은 배열을 수정하지 않으려면 기존 배열을 slice(0)으로 복사를 해오고 이 값을 할당해준 새로운 배열에 push를 해줬는데, slice()만해도 되는 것 같다.
그리고 let 말고 const로 해줬는데 재할당이 안되지않나..?

23번

배열과 인덱스를 입력 받아 해당 인덱스의 요소를 제외한 배열을 리턴해야한다.

for(let i = 0; i < arr.length; i++) 로 반복문의 조건을 줬는데
i가 0번째부터 시작하니까 n(인덱스) 와 같지않으면 arr[i]로 접근해서 값을 최종 값을 리턴할 빈 배열에 더해주면 알아서 필터링 되는 문제 였던것 같다.

23번 이 문제를 filter 고차함수를 쓸 수 있는가?

24번

if(leng === 11){
    head = `(${arr.slice(0, 3).join('')})`;
  }

head를 재할당 해주는 과정에서 왜

`(${arr.slice(0,3).join('')})`

이렇게 해주는 건지 좀 이해가 안간다.

24번 질문에 대한 내 생각

head = (arr.slice(0, 3).join(''));

이렇게하면 console.log값이 '0709876-3214' 이렇게 나온다. ()로 감싸주기 위해서 templete literal을 쓴 것 같다.

25번

 for(let i = 0; i <= num ; i++){
    if(i === 0){
      newArr.push(0);
    }else if (i === 1){
      newArr.push(1);
    }else{
      newArr.push(newArr[i - 2]+ newArr[i -1]);
    }
  }
      return newArr;

왜 반복문의 조건이 배열의 길이가 아닌데, newArr[i - 2] 이렇게 접근이 가능한건지 이해가 안 간다. 내용은 이해가간다. 먼저 0번째 인덱스, 1번째 인덱스 값을 넣어준 상황이라서 0, 1 이 들어가고 2가 들어가면 else로 빠져서 i(2) - 2 = 0
=> newarr[0] + newArr[1]이 되어서 1이 다음 인덱스값으로 할당이 되는 것 같다.

profile
블록체인 개발자의 꿈을 위하여

0개의 댓글