프로그래밍 패러다임 프로그래밍 방법론. 시대에 따라 사람들이 갖는 공통적인 인식체계를 패러다임이라고 한다. 프로그래밍에서도 시대에 따라 패러다임이 변했다.(제한된 상태와 적은 메모리를 가진 초기의 시기, 컴퓨터가 대중화된 시기, CPU가 여러 개의 코어를 가진 동시성이 중요해진 요즘 시기) 명령형 프로그래밍, 함수형 프로그래밍, 논리 프로그래밍, 객체 지향 프로그래밍으로 나눌 수 있다. 프로그래머가 추구하는 사고 방식 및 코드를 쓰고 설계하는 코드 작성 방식. 언어에 종속적이지 않다. 한 언어에도 다양한 패러다임이 있을 수 있다. 모든 패러다임은 장단점이 있기 때문에 필요에 따라서 선택하고 결합하여 사용하면 된다. (OOP와 FP는 대척점에 있지 않다.) 명령형vs 선언형 명령형(Imperative) 프..
필기시험을 볼 일이 있었다. 열심히 풀었으나 확인했더니 다 틀렸다! 하하하하하 😀 스코프와 호이스팅을 공부하는 시간을 가졌다! 콘솔에 출력되는 값은 무엇인가요? Q1. 답 : 에러 a를 출력하면 function이 나오고 b를 출력하면 undefined가 나온다. 그러므로 b를 호출하면 에러가 발생한다. 함수 b는 함수 선언식이 아니라 함수 표현식으로 선언되었으므로 호이스팅이 일어나지 않았다. 또한 var로 선언했으므로 a가 호출될 때 b함수가 할당되므로 에러가 난다. var a = function b() { return 10; }; console.log(typeof b()); // ReferenceError: b is not defined 이렇게 함수 선언식으로 함수를 선언하면 접근 가능하다. funct..
commit 메세지를 잘 적으면 나중에 변경 사항을 살펴보기 쉽다. commit 메세지를 효율적이고 통일되게 적고 싶어서 한 번 정리를 하려고 했는데 드디어 하게 되었다! 😀 여기에 깃모지를 붙여서 사용해야지! commit 메시지를 적을 때 지키면 좋은 점 대문자와 구두점 첫 번째 단어는 대문자로 쓰고 마지막에 구두점을 쓰지 않는다. 일반 커밋(git commit -m )을 사용하는 경우 모두 소문자로 작성해야한다. 줄 바꿈 제목과 내용 사이에 공백을 두는 것이 좋다. 내용의 문단이 달라질 때는 문단 사이에 공백을 두는 것이 좋다. 분위기 제목 줄에서 명령적인 분위기를 사용한다. ( 예 : Add fix for dark mode toggle state ) commit 타입 commit 타입을 지정한다. ..
React로 진행한 프로젝트를 중간에 Typescript로 변경하기 1 지난번에 변경하는 방법을 공부를 했는데 직업 바꾸려니 추가로 해줘야 하는 부분이 더 있어서 추가로 기록해 둔다. 기존에 vite로 환경을 구축하고 React로 진행했던 프로젝트(VITE와 Firestore를 사용했다.)를 Typescript로 업그레이드했다. 다른 타입스크립트 프로젝트를 참고하며 해결했다. 타입스크립트를 설치하고 파일 확장자를 바꾸자마자 뜨는 지독한 빨간 줄 해결하기~ 😀🤜 가장 상위 파일에 HTMLElement 붙여주기 // main.jsx ReactDOM.createRoot(document.getElementById('root')).render( ); // main.tsx ReactDOM.createRoot(doc..
분할정복법(Divide & Conquer) 큰 문제를 작은 문제로 분할해 재귀적으로 해결 -> 최종적으로 내가 원하는 출력을 얻을 수 있다. 예 : 가장 큰 수 구하기 # 하나를 고르고 나머지 중 제일 큰 수 A = [3, 0, -5, 7, 2, -4, 6, 9] Max(A) = max(A[0], max(A[1:])) T(n) = O(n) # 반으로 나눠서 각각 가장 큰 수를 구하고 두 개 중 큰 수 A = [3, 0, -5, 7, 2, -4, 6, 9] max(A) = max(max(A[0:4]), max(A[4:])) T(n) = O(n) 예 : 입력받은 수의 제곱을 구하기 # 하나씩 차근 차근 곱해주기 power1(a, n): if n == 1 : return a return a * power1(a..
선택(Selection) 문제 입력 : n개의 값과 k (1 어떤 알고리즘도 최소 일정 횟수만큼 비교를 해야한다. 상한과 하한이 같다면 최소한의 비교 횟수로 원하는 값을 찾을 수 있다는 뜻이다. -> 완전히 풀림 k = 1, n : 최대값, 최소값 찾기 - 왼쪽에서부터 하나씩 비교하면 2n - 3 n - 1 번 비교 -> 최대값 n - 2 번 비교 -> 최소값 - 토너먼트 방식으로 비교하면 3/2n - 2 -> 상한, 하한 n - 1 번 비교 -> 최대값 토너먼트 1차전에서 탈락한 n / 2에서 비교를 해 (n / 2) - 1 번 비교 -> 최소값 k = 1, 2 : 제일 작은 값, 두번째로 작은 값 - 왼쪽에서부터 하나씩 비교하면 2n - 3 최소값 -> n - 1 번 비교 두번째로 작은 값 -> n ..
재귀(Recursion) 재귀함수 = 함수 내부에서 한번 이상 자신의 함수를 호출하는 것 재귀알고리즘 = 알고리즘 내부에서 한번 이상 자신의 알고리즘을 다시 적용해서 문제를 푸는 것 예1 #1부터 n까지 더하는 재귀함수 def sum(n): if n == 1 : return 1 return sum(n - 1) + n 위 재귀함수의 시간복잡도는 T(n) = O(n)이 된다. 1. n == 1 테스트 : 바닥조건 (base case) -> T(1) = 1 or C 2. 재귀호출 -> T(n) = 점화식 예2 # a부터 b까지 더하는 재귀함수 def sum(a, b): if a == b : return a if a > b : return 0 m = (a + b) // 2 return sum(a, m) + su..
- Total
- Today
- Yesterday
- CSS
- js
- Python
- 자바스크립트
- 코딩앙마
- 스파르타코딩클럽
- Til
- 코드잇
- javascript
- 깃
- scss
- 드림코딩
- html
- 파이썬
- Typescript
- TS
- 회고
- 비주얼스튜디오코드
- 리액트
- 제로초
- map
- vscode
- React
- 타입스크립트
- 제이쿼리
- 저스트코드
- 김버그
- 구름에듀
- vue
- git
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |