Algorithm | Basic

SURI·2021년 11월 30일

1.


객체에 속성을 추가할 때,

obj[arr[0]] = arr[arr.length - 1];

배열의 요소를 키의 이름으로 하고자 한다면, 브라켓 노테이션을 사용해야 한다. 닷 노테이션을 사용하면 오류가 뜨고 브라켓 노테이션 안에 문자열 처리하면 요소의 값이 들어가는 게 아니라, 표현식 자체가 키의 이름으로 들어간다.

2.


  • while에 들어가는 조건문을 잘못 쓰고 증감문 변수의 위치를 실수한다.
  • 식을 세우는 것까지 문제 없는데 그걸 반복문에 풀어내는 데서 또 걸려 넘어지고 있다.
    • rate = rate * rate 이런식으로 쓰게 되면 거듭제곱이 된다. 내가 원하는 건 거듭제곱이 아니라 특정 값이 반복적으로 곱해지는 게 아닌가! 두 번째 풀이에서 이걸 놓치고 실수하고 말았다. 그래도 배운 것 같다!

3.


    if (num % 2) {
    return false;
  }
  • 조건문에서 재밌는 조건을 발견했다. 조건문에 1을 넣으면 truthy한 값이 되므로, num % 2 표현식을 써주었다. num이 홀수이면 false를 리턴하라는 뜻이다

5.


배열의 각각의 요소의 값을 수정할 수 있지 않나? 왜 적용이 안될까? 헤매고 있다.

function letterCapitalize(str) {
  // TODO: 여기에 코드를 작성합니다.
  let arr = str.split(" ");

  let newArr = arr.map(el => {
    if (el !== ''){
    el = el[0].toUpperCase() + el.substr(1);
    } 
    console.log(el);
    return el;
  })
  return newArr.join(" ");
}
  • map 메소드에서 착각했던 게, 조건에 만족하지 않는 el의 경우 return을 뭐로 하지? 했는데.. 아니다. 모든 el에 대해서 return은 한다. 다만 저 조건에 만족하는 경우 el을 변형시킬 뿐이다! 착각했다.

6.


  • substr 사용
  • 문자열의 길이가 0보다 클 때 조건 설정해주기
  • 배열의 요소가 문자열인 경우에 원하는 대로 수정하고 재할당하기
  • map 메소드 적용해보기
if (e !== ' ') 
if ( e.length > 0)

나는 이 문제에서 이게 똑같은 의미를 가지는 코드라고 생각하는데, 왜 틀릴까?

  • 두 칸의 공백을 가진 문자열을 .split(" ") 했을 때, 공백이 ' ' 로 들어오는 게 아니라, ''로 들어오게 된다. 이걸 몰랐다! 나는 ' ' 이렇게 들어온다고 생각했는데 그게 아니었다. 8번 문제를 풀다가 파악하게 된다.

질문


Q. el로 반복문을 돌리는 것과 아래로 돌리는 것의 차이는 뭐지? 왜 el로 했을 때는 배열의 수정이 일어나지 않는데, 밑에는 수정이 일어나는 거지? 하!

profile
Every step to become a better version of me 🚶‍♂️ 블로그 이사중

0개의 댓글