일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 스코프
- flex기본
- node.js
- CSS
- prototype
- vscode
- var
- 클로저
- 코드스테이츠
- 기초공부
- node.js설치
- css기초
- AWS
- AWS기초
- 재귀함수
- 메모이제이션
- 리커젼
- JavaScript
- appendChild
- Big-O notation
- 인터프리터
- 원본과 복사본
- AWS조사
- let
- IT
- 개발툴
- scope
- complexity
- 생활코딩
- APPEND
- Today
- Total
Jveloper
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/RTAS9/btqAt7REyPh/F8mdL6UybbKTD0QLIKlKh1/img.png)
자료구조 '힙(Heap)' 완전 이진 트리의 일종으로 우선순위 큐를 위하여 만들어진 자료구조 최댓값, 최솟값을 쉽게 추출할 수 있는 자료구조 자료구조 '힙(Heap)' 자세히 알아보기 힙 정렬(Heap Sort) 알고리즘의 개념 요약 최대 힙 트리나 최소 힙 트리를 구성해 정렬하는 방법 내림차순 정렬을 위해서는 최대 힙을 구성하고, 오름차순 정렬을 위해서는 최소 힙을 구성하면 된다. 정렬해야 할 n개의 요소들로 최대 힙(완전 이진 트리 형태)을 만든다. - 내림차순을 기준으로 정렬 그 다음으로 한 번에 하나씩 요소를 힙에서 꺼내서 배열의 뒤부터 저장하면 된다. 삭제되는 요소들(최댓값부터 삭제)은 값이 감소되는 순서로 정렬되게 된다. 내림차순 정렬을 위한 최대 힙의 구현 힙(Heap)은 1차원 배열로 쉽게..
선택 정렬은 이름에 맞게 현재 위치에 들어갈 값을 찾아 정렬하는 배열이다. 현재 위치에 저장 될 값의 크기가 작냐, 크냐에 따라 최소 선택 정렬(Min-Selection Sort)과 최대 선택 정렬(Max-Selection Sort)로 구분 할 수 있다. 최소 선택 정렬은 오름차순으로 정렬될 것이고, 최대 선택 정렬은 내림차순으로 정렬될 것이다. 1. 정렬 되지 않은 인덱스의 맨 앞에서 부터, 이를 포함한 그 이후의 배열값 중 가장 작은 값을 찾아간다. (정렬되지 않은 인덱스의 맨 앞은, 초기 입력에서는 배열의 시작위치일 것이다.) 2. 가장 작은 값을 찾으면, 그 값을 현재 인덱스의 값과 바꿔준다. 3. 다음 인덱스에서 위 과정을 반복해준다. 이 정렬 알고리즘은 n-1개, n-2개... 1개씩 비교를 ..
삽입 정렬은 현재 위치에서, 그 이하의 배열들을 비교하여 자신이 들어갈 위치를 찾아, 그 위치에 삽입하는 배열 알고리즘이다. 1. 삽입 정렬은 두번째 인덱스부터 시작한다. 현재 인덱스는 별도의 변수에 저장해주고, 비교 인덱스를 현재 인덱스 -1로 잡는다. 2. 별도로 저장해 둔 삽입을 위한 변수와, 비교 인덱스의 배열 값을 비교한다. 3. 삽입 변수의 값이 더 작으면 현재 인덱스로 비교 인덱스의 값을 저장해주고, 비교 인덱스를 -1하여 비교를 반복한다. 4. 만약 삽입 변수가 더 크면, 비교 인덱스 +1에 삽입 변수를 저장한다. 이 정렬 알고리즘은 최악의 경우(역으로 정렬되어 있을 경우)엔 n-1개, n-2개... 1개씩 비교를 반복하여 시간복잡도는 O(N^2)이지만, 이미 정렬되어 있는 경우에는 한번씩..
버블 정렬은 매번 연속된 두개 인덱스를 비교하여, 정한 기준의 값을 뒤로 넘겨 정렬하는 방법이다. 오름차순으로 정렬하고자 할 경우, 비교시마다 큰 값이 뒤로 이동하여, 1바퀴 돌 시 가장 큰 값이 맨 뒤에 저장된다. 맨 마지막에는 비교하는 수들 중 가장 큰 값이 저장되기 때문에, (전체 배열의 크기 - 현재까지 순환한 바퀴 수) 만큼만 반복해주면 된다. 1. 삽입 정렬은 두번째 인덱스부터 시작한다. 현재 인덱스 값과 바로 이전의 인덱스 값을 비교한다. 2. 만약 이전 인덱스가 더 크면, 현재 인덱스와 바꿔준다. 3. 현재 인덱스가 더 크면 교환하지 않고 다음 두 연속된 배열값을 비교한다. 4. 이를 (전체 배열의 크기 - 현재까지 순환한 바퀴 수)만큼 반복한다. 이 정렬 알고리즘은 1부터 비교를 시작하여..
합병 정렬은 분할 정복(Divide and Conquer) 방식으로 설계된 알고리즘이다. 분할 정복은 큰 문제를 반으로 쪼개 문제를 해결해나가는 방식으로, 분할은 배열의 크기가 1보다 작거나 같을때까지 반복한다. 입력으로 하나의 배열을 받고, 연산 중에 두개의 배열로 계쏙 쪼개 나간 뒤, 합치면서 정렬해 최우에는 하나의 정렬을 출력한다. 합병은 두 개의 배열을 비교하여, 기준에 맞는 값을 다른 배열에 저장해나간다. 오름차순의 경우 배열A, 배열B를 비교하여 배열A에 있는 값이 더 작다면 새 배열에 저장해주고, A인덱스를 증가시킨 후 A, B의 반복을 진행한다. 이는 A나 B중 하나가 모든 배열값들을 새 배열에 저장할 때 까지 반복하며, 전부 다 저장하지 못한 배열의 값들은 모두 새 배열의 값에 저장해준다..
퀵 정렬은 분할 정복(Divide and Conquer) 방식으로 설계된 알고리즘이다. pivot point라고 기준이 되는 값을 하나 설정하는데, 이 값을 기준으로 작은 값은 왼쪽, 큰 값은 오른쪽으로 옮기는 방식으로 정렬을 진행한다. 이를 반복하여 분할된 배열의 크기가 1이되면 배열이 모두 정렬된것이다. 1. pivot point로 잡을 배열의 값 하나를 정한다. 보통 맨 앞이나 맨 뒤, 혹은 전체 배열 값 중 중간값이나 랜덤값으로 정한다. 2. 분할을 진행하기에 앞서, 비교를 진행하기 위해 가장 왼쪽 배열의 인덱스를 저장하는 left 변수, 가장 오른쪽 배열의 인덱스를 저장한 right 변수를 생성한다. 3. right부터 비교를 진행한다. 비교는 right가 left보다 클 때만 반복하며, 비교한..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/A9Jd6/btqAtCjHGoU/3Bal6vUNOLs3hlVd3zAc2K/img.gif)
사이트 간 스크립팅(XSS: Cross-Site Scripting) 웹 애플리케이션에서 많이 나타나는 취약점의 하나로, 웹사이트 관리자가 아닌 이가 웹 페이지에 악성 스크립트를 삽입할 수 있는 취약점이다. - 이 취약점은 웹 애플리케이션이 사용자로부터 입력 받은 값을 제대로 검사하지 않고 사용할 경우 나타난다. 주로 여러 사용자가 보게 되는 전자 게시판에 악성 스크립트가 담긴 글을 올리는 형태로 이루어진다. - 이 취약점으로 해커가 사용자의 정보(쿠키, 세션 등)를 탈취하거나, 자동으로 비정상적인 기능을 수행하게 하거나 할 수 있다. 주로 다른 웹사이트와 정보를 교환하는 식으로 작동한다. 대응방안 : 1. script문장에 존재한 특수문자를 메타캐릭터로 변환시킨다. ---- >..
프레임워크란 소프트웨어의 구체적인 부분에 해당하는 설계와 구현을 재사용이 가능하게끔 일련의 협업화된 형태로 클래스들을 제공하는것. 쉽게 풀어보면 밑바닥부터 하나하나 개발하는게 아니라 화면에 표현되거나 데이터를 처리하는 방식, 외부 모듈과 연계하는 방식 등 미리 구조화된 틀과 라이브러리 등을 제공하고 그 기반에서 개발자가 개발한 코드를 제어하는것을 의미한다고 볼 수 있습니다. 프레임워크의 장점 1. 개발 생산성이 획기적으로 좋아집니다. 프레임워크는 컴포넌트, 통신 처리, 데이터 처리 등 개발에 필요한 다양한 기능 등을 미리 제공합니다. 이를 잘 활용하면 백지상태에서 개발하는 방식에 비해 개발 생산성은 좋을 수 밖에 없습니다. 2. 코드품질이 향상됩니다. 프레임워크는 개발자가 반복적인 작업에서 실수하기 쉬운..