일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 파이썬
- 운영체제
- context switching
- 컴퓨터공학
- java
- 자바스크립트
- 개발공부
- Zerobase
- execution context
- 자바
- 코드스테이츠
- Computer Science
- Operating System
- 글또
- 비동기
- JavaScript
- 알고리즘
- react 기초
- node.js
- typeScript
- OS
- python algorithm
- 자료구조
- 프로그래머스
- codestates
- Python
- 파이썬 알고리즘 인터뷰
- REACT
- algorithm
- useState
- Today
- Total
목록자바스크립트 (19)
Back to the Basics
자료구조 Stack과 Queue에 대해서 알아아보고, 이를 어떤 방식으로 사용하는지 알아본다. 코드스테이트 Lesson 내용의 일부와 윤성우의 열혈 자료구조 책을 참고하였다. Achievement Goals 자료구조에 대해 이해한다. Stack , Queue 자료구조에 대해 이해한다 각 자료구조가 가진 특징을 학습한다. 각 자료구조를 사용하기 적합한 상황을 이해한다 다른 자료구조와의 차이점을 이해하기 위해 자료 구조 내부를 직접 구현한다. 알고리즘 문제에서 Stack, Queue 자료구조를 배열로 대체해볼 수 있다. 0. 추상 자료형 (ADT : Abstract Data Type ) 자료구조를 공부하기에 앞서 추상 자료형 ADT를 먼저 이해하고 시작해야 한다. 추상 자료형은 Computer Science..
꼬리 재귀(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, 이하 정규식) 이란 문자열에 포함된 특정 문자열을 조작하기 위해 사용하는 패턴이다. 정규식을 사용하는 이유는 아래와..
Achievement Goals JSON 구조가 재귀 하수를 사용할 수 있는 Tree 구조임을 이해할 수 있다. (stringifyJSON) JSON.stringify와 JSON.parse가 serialize, deserialize라는 것을 이해할 수 있다. JSON.stringify와 JSON.parse를 사용하여 자바스크립트 값과 JSON을 오갈 수 있다. JSON에 재귀 호출을 사용할 때, 어디에 사용해야 할지 이해할 수 있다. 1. JSON이란?? JSON은 JavaScript Object Notation 의 약자로 Lightweight data-interchange format. 즉, "경량의 Data 교환 형식"이다. 데이터 교환을 위해서 만들어진 객체 형태의 포맷이다. JSON은 이해하기 쉽..
Prototype 1. Object Prototype JavaScript는 Prototype 기반 언어(Prototype-based Language)이다. 모든 객체들이 Prototype 객체(Prototype Object)를 갖고 있고, 이를 통해 메서드와 속성들을 상속받는다. 공부를 하면서 제일 헷갈렸던 것은, prototype property, prototype, __proto__ 이다. Prototype property : 모든 함수 객체의 Constructor는 Prototype이라는 property(속성)을 갖고 있다. prototype 속성은 객체가 생성될 당시 만들어지는 객체 자신의 원형이 " 될 " prototype 객체를 가리킨다. 즉, 자신을 만든 원형이 아닌! 자신을 통해 만들어질 ..
OOP Basic concepts Application을 만들 때 객체지향을 이용하고 응용하면 좋은 설계를 할 수 있다. 객체지향 프로그래밍의 주요 컨셉으로는 크게 네 가지가 있다. 캡슐화 (Encapsulation)와 정보은닉 (Informaion Hiding) 우리는 객체의 생성을 위해 class를 디자인한다. 좋은 class를 만들기 위한 최소한의 조건은 정보은닉과 캡슐화이다. 정보은닉(Information Hiding) 정보은닉이란, 직접적으로 변경되면 안 되는 변수에 대한 접은을 오직 별도의 함수로 접근하도록 유도하는 것이다. 실수로 변수를 변경하려는 시도가 있을 때, 실수가 쉽게 발견되고 잘못된 값이 저장되지 않도록 제한된 접근 방법으로의 접근만 허용하는 방법이다. 캡슐화(Encapsulati..
기초 알고리즘 문제를 푸는 도중 제곱근의 수를 입력받아 제곱근 값을 소수점 2번째 자리까지 구하는 문제가 나왔다. Math.sqrt라는 아주 좋은 메소드가 있지만, 사용하면 안 된다고 한다. 이 문제에서 구현해야 햘 기능을 나눠보면, 1) 제곱근을 구하고 2) 소수점 2번째 자리까지 출력이라고 할 수 있다. 문제는 금방 풀었지만, 고등학교 수학인가 중학교 수학인가 에서 배웠던 수학적인 방법들이 생각나서 추가적으로 구현해 보았다. 그리고, 문제에서 힌트로 주어져있던 바빌로니아 알고리즘에 대해서도 마지막 첫 번째 풀이 학창시절 배우고, 공업수학도 대학에서 해서 그런지 이 정도는 아직.. 아직 기억이 난다..ㅋㅋㅋ.. 제곱근은 루트 안에 숫자를 넣은 값이다. 이를 계승으로 표기하면 숫자^(1/2) 승이다. 3..