본문 바로가기

전체 글

(27)
브라우저 (Browser) 브라우저 주요 기능 - 사용자가 선택한 자원을 서버에 요청, 브라우저에 표시 - 자원은 html 문서, pdf, image 등 다양한 형태 - 자원의 주소는 URI에 의해 정해짐 - 브라우저는 html과 css 명세에 따라 html 파일을 해석해서 표시함 *명세는 웹 표준화 기구인 W3C(World wide web Consortium)에서 정해짐 - 브라우저가 가진 인터페이스는 보통 비슷비슷한 요소들이 존재 ex) 주소 표시 줄, 이전/다음 버튼, 북마크(즐겨찾기), 새로 고침 버튼, 홈 버튼 브라우저 기본 구조 사용자 인터페이스 주소 표시줄, 이전/다음 버튼, 북마크 등 사용자가 활용하는 서비스들 (요청한 페이지를 보여주는 창을 제외한 나머지 부분) 브라우저 엔진 사용자 인터페이스와 렌더링 엔진 사이의..
정렬 알고리즘 정리 1. 선택 정렬(Selection Sort) 선택 정렬이란, 현재 위치에 들어갈 값을 찾아서 바꾸는 알고리즘이다. 시간 복잡도 O(n^2) 과정 1. 현재 정렬되지 않은 가장 맨 앞의 인덱스를 선택 2. 다음 인덱스부터 끝까지 가장 작은 값을 찾아서 현재 인덱스의 값과 바꿈 3. 나머지 배열을 같은 방법으로 반복 장점 - 알고리즘이 단순하다. - 다른 메모리 공간을 필요로 하지 않는다. (in-place 정렬) 단점 - 시간복잡도가 O(n^2)으로 비효율적이다. - 불안정 정렬이다. - 배열의 길이가 길어질수록 비효율적이다. 2. 버블 정렬(Bubble Sort) 버블 정렬이란, 현재 원소와 다음 원소를 비교하여 조건에 맞으면 교환하는 식의 알고리즘이다. 시간 복잡도 O(n^2) 과정 1. 서로 인접한 ..
기수 정렬 (Radix Sort) 기수 정렬이란? 기수정렬은 낮은 자리수부터 비교하여 정렬해 간다는 것을 기본 개념으로 하는 정렬 알고리즘이다. 기수정렬은 비교 연산을 하지 않으며 정렬 속도가 빠르지만 데이터 전체 크기에 기수 테이블의 크기만한 메모리가 더 필요하다. 시간 복잡도 O(N) 진행 과정 1. 모든 데이터에 대하여 가장 낮은 자리수에 해당하는 Bucket에 차례대로 데이터를 둔다. 2. 첫 번째부터 차례대로 버킷에서 데이터를 다시 가져온다. 3. 가장 높은 자리수를 기준으로 하여 자리수를 높여가며 1번 2번 과정을 반복한다. 코드 public class radix { // 배열에서 최대값을 얻기 위한 메서드 static int getMax(int[] data) { int mx = data[0]; for (int i = 1; i..
계수 정렬 (Counting Sort) 계수 정렬이란? 각 원소들 간의 비교 없이, 크기를 기준으로 개수를 세어 정렬하는 알고리즘 시간 복잡도 O(N) 진행 과정 1. 각 크기에 해당하는 데이터의 개수를 count배열에서 세어준다. 2. count배열의 누적합을 구한다. 3. 누적합을 기준으로 해당 index에 data를 넣는다. 코드 public class CountingSort { public static void main(String[] args) { int[] a = {2, 5, 3, 0, 2, 3, 0, 3}; a = sort(a); System.out.println(Arrays.toString(a)); } public static int[] sort(int[] a) { int max = Collections.max(Arrays.as..
힙 정렬 (Heap Sort) 힙 정렬이란? 완전 이진 트리를 기본으로 하는 힙(Heap) 자료구조를 기반으로한 정렬 방식이다. *힙 이란? - 노드를 삽입할 때 왼쪽부터 차례대로 삽입하는 트리 형태인 완전 이진 트리의 일종으로 최솟값이나 최댓값을 빠르게 찾아내도록 만들어진 자료구조 - 부모의 키 값이 자식의 키 값보다 항상 크거나(작거나) 같은 이진트리 시간 복잡도 O(NlogN) 진행 과정 1. 최대힙을 구성한다. 2. 루트의 값을 마지막 요소와 바꾼 후, 힙의 사이즈 하나 줄인다. 3. 힙의 사이즈가 1보다 크면 위 과정을 반복한다. 코드 public class HeapSort { public static void main(String[] args) { int[] arr = {5, 8, 4, 7, 10, 9, 2, 1, 6, 3..
병합 정렬 (Merge Sort) 병합 정렬이란? 병합 정렬(Merge Sort)은 요소를 쪼갠 후, 다시 합병시키면서 정렬해나가는 방식의 정렬 알고리즘이다. 시간 복잡도 O(nlogn) *성능은 좋지만 메모리 자원 측면에선 비효율적 진행 과정 1. 초기 상태의 리스트 하나를 두 개의 리스트가 되도록 분할해 나가면서, 최종적으로 길이가 1이 될때까지 분할한다. 2. 분할된 리스트끼리 비교를 하여 하나의 리스트에 병합(merge)하며 정렬한다. 코드 private void solve() { int[] array = { 230, 10, 60, 550, 40, 220, 20 }; mergeSort(array, 0, array.length - 1); for (int v : array) { System.out.println(v); } } publ..
퀵 정렬 (Quick Sort) 퀵 정렬이란? 퀵 정렬(Quicksort)은 분할 정복 알고리즘으로, 다른 원소와의 비교만으로 정렬을 수행하는 비교 정렬에 속한다. 시간 복잡도 최악의 경우 O(n^2) 평균 O(nlogn) 진행 과정 1. 리스트에서 하나의 원소를 고른다. 이렇게 고른 원소를 피벗(pivot)이라고 한다. 2. 피벗 앞에는 피벗보다 값이 작은 원소들이 오고, 피벗 뒤에는 피벗보다 값이 큰 원소들이 오도록 한다. 이렇게 리스트를 둘로 나누는 것을 분할이라고 한다. 분할을 마친 뒤에는 피벗은 더 이상 움직이지 않는다. 3. 분할된 두 개의 리스트에 대해 재귀적으로 1, 2 과정을 반복한다. 재귀는 리스트의 크기가 0이나 1이 될 때까지 반복한다. 코드 public void quickSort(int[] arr, int lef..
javascript - 함수 함수 개념 특정 기능을 수행하는 소스 코드를 따로 묶어 놓은 덩어리자주 실행해야 하는 기능에 포함된 명령어가 여러가지일 때 그 명령을 한 번에 실행할 수 있게 한 덩어리로 묶어줌 변수와 함수의 차이 변수: 1개의 데이터만 저장함, var라는 키워드를 이용하여 선언함, 문자형, 숫자형, 논리형 데이터를 보관함, 객체를 참조함 함수: 자바스크립트 코드를 저장함, function이라는 키워드를 이용하여 선언함, 출력문, 제어문 등의 코드를 저장하고 데이터를 반환함 함수와 이벤트 기본 함수 정의문 함수를 사용하여 코드를 저장한 것 fucntion키워드를 사용해 변수 선언 ex) // 함수 정의문 // function 함수명(){ 실행 명령; } // 익명 함수 선언 // 참조변수=function 함수명(){ 실..