코드스테이츠/코드스테이츠 @ 개발 일지

[코드 스테이츠] 40일차, 이제 시작일 뿐

Je-chan 2021. 8. 27. 23:18

  Section 2, 1주차가 지나갔다. 무사히 지나갔다라는 표현을 쓰려다 말았다. 너무 험난한 시간이었다. 개발은 역시 이론과 실전이 다른 법이다. 개념은 이해했는데 실제 코딩 구현은 굉장히 힘들었다. 오늘은 Graph로 DFS, BFS 를 코드로 구현하는 코플릿 문제가 있었는데 푸는 방법이 모든 케이스에 적용되는 로직이 아니라, 그 테스트만 통과할 수 있는 로직으로 풀어내서 찝찝함이 남아있다. 아직은 내가 다가서지 못하는 단계인 것 같다. 나뿐만이 아니라 다른 분도 그랬다. 진짜 코딩 잘하는 동기분들도 어려워하시니 위로가 되긴 했지만... 그럼에도 충격에서는 벗어나지 못하고 있다. Section 2 에서 갑자기 난이도가 팍 뛰어 오른 것을 체감했고 이제 Section 3도 있고, 거기까지 가지 않더라도 이제 겨우 Section 2의 1주차인데 이렇게 팍 어렵다는 걸 느끼니 살짝 멘붕에 걸리기도 했다.

 

  반대로 생각하면, 나 이제 개발 공부 진심으로 시작한 지 1달 밖에 되지 않았다. 크루님께서 말씀해주신 것처럼 지금 이 문제들을 풀어낸다는 것 자체가 말이 안 되는 거지, 내 실력이 말이 안 되는 건 아니다. 이제 시작했을 뿐이다. 다만, 시간이 지나서도 이 문제에 쩔쩔 매고 있을 수는 없다. 

 

전심으로 노력하면 충분히 성장할 수 있다. 그렇게 믿고 공부한다.


[ 오늘의 TODO ]

  1. 코드 스테이츠) BFS, DFS 개념
    // 이번 주 주말 기술 블로깅 빡세게 해야할 것 같다.
  2. 코드 스테이츠) Pair-Programming
    // Graph
    // BFS, DFS 문제들 (아직도 조금씩 풀어나가려 애쓰는중)
  3. 패스트 캠퍼스) 인강 3개 이상 듣기 // optional
    // 도저히 들을 시간이 없다. 
  4. 스터디 그룹) 프로그래머스 문제 풀기 (~월)
    // 하노이의 탑
    // 기능 개발
  5. 생활) 물 1L 이상 마시기
  6. 개선) 페어 프로그래밍할 때도 혼자 있을 때처럼 침착하게 오류 대처하기
    // 오늘은 침착하게 대처한 게 아니라 그냥 페어분이랑 같이 말 없이 계속 트러블 슈팅만 했다.
    // 말이 자연스럽게 사라지더라... 

[ 오늘의 해결 ]

1. new Array와 fill( )

  레퍼런스 코드를 보며 감탄했던 내용이었다. 들어오는 인자 값의 길이만큼을 지닌 배열을 만들 때 내가 쓴 방법은

let arr = []

for (let i = 0 ; i < maximum ; i++) {
  arr.push(0)
}

  이렇게였다. 시간 복잡도로 따지면 O(N) 만큼 든다. 그런데 레퍼런스 코드는 new Array를 통해서 원하는 길이의 배열을 만들어냈다.

let arr = new Array(maximum).fill(0)

  이 간단한 한 줄이 저 위의 내용이다. fill 메소드는 이번에 처음 알았는데, 배열의 내용을 인자에 들어간 조건에 맞추어 채워준다. 굉장히 유용해서 기억이 오래 남는 것 같다. 

 

new Array ( ) 안에는 내가 직접 넣어주고 싶은 요소가 들어갈 수 있고, 혹은 위에 처럼 length 길이를 넣어줄 수 있다. 만약 new Array (1, 2, 3) 이라고 한다면 배열은 [1, 2, 3] 으로 만들어졌다. 

 

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/Array

 

Array() constructor - JavaScript | MDN

The Array() constructor is used to create Array objects.

developer.mozilla.org

 

array.fill 은 밑의 박스처럼 사용할 수 있다.

array.fill(value, start, end)

value 로 array의 요소를 value로 채운다 (value는 필수)
start 로 array[start] 부터 채우기 시작한다 (number 타입)
end 로 array[end - 1] 까지만 채운다 (number 타입)

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/fill

 

Array.prototype.fill() - JavaScript | MDN

The fill() method changes all elements in an array to a static value, from a start index (default 0) to an end index (default array.length). It returns the modified array.

developer.mozilla.org


[ 오늘의 교훈 ]

1.  어려우면 도전하자

  어렵다고 불평하지 말고, 그 어려운 걸 해내보자는 생각을 하자. 지금 나는 공부하는 사람의 입장이란 걸 절대 잊지 말자. 개발자의 공부는 끝이 없다고 하지만 지금은 특히나 개발과 연관 없는 삶을 살다가 개발에 발을 들인지 고작 1달밖에 되지 않은 거다. 어려운 건 당연한 거고, 그 어려운 것 때문에 좌절하지 말자. 그 어려운 것을 풀기 위해서 지금 공부하는 거다. 그러니까 어려운 문제들을 보고 내 실력을 폄하하기 보다는 그것을 어떻게든 이겨내보겠다는 마음가짐으로 공부하자. 거짓없이 공부를 하다보면 밑의 짤처럼 말할 수 있게 될 거다. 어려운 일이 닥치더라도 도전하고, 공부하자.

 

 

출처: https://brunch.co.kr/@hdyoon/87