STUDY (287) 썸네일형 리스트형 JS | 위치 정보를 통해 현재 날씨 출력하기 ( geolocation / Weather API ) 1. 위치정보 요청 geolocation.getCurrentPosition()메서드를 이용하여 사용자의 위치정보(장치의 위치)를 요청. getCurrentPosition()메서드는 최소 두 개의 매개변수를 입력받음. success와 error 콜백 함수가 기본. 기본 문법 navigator.geolocation.getCurrentPosition(success[, error[, [options]]) function handleGeoSucc(position) { /* Success Handle */ } function handleGeoErr() { /* Error Handle */ } function requestCoords() { navigator.geolocation.getCurrentPosition(h.. JS | localStorage알아보기 localStorage는 사용자의 브라우저에 데이터를 저장할 수 있게 해줍니다. localStorage에는 key와 value를 저장할 수 있으며 그 값들은 모두 String으로 저장해야 합니다. sessionStorage와의 차이점? 세션스토리지는 세션이 종료되면 저장된 데이터가 모두 사라지지만, 로컬스토리지에 저장된 데이터는 만료기간이 없습니다. 즉, 브라우저가 종료되면 세션스토리지에 저장된 데이터는 사라지고 로컬스토리지에 저장된 데이터는 사라지지 않습니다. 세션스토리지는 탭/창 마다 각각 다른 세션 스토리지를 생성합니다. 1. 데이터 저장하기 setItem(key, value)을 이용하여 데이터를 저장합니다. 이 때 로컬스토리지는 모든 값을 문자열로 저장해야 하기 때문에 object를 JSON.st.. 해싱(hashing) / 해시 테이블(Hash Table) 해시 테이블은 키와 해시함수, 그리고 버킷이라는 데이터를 저장하는 장소로 이루어짐. 키(key) - 고유한 값, 해싱함수의 인자값 해시 함수(hash function) - 키를 입력받은 후 키에 맞는 데이터가 저장 된 위치값을 반환(이 과정을 해싱이라고 함). 버킷(bucket) - 해시 함수를 통해 생성된 해시 값을 고유 주소(키)로 사용하며 키에 맞는 값(value)의 한 쌍으로 저장하는 장소. 해시 테이블은 데이터가 키-값의 한 쌍으로 이루어져있기 때문에 삽입, 삭제, 검색 등의 과정에서 모두 O(n)의 시간복잡도를 가짐. 키값이 순차적으로 생성되는 것은 아니므로 순서나 관계가 있는 배열에서 사용하는 것은 적합하지 않으며 해시충돌이 일어날 수 있음. 해시 충돌(hash collision) 해시 충돌.. JS | Date알아보기 ( + 남은 날짜 및 시간 구하기) Date는 자바스크립트에 내장되어있는 객체로 1970년 1월 1일 00:00 UTC(국제 표준시)으로부터 지난 시간을 밀리세컨드 단위로 나타내는 유닉스 타임스탬프를 사용합니다. 밀리초/밀리세컨드(millisecond, ms)? 1000분의 1초를 나타내는 단위로 1000밀리세컨드는 1초와 같다. Date사용해보기 new연산자를 사용해 Date객체를 생성. 아무런 인자값을 넣지 않으면 기본으로 생성한 시점의 시간으로 생성됨. const CURRENT_DATE = new Date(); console.log(CURRENT_DATE); 특정 날짜로 Date객체를 생성하려면 인자값으로 특정 날짜를 입력. const BIRTH_DAY = new Date("1995-12-28"); +) 두 날짜간의 차이(일 수) 구.. 이분 탐색/이진 탐색(Binary Search) 이진 탐색 알고리즘은 정렬된 원소 리스트를 받아 리스트에 원하는 원소가 있을경우 그 원소의 위치를 반환, 없을경우 null을 반환함. 시간복잡도는 O(log n)으로 매우 빠른편. Java 구현 코드 static int binarySearch(int[] arr, int num) { Arrays.sort(arr); int l = 0, r = arr.length-1; while(l 기수 정렬(Radix sort) / 계수 정렬(Counting sort) 1. 기수 정렬(Radix sort) 낮은 자리수 부터 비교하여 정렬해간다는 것을 기본 개념으로 하는 정렬. 문자열이나 정수 정렬에는 사용가능하며 속도도 매우 빠르지만, 부동 소숫점 실수 같이 자릿수가 없는 경우 정렬할 수 없음. 시간 복잡도는 O(d * (n + b)) == O(dn)으로 매우 빠른편. Java 구현 코드 (1) 배열의 최대값을 찾는 함수(getMax)를 통해 배열의 최대값 찾음 static int getMax(int[] arr) { int max = arr[0]; // 배열에서의 최대 원소 찾아 반환 for (int i = 1; i < arr.length; i++) { if(max < arr[i]) { max = arr[i]; } } return max; } (2) count sort.. 힙 정렬(Heap sort) 1. 힙 정렬(Heap sort) 완전 이진 트리를 기본으로 하는 힙(Heap) 자료구조를 기본으로하는 정렬. 불안정 정렬(unstable sort)에 속하며 평균, 최선, 최악 시간 복잡도 모두 O(n log n)임. 가장 크거나 작은 값을 구할 때 유용 완전 이진 트리(complete binary tree)? 이진 트리의 한 종류로서 왼쪽 부터 차례대로 노드를 삽입하는 트리(왼쪽부터 채움, 왼쪽이 비어있는데 오른쪽이 채워져있을 수 없음) Java 구현 코드 static void heapSort(int[] arr) { int n = arr.length; for (int i = n/2-1; i >= 0; i--) { // 최초 heap 구성 heapify(arr, n, i); } for (int i = .. 퀵 정렬(Quick sort) / 병합(합병) 정렬 (Merge sort) 1. 퀵 정렬(Quick sort) 퀵 정렬 알고리즘은 분할과 재귀로 이뤄진다. 1. 배열을 분할한다. 2. 피벗의 왼쪽과 오른쪽에 있는 하위 배열을 각각 또다른 배열로 보고, 각 하위 배열을 분할하고 각 하위 배열에 있는 피벗의 왼쪽과 오른쪽에서 더 작아진 하위 배열을 얻는다. 분할 정복 방법을 통해 정렬. 배열 중 한 원소를 정한 뒤(pivot) 피벗 보다 작은 원소들, 피벗보다 큰 원소들로 나눔(분할 divide). 나눈 배열들에 대해 재귀적으로 함수 실행(피벗을 정하고 다시 그 배열에서 작은 배열로 나누고의 반복) 시간 복잡도는 최악의 경우 O(N²)이며 최선의 경우 O(NlogN)임. 다른 정렬 알고리즘에 비해 빠름. 불안정 정렬(unstable sort)이며 오히려 정렬이 되어있는 경우 더 오.. 이전 1 ··· 26 27 28 29 30 31 32 ··· 36 다음