개발자 박가나
[241014 TIL] 본캠프 9일차 본문
Today 1. [JavaScript 문법 종합반] 강의
- 콜백 함수
- 다른 코드의 인자로 넘겨주는 함수
- 콜백 함수를 인자로 넘겨받는 함수가 실행에 대한 제어권을 가짐
- 제어권
- 콜백 함수 호출 시점에 대한 제어권
- 인자(의 순서)에 대한 제어권
- this가 가리킬 대상을 지정할 수 있음
- 콜백 지옥
- 콜백 함수를 반복적으로 사용함으로써 들여쓰기가 깊어져서 가독성이 떨어지는 현상
- 동기 : 현재 실행 중인 코드가 끝난 후 다음 코드를 실행
- 비동기 : 현재 실행 중인 코드의 완료 여부와 무관하게 즉시 다음 코드를 실행
- 비동기 제어 - Promise
- new 연산자로 호출
- 비동기 작업이 완료된 후 resolve 또는 reject 함수 호출
- 비동기 제어 - Generator
- *가 붙은 함수로, 실행 시 Iterator 객체 반환
- 비동기 작업이 완료되는 시점마다 next 메서드 호출
- async/await
- 비동기 작업을 수행할 함수 앞에 async 삽입
- 함수 내부에서 실질적인 비동기 작업이 필요한 위치에 await 삽입
실무에 있을 때 정말 많이 사용했던 문법이 바로 Promise와 async/await이었는데, 정작 효율을 위해서 비동기식으로 코드를 처리하는데 왜 굳이 비동기식 코드를 다시 동기식으로 처리를 하지?라는 의문을 한 번도 가져본 적이 없었던 것 같다. 오늘 강의를 통해서 비로소 동기식 처리가 필요한 이유는 무엇인지, 이를 처리하기 위한 방법에는 무엇이 있는지에 대해서 명확히 알 수 있게 되었다.
Today 2. 개인 공부 - 블로그 포스팅
- 콜백 함수
- 콜백 지옥과 비동기 제어
오늘 강의에서 콜백 함수와 비동기 제어 관련 내용을 배웠는데 실무에서 너무나도 자주 접하는 개념이기도 하고 마냥 쉬운 내용도 아니었기 때문에 블로그 포스팅을 하면서 복습을 하면 나중을 위해서라도 좋을 것 같다는 생각이 들었다. 강의를 들을 때는 이해를 했다고 생각한 내용도 포스팅으로 정리를 하려고 하니 생각보다 어려웠지만 내가 이해할 수 있는 문장들로 정리를 하면서 복습을 하니까 이해도가 훨씬 높아지는 기분이었다. 이전에 배웠던 개념들도 시간적으로 여유가 될 때 틈틈이 포스팅을 해놓아야 겠다는 생각이 들었다.
Today 3. [달리기반] 이론 수업 1회차
- 변수 (Variable)
- var / let / const
- 데이터 타입 (Data Type)
- 기본 타입 / 참조 타입
- 연산자 (Operator)
- 산술 연산자 / 할당 연산자 / 비교 연산자 / 논리 연산자
- 함수 (Function)
- 함수 선언식 / 함수 표현식 / 화살표 함수 / 즉시 실행 함수
- 조건문 (Condition Statement)
- if문 / if - else문 / if - else if - else문 / switch문 / 삼항 연산자
- 반복문 (Loop)
- for문
오늘 이론 수업에서는 [JavaScript 문법 종합반] 강의 1주차에서 배웠던 내용에 대해서 다시 한 번 정리하는 시간을 가지게 되었다. 이미 강의를 통해서 배웠던 내용이기도 하고 비교적 쉬운 내용이었기 때문에 이해하는데 큰 무리가 없었지만 단순히 느낌적으로 알고 있는 것과 누군가에게 설명할 수 있는 것은 큰 차이가 있다는 튜터님의 말씀을 듣고 순간적으로 멈칫하게 되었다. 솔직히 쉬운 내용이어서 강의만 듣고 제대로 복습하지 않고 넘어왔는데 블로그 포스팅을 통해 내용을 다시 한 번 정리하는 시간을 가져야겠다는 생각이 들었다.
Today 4. [알고리즘] 특강 3회차
- [문제풀이] 없는 숫자 더하기
- 방법 1 : 없는 숫자가 무엇인지 찾기
- 방법 2 : 없는 숫자의 합 구하기 (45 - numbers에 들어있는 숫자의 합)
- [문제풀이] 핸드폰 번호 가리기
- 방법 1 : 반복문 사용
- 방법 2 : 메서드 사용
- 기타 : padStart()
- [문제풀이] 나누어 떨어지는 숫자 배열
- 배열의 요소를 모두 탐색하여 나누어 떨어지는지 확인 (완전탐색)
- 요소의 index 값이 필요없을 경우 for문 대신 for-of문을 사용하는 것이 바람직
- [문제풀이] 최소 직사각형
- 시간 복잡도
- 코드의 효율성은 Big-O 표기법 기반의 시간 복잡도로 나타낼 수 있음
- 가능한 시간 복잡도가 낮은 알고리즘을 사용하는 것이 좋음
- Lv.2 이상의 문제의 경우, 시간 복잡도가 낮은 방법으로 풀어야만 점수를 주는 항목도 존재
- 공간 복잡도
- 프로그램의 실행에 얼마나 많은 메모리가 필요한지 나타내는 척도
- 가능한 적은 메모리를 사용해서 문제를 푸는 것이 좋음
알고리즘 문제를 풀다보면 낑낑대면서 코드를 작성했는데 정작 내용을 지원하는 메소드가 있어서 한 줄로 코드를 줄일 수 있는 경우가 종종 있다. 당장 오늘 특강에서도 padStart()라는 메소드를 알게 되었다. 앞으로 매일 일정 시간을 알고리즘 문제를 푸는 것에 투자하게 될텐데 그 시간 중에서 10분 정도는 JavaScript 메서드를 찾아보고 사용해보는 것에 할애를 하는 것도 많은 도움이 될 것 같다는 생각이 들었다.
'내일배움캠프 > 본캠프' 카테고리의 다른 글
[241016 TIL] 본캠프 11일차 ('영화 사이트 만들기' 프로젝트 2일차) (1) | 2024.10.16 |
---|---|
[241015 TIL] 본캠프 10일차 ('영화 사이트 만들기' 프로젝트 1일차) (1) | 2024.10.15 |
[241011 TIL] 본캠프 8일차 (0) | 2024.10.11 |
[241010 TIL] 본캠프 7일차 (1) | 2024.10.10 |
[241008 TIL] 본캠프 6일차 (1) | 2024.10.08 |