일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- java
- typeScript
- algorithm
- JavaScript
- Computer Science
- 코드스테이츠
- 파이썬 알고리즘 인터뷰
- 자바
- context switching
- 컴퓨터공학
- 알고리즘
- Python
- Operating System
- python algorithm
- react 기초
- 비동기
- 개발공부
- 프로그래머스
- REACT
- codestates
- 파이썬
- 운영체제
- node.js
- 자료구조
- OS
- Zerobase
- useState
- execution context
- 글또
- 자바스크립트
- Today
- Total
목록JavaScript (30)
Back to the Basics
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bVVbio/btre4N75Ene/Xr7RqaGkNtVfMSVu4g5Je1/img.png)
재귀 함수와 메모리 사용량 간의 관계 문제를 풀다 보면, 재귀 함수가 참 편리할 때가 있다. 반복문보다는 재귀를 쓸 때가 더 편할 때도 있지만, 아무래도 함수를 한번 더 콜 하기 때문에 부담스러운 부분이 있는 것 같다. 프로그래머라면 사용하는 함수 또는 메서드, 알고리즘의 시간 복잡도나 메모리 사용량에 대해서 알아야 한다. 앞으로도 많이 사용할 재귀의 메모리 사용량에 대해서 알아보자! 1. 재귀란? 간단하게, 재귀에 대해서 먼저 알아보자! 재귀는 간단한 동작 하나를 반복적으로 처리해야 할 때 , 간단한 동작을 재귀를 사용하여 반복함으로써 작업을 단순화 시킬 수 있는 자료구조이다. 재귀는 1. 주어진 문제를 비슷한 구조의 더 작은 문제로 나룰 수 있는 경우 2. 중첩된 반복문이 많거나 반복문의 중첩 횟수(..
알고리즘 문제를 풀면서 정규식을 사용하면 코드를 더 간결하고, 불필요한 반복문 또는 조건문을 줄일 수 있다는 것을 알게 되었다. 20줄이 넘는 코드를 단 10줄도 안 되는 코드로 작성된 것을 보고 충격을 받은 이래로 정규식에 대해 조금 더 알고 있으면 좋을 것 같다는 생각을 했다. MDN을 읽어보고 정규 표현식의 사용법을 간단하게 소개한 후 기호의 사용화 메서드의 사용 위주로 포스팅을 진행하겠다. 정규표현식 엔진이 언어 별로 달라 일부 표현이나 문법이 다르다고 한다. 이 포스팅은 JavaScript를 기준으로 작성되었다. 1. 정규식에 대하여 정규표현식 (Regular Expression, 이하 정규식) 이란 문자열에 포함된 특정 문자열을 조작하기 위해 사용하는 패턴이다. 정규식을 사용하는 이유는 아래와..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/ciZof3/btrd5ERvTq9/Kd8iEJkv9mD6wJEYJYxPK1/img.png)
Prototype 1. Object Prototype JavaScript는 Prototype 기반 언어(Prototype-based Language)이다. 모든 객체들이 Prototype 객체(Prototype Object)를 갖고 있고, 이를 통해 메서드와 속성들을 상속받는다. 공부를 하면서 제일 헷갈렸던 것은, prototype property, prototype, __proto__ 이다. Prototype property : 모든 함수 객체의 Constructor는 Prototype이라는 property(속성)을 갖고 있다. prototype 속성은 객체가 생성될 당시 만들어지는 객체 자신의 원형이 " 될 " prototype 객체를 가리킨다. 즉, 자신을 만든 원형이 아닌! 자신을 통해 만들어질 ..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/cPCJVR/btrdXxQ0UCd/kUQjLqbn3Wzt3HgZbq0zi0/img.png)
OOP Basic concepts Application을 만들 때 객체지향을 이용하고 응용하면 좋은 설계를 할 수 있다. 객체지향 프로그래밍의 주요 컨셉으로는 크게 네 가지가 있다. 캡슐화 (Encapsulation)와 정보은닉 (Informaion Hiding) 우리는 객체의 생성을 위해 class를 디자인한다. 좋은 class를 만들기 위한 최소한의 조건은 정보은닉과 캡슐화이다. 정보은닉(Information Hiding) 정보은닉이란, 직접적으로 변경되면 안 되는 변수에 대한 접은을 오직 별도의 함수로 접근하도록 유도하는 것이다. 실수로 변수를 변경하려는 시도가 있을 때, 실수가 쉽게 발견되고 잘못된 값이 저장되지 않도록 제한된 접근 방법으로의 접근만 허용하는 방법이다. 캡슐화(Encapsulati..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bVm4ok/btrfbkYxUlG/FwpxKgJz0vAV9YV3cwTEM1/img.png)
Section 1이 끝나고 드디어 Section II에 들어섰다. 그 첫 번째 JS/Node 객체지향이다. 이번 Lesson 에서는 객체 지향 프로그래밍(OPP, Object-oriented programming)이 무엇인지 알아보고 객체 지향 프로그래밍의 특징, 그리고 이를 구현하는 방법과 상속에 대한 개념들을 공부한다. Achievement Gials 클래스와 인스턴스라는 용어를 이해한다. new , class 키워드 사용법 이해 현실 세계의 모델 --> class의 메서드와 속성을 디자인한다. 객체 지향 프로그래밍 특징을 이해한다. 캡슐화 , 상속, 추상화, 다령성 JavaScript에서 객체 지향 프로그래밍을 구현하는 방법을 이해한다. Prototype이 무엇인지 이해한다. 객체 지향 프로그래밍 ..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bTcPBA/btrdykTI0BQ/4KLEiYkhhsGMKv3GZuygmK/img.png)
기초 알고리즘 문제를 푸는 도중 제곱근의 수를 입력받아 제곱근 값을 소수점 2번째 자리까지 구하는 문제가 나왔다. Math.sqrt라는 아주 좋은 메소드가 있지만, 사용하면 안 된다고 한다. 이 문제에서 구현해야 햘 기능을 나눠보면, 1) 제곱근을 구하고 2) 소수점 2번째 자리까지 출력이라고 할 수 있다. 문제는 금방 풀었지만, 고등학교 수학인가 중학교 수학인가 에서 배웠던 수학적인 방법들이 생각나서 추가적으로 구현해 보았다. 그리고, 문제에서 힌트로 주어져있던 바빌로니아 알고리즘에 대해서도 마지막 첫 번째 풀이 학창시절 배우고, 공업수학도 대학에서 해서 그런지 이 정도는 아직.. 아직 기억이 난다..ㅋㅋㅋ.. 제곱근은 루트 안에 숫자를 넣은 값이다. 이를 계승으로 표기하면 숫자^(1/2) 승이다. 3..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/dn8vp0/btrdlyC4zu0/y26L58rz6VV7uAjAggK5uk/img.png)
HA를 위해 이전에 풀었던 코플릿을 쭈욱~ 돌아보는 중에 풀었던 문제들 중 객체의 값들로 num 타입의 숫자들이 있는데, 이것들의 최댓값을 Object.values를 뽑아서 Math.max()로 뽑았던 것을 보았다. 혹시 배열로 따로 속성들을 뽑지 않고 최댓값을 구할 수 있는 방법이 있을까 순간 궁금해져서 HA를 공부해야 하는 이 바쁜 와중에 Math.max MDN을 들어가게 되었다. (시간이 걸리는 일은 아니니까) MDN을 보다보니 Math.max에 대해 몰랐던 사실과 기억하고 있어야 할 사항, 그리고 Math.max 대체 방법들이 나와있었다. 아, 이건 정리하여 기록을 해야겠다! 싶어서 이렇게 글을 또 쓴다. ( 빨리 나머지 코플릿 문제들 봐야 하는데,,,) Math.max MDN Math.max()..
**예제는 MDN을 참조하였다 코플릿을 다시 보면서 잘 사용하지 않던 method가 있어 정리해보았다. flta method에 대해 기능을 알아보고, filter가 어떻게 작동되는지 기능을 직접 코드로 구현해 보았다. arr.flat() : 배열 내부의 sub-srray 요소들을 특정 차원으로 새로운 배열로 return 한다. - syntax : flat() ,flat(depth) - param : depth는 optional 이며 중첩돤 배열 구조를 얼마나 깊게 flattering을 하는지를 지정하는 깊이를 나타낸다. 기본값음 1 기본값은 1이며, 아래의 코드는 2차원 배열 내부의 배열인 [4,5]을 1차원 배열 수준으로 flattering 한 것이다. const arr1=[1,2,3,[4,5],6,7..