일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- execution context
- useState
- REACT
- 비동기
- 코드스테이츠
- 컴퓨터공학
- python algorithm
- java
- 자료구조
- Props
- Zerobase
- codestates
- JavaScript
- node.js
- OS
- 파이썬
- 자바스크립트
- context switching
- 프로그래머스
- 파이썬 알고리즘 인터뷰
- 운영체제
- react 기초
- Operating System
- Computer Science
- 개발공부
- 알고리즘
- algorithm
- datastructure
- 자바
- Python
- Today
- Total
목록Language (48)
Back to the Basics
Asynchronous 이번 포스팅에서는 JavaScrit에서 Asynchronous 흐름을 구현하는 방법들에 대해 정리해 보겠다. JavaScript의 비동기 흐름은 callback, promise, async/await 중 하나의 문법으로 구현이 가능하다. 비동기 함수 전달 패턴 1: callback 패턴 비동기 함수 전달 패턴 2 : 이벤트 등록 패턴 1. Callback pattern callback 함수를 동기적으로 사용하는 경우와 비동기 적으로 사용하는 경우에 대해 비교해보자. 동기적으로 사용하는 경우 (이전에 예시로 사용했던 코드가 잘못되어 다시 수정했습니다ㅜ) 아래의 코드를 실행하면 sleep함수는 3초 후에 cb함수를 실행한다. 그리고 나서야 222를 출력한다. 즉, 222를 출력하는 코..
Asynchronous Achievement Goals Synchronous의 개념에 대해 이해한다. Asynchronous의 개염에 대해 이해한다. Asynchronous를 왜 사용하는지 이해한다. 1. 비동기 호출이란? 1. 동기(Synchronous) 비동기를 이해하기 위해 동기(Synchronous)를 먼저 알아보자. 실행 완료 시점과 실행 시작 시점이 같은 것을 동기적(Synchronous)이다 라고 한다. 요청에 대한 결과가 동시에 일어난다. 요청에 blocking이 있다. blocking이란, "A process that is blocked is one that is waiting for some event" 앞의 실행이 끝날 때까지 다른 작업을 하지 못함을 의미한다. 상당리 long-run..
꼬리 재귀(Tail recursion in JavsScript) 너무 많은 재귀 호출은 메모리 초과 (Stack overflow) 오류를 발생시킬 수 있다. Tail recursion(꼬리 물기 재귀)은 call stack에 새로운 stack을 생성하지 않고 함수를 참조할 수 있게 한다. 다음 연산에 필요한 값을 다음 루틴에 넘기면 호출당했던 곳으로 돌아와 연산을 거칠 필요가 없어 메모리에 쌓이지 않고 한 번씩만 호출되도록 만드는 형태이다. 많이 사용하는 예제인 factorial 함수를 예로 들어보자. [일반적인 재귀 코드] function factorial(n){ if(!) return 1; return n*factorial(n-1); } 위의 코드는 다시 호출 당했던 곳으로 돌아가게 되는 일반적인 재..
재귀 함수와 메모리 사용량 간의 관계 문제를 풀다 보면, 재귀 함수가 참 편리할 때가 있다. 반복문보다는 재귀를 쓸 때가 더 편할 때도 있지만, 아무래도 함수를 한번 더 콜 하기 때문에 부담스러운 부분이 있는 것 같다. 프로그래머라면 사용하는 함수 또는 메서드, 알고리즘의 시간 복잡도나 메모리 사용량에 대해서 알아야 한다. 앞으로도 많이 사용할 재귀의 메모리 사용량에 대해서 알아보자! 1. 재귀란? 간단하게, 재귀에 대해서 먼저 알아보자! 재귀는 간단한 동작 하나를 반복적으로 처리해야 할 때 , 간단한 동작을 재귀를 사용하여 반복함으로써 작업을 단순화 시킬 수 있는 자료구조이다. 재귀는 1. 주어진 문제를 비슷한 구조의 더 작은 문제로 나룰 수 있는 경우 2. 중첩된 반복문이 많거나 반복문의 중첩 횟수(..
알고리즘 문제를 풀면서 정규식을 사용하면 코드를 더 간결하고, 불필요한 반복문 또는 조건문을 줄일 수 있다는 것을 알게 되었다. 20줄이 넘는 코드를 단 10줄도 안 되는 코드로 작성된 것을 보고 충격을 받은 이래로 정규식에 대해 조금 더 알고 있으면 좋을 것 같다는 생각을 했다. MDN을 읽어보고 정규 표현식의 사용법을 간단하게 소개한 후 기호의 사용화 메서드의 사용 위주로 포스팅을 진행하겠다. 정규표현식 엔진이 언어 별로 달라 일부 표현이나 문법이 다르다고 한다. 이 포스팅은 JavaScript를 기준으로 작성되었다. 1. 정규식에 대하여 정규표현식 (Regular Expression, 이하 정규식) 이란 문자열에 포함된 특정 문자열을 조작하기 위해 사용하는 패턴이다. 정규식을 사용하는 이유는 아래와..
문자열 조작은 코딩 테스트에서 매우 빈번하개 출제되고 실무에서도 다양한 분야에 쓰이는 주제라고 한다. 정보 처리 분야웹 페이지를 탐색할 때 문자열 처리 애플리케이션을 이용하게 되며 문자열 처리는 정보 처리에 핵심적인 역할을 한다. 통신 시스템 분야 데이터 전송은 문자열 처리 알고리즘이 탄생한 배경 이기도 하며, 데이터 전송에서 문자열 처리는 매우 중요하다. 프로그래밍 시스템 분야 프로그램은 그 자체가 문자열이며, 컴파일러나 인터프리터는 문자열을 기계어로 번역하기 때문에 매우 정교한 문자열 처리 알고르짐 등이 사용된다. 이번 장에서는 파이썬 문자열 자료형에 있는 기능들과 문자열 조작과 처리에 사용되는 기법을 알아본다. 유효한 팰린드롬 leetcode의 125 문제인 Valid Palindrome 문제를 통..
1. 리스트 입력순서 유지, 동적 배열로 구현됨 표 5-1 언어별 동적 배열 구현 언어 동적배열 Python list() C++ std::vector JAVA ArrayList 표 5-2 리스트의 주요 연산 시간 복잡도 연산 시간 복잡도 설명 len(a) O(1) 전체 요소의 개수를 리턴한다 a[i] O(1) 인덱스 i의 요소를 가져온다 a[i:j] O(k) i부터 j까지 슬라이스의 길이만큼 k개의 요소를 가져온다. 이 경우, 객체 k개에 대한 조회가 필요하므로 O(k) 이다. elem in a O(n) elem 요소가 존재하는지 확인한다. 처음부터 순서 탐색이므로 n만큼 시간이 소요된다. a.count(elem) O(n) elem 요소의 개수를 리턴한다 a.index(elem) O(n) elem 요소의..
Prototype 1. Object Prototype JavaScript는 Prototype 기반 언어(Prototype-based Language)이다. 모든 객체들이 Prototype 객체(Prototype Object)를 갖고 있고, 이를 통해 메서드와 속성들을 상속받는다. 공부를 하면서 제일 헷갈렸던 것은, prototype property, prototype, __proto__ 이다. Prototype property : 모든 함수 객체의 Constructor는 Prototype이라는 property(속성)을 갖고 있다. prototype 속성은 객체가 생성될 당시 만들어지는 객체 자신의 원형이 " 될 " prototype 객체를 가리킨다. 즉, 자신을 만든 원형이 아닌! 자신을 통해 만들어질 ..