자바스크립트로 메모이제이션 구현하기
까먹지 않게 기억해두기
까먹지 않게 기억해두기
유리수, 무리수, 실수
기수법
정수
집합
명제와 논리연산
## 거품(버블)정렬 - 가까운 두 원소를 비교해서 정렬하는 방식이다. - `O(N^2)` - 코드가 단순하고 구현하기 쉽다 - 느리다.  ```javascript function bub...
`toc tight: true, from-heading: 1 to-heading: 4 ` 타입스크립트로 구현해보는 일반적인 자료구조 ## Stack - push와 pop으로 구성된 stack - LIFO ```javascript export default class Stack<T> { private stack: T[] construc...
## Fish ### 문제 길이 N으로 이루어진 비어있지 않은 배열 A, B가 주어진다. 배열 A는 물고기의 크기를, B는 물고기의 움직임을 나타내는데, 0일 경우 위로, 1일 경우 아래로 간다. 만약 두마리의 물고기가 만날 경우, 더 사이즈가 큰 물고기가 잡아먹어버린다. 이 때 살아남는 물고기의 수를 구하라. ``` A[0] = 4 B[0] =...
## Nesting ### 문제 `(`와 `)`로 이루어진 문자열이 있다. 이 문자열의 `(` `)` 짝이 맞게 이루어져 있는지 확인하라. ### 풀이 ```javascript function solution(S) { const split = S.split('') const stack = [] for (let i of split...
## StoneWall ### 문제 돌은 N미터 길이를 가지고 있으며, 두께는 모두 일정하다. 배얼에 돌 높이가 주어져 있으며, 아래와 같이 해석할 수 있다. - H[i]: 왼쪽에서 오른쪽으로 벽의 높이 - H[0]: 벽 왼쪽 끝의 높이 - H[N-1]: 벽 마지막 끝의 높이 ``` H[0] = 8 H[1] = 8 H[2] = 5 H[3]...
## Brackets ### 문제 문자열 S가 주어지고, S는 다음 경우 일 때 참을 반환해야 한다. - S가 비어있는 경우 - `(U)` or `[U]` or `{U}` 의 형태로 괄호안에 문자열이 있는 경우 - 괄호가 짝이 맞게 닫혀있는 경우 예를 들어 `{[()()]}`는 괄호가 알맞게 들어있지만, `([)()]`는 그렇지 못하다. (짝은 맞...
## Frog River One ### 문제 개구리가 X 까지 가고 싶은데, X까지 가기 위해서는 1부터 X를 모두 지나가야 한다. 예를 들어보자. ``` 이렇게 배열이 주어져 있고 A[0] = 1 A[1] = 3 A[2] = 1 A[3] = 4 A[4] = 2 A[5] = 3 A[6] = 5 A[7] = 4 5까지 가고 싶다고 가정했을때, A[...
## Max Counters ### 문제 숫자 N이 주어진다. 이 숫자 N은 모든 요소가 0인 길이 N인 배열을 의미한다. 그리고 배열 A가 존재한다. ``` 숫자 N이 5로 주어지고, 배열 A는 [3, 4, 4, 6, 1, 4, 4] 라고 가정하자. 초기 값 [0, 0, 0, 0 0] A[0] = 3, 3번째 (3-1번째) 요소의 크기를 1 늘린...
## Missing Integer ### 문제 주어진 배열 A에 빠져 있는 가장 작은 양의 정수를 구하시오 ``` A=[1, 3, 6, 4, 1, 2] 이라면 답은 5 A=[1, 2, 3] 이라면 답은 4 A=[-1, -3] 이라면 답은 1 ``` ### 풀이 ```javascript function solution(A) { // 배열 길...
## Distinct ### 문제 배열 A안에 unique한 숫자가 몇 개 있는지 리턴하라. ### 풀이 ```javascript function solution(A) { return [...new Set(A)].length } ``` Set을 활용하면 쉽게 풀 수 있다. Set이 아니더라도 object등을 활용해보면 된다. https:...
## Max Product of Three ### 문제 길이 N인 배열 A가 주어졌을때, 임의로 세개의 숫자를 곱했을 때 가장 큰 값을 만들 수 있는 배열의 Index를 리턴해라. ``` A[0] = -3 A[1] = 1 A[2] = 2 A[3] = -2 A[4] = 5 A[5] = 6 2, 4, 5번째를 곱하면 60을 만들수 있고 이것이 가장 큰 ...
## Number of Disc Intersections ### 문제 N개의 디스크가 존재하고, 디스크는 각각 0~ N-1의 번호를 가진다. 이는 A라는 배열에서 표현되는데, `A[N]` 는 해당 디스크의 반경을 의미한다. ``` A[0] = 1 A[1] = 5 A[2] = 2 A[3] = 1 A[4] = 4 A[5] = 0 ``` ![discs]...
## Triangle ### 문제 길이 N의 배열 A가 주어진다. (P, Q, R)은 삼각형이 될 수 있는데, 이는 - 0 ≤ P < Q < R < N - A[P] + A[Q] > A[R] - A[Q] + A[R] > A[P] - A[R] + A[P] > A[Q] 라는 조건을 만족 하기 때문이다. ``` A[0] = 10 A[1] ...
## 1-1 Binary Gap ### 문제 숫자 N을 이진수로 바꿨을때, 1과 1사이에 있는 0의 개수가 가장 많이 연속해 있는 0의 개수를 구하라. ``` 9는 이진수로 바꿀 경우 1001, 이경우 0의 최대 개수는 2. 529는 이진수로 바꿀 경우 1000010001, 이경우 0의 최대 개수는 3. 20은 이진수로 바꿀 경우 10100, 이 경우...