본문 바로가기
코딩을 배울테야/Pre Course

32일차_20201015

by 도도 새 2020. 10. 16.

매일매일 쓰겠다고 다짐했던 코딩일지가 뚝뚝 끊기기 시작했다. 반복되는 코플릿에 쓸 내용이 크게 다르지 않아서인 이유도 있지만 그냥 한 번 빼먹고 나니까 나도 모르게 나태해지고 있는 느낌이다. 일지가 미뤄지는 사이 배열 코플릿을 다행히도 무사히 끝냈다. 아직 모든 개념이 완벽하다고 자신있게 말하기는 어렵지만 전반적인 이해도는 80~90% 정도 되는 것 같다. 솔직히 객체 코플릿 일정에 쫓기고 있고 이미 다음 알고리즘 베이직 코플릿으로 넘어갔기에 객체 코플릿을 빨리 끝내야 한다. 2문제 남았는데 객체는 정말 쉽지가 않다.

for in 문을 학습하는데 기본개념을 이해하기 정말 어려웠다. 지금은 거의 이해한 듯 하다. 처음에는 for(let key in prop) 라고 했을 때 key라고 변수를 적어 놓으면 알아서 key를 찾아가는 건가, 자바스크립트의 내장된 기능인건가 이런 생각 때문에 그러면 값을 조회하려면 let value in prop 하면 알아서 값을 조회하는건가! 하면서 점점 늪으로 빠져들었었다.. 객체는 이번에 어떻게 잘 넘어간다고 해도 복습이 꼭 필요하다.

 

 

오늘의 하이라이트 문제 (너무 오랜만이다)

 

 

20_countAllCharacters

 

 

  • 문자열을 입력받아 문자열을 구성하는 각 문자(letter)를 키로 갖는 객체를 리턴해야 합니다.
  • 각 키의 값은 해당 문자가 문자열에서 등장하는 횟수를 의미하는 number 타입의 값이어야 합니다.
  • 각 문자를 키로 갖는 객체를 리턴해야 합니다.
  • 빈 문자열을 입력받은 경우, 빈 객체를 리턴해야 합니다.

 

나의 풀이

 

 

function countAllCharacters(str) {
  let result = {};// TODO: 여기에 코드를 작성합니다.
  for(let i = 0; i < str.length; i++) {
    if(result[str[i]] === undefined) {
      result[str[i]] = 0;
    }
    result[str[i]] = result[str[i]] + 1;
  }
    return result;
}

 

 

레퍼런스

 

 

function countAllCharacters(str) {
  let obj = {};
  for (let i = 0; i < str.length; i++) {
    if (obj[str[i]] === undefined) {
      obj[str[i]] = 0;
    }
    obj[str[i]]++;
  }
  return obj;
}

 

 

글을 쓰면서 레퍼런스를 처음 봤는데 거의 똑같아서 감동의 도가니탕이다. 솔직히 어떻게 푼건지 잘 모르겠다.

객체 문제를 풀면서 제일 헷갈리는 것은 인덱스 부분과 키를 새로 지정하고 값을 할당하는 것이다.

그냥 다 어렵다고 써도 저거나 이거나 똑같은 말인것 같다.

키의 인덱스는 [str[i]], 값의 인덱스는 [str][i] 인데 이게 참 아직 코드의 문법이 익숙하지 않은지 쓰면서 이게 값이니까.. 아니 이게 키니까.. 이렇게 써야지.. 이러면서 헷갈려하느라 시간을 많이 버린다. 객체 문제풀이에 들어오면서 크롬 개발자 도구를 훨씬 더 많이 애용하게 되었다. 개발자 도구가 없으면 계속 썼던 걸 다 지우고 다시 쓰고 해야 하고 어느 부분에서 에러가 나는지 알기가 힘든데 개발자 도구를 사용하면 솔직히 시간과 노동력은 더 들지만(나는 한줄한줄 다 써가면서 차례차례 디버깅을 하는 스타일인 것 같다. 벌써 미래가 보여..) 어느 부분에서 에러가 났는지 정확히 파악할 수 있고 지금까지 작성한 코드에서 살려놔도 괜찮은 부분을 놔두고 필요한 곳에 집중할 수 있어서 많이 효율적인 느낌이다.

객체 20번 문제에서는 if문 안의 제한사항을 생각해내는 것이 제일 힘들었던 것 같다.

사실 저게 전제되지 않으면(객체 안에 str[i]의 키값이 없다면(undefined 라면) 0으로 할당해놔 하나씩 올리게~) 숫자가 추가될 수가 없어서 당연히 undefined + 숫자 = NaN 이라 헛수고를 할 수밖에 없다. 저걸 깨닫기까지 너무 오래 걸렸다. 이런 부분에서 아직도 자바스크립트 문법이 익숙하지 않구나 느끼게 된다.

 

오랫동안 일지를 쓰지 않았지만 일지에 게을렀을 뿐 공부는 매일 하고있다. 벌써 한달 가까이 지났고 가끔씩 옛날에 풀면서 쩔쩔맸던 코플릿을 다시 한번 눈으로 보면서 풀어보는데 생각보다 수월하게 풀어내는 나를 보면서 많이 성장했다고 느낀다. 그래봤자 아는 것이 늘어가는 속도보다 매일 당면하는 문제의 난이도가 올라가는 속도가 훨씬 빠르기 때문에 매일 머리를 싸매고 허덕이는 중이지만.. 그래도 재미있다. 이런 문제를 보자마자 머릿속으로 이미 답이 척척 나오는 그 날을 꿈꾼다. 원래 꿈은 클수록 좋다고 했다.

'코딩을 배울테야 > Pre Course' 카테고리의 다른 글

문제가 풀리지 않을 때  (0) 2020.10.23
37일차_20201020  (0) 2020.10.21
24일차_20201007  (0) 2020.10.08
22일차_20201005  (0) 2020.10.06
17일차_20200930  (0) 2020.09.30

댓글