[빅오표기법] 빅오표기법이란? (Big O notation)
·
과거의 이력/기본개념 (손필기)
. 개발자로써 알고리즘을 짜야하고, 누군가가 만들어놓은 알고리즘을 자주 사용한다. 과연 그 알고리즘은 빠른 알고리즘일까? 이것을 평가하기위한 지표가 빅오표기법(Big O notation) 이다. 1. 빅오표기법이란? 상단에서 언급했듯 빅오표기법은 알고리즘이 얼마나 빠른지를 나타내는 표기법이다. 실제로 대문자 O를 사용하기에 빅.오. 표기법이라고 한다.(정말로..!) 빅오표기법은 '초' 와같은 시간단위로 속도를 세는것이 아니라 연산 횟수를 비교하기 위한것이다. 따라서 연산양이 많아질때 알고리즘에 걸리는 시간이 어떤식으로 증가하는지 알 수 있다. 2. 예시 100개의 원소를 가진 리스트를 단순탐색과 이진탐색을 각각 수행한다고 해보자. 이진탐색은 7밀리초가 걸리고 단순탐색은 100밀리초가 걸린다. 해당 결과로..
[알고리즘] 이진탐색(binary search) 기본개념 + js코드
·
과거의 이력/기본개념 (손필기)
240,000 개의 값이 있을때 단순탐색은 최대 240,000번 추측해야하지만, 이진탐색은 최대 18번의 추측으로 정답을 찾아낼 수 있다. 크기가 커질수록 단순탐색과는 비교도 안될정도의 빠른속도로 정답을 찾아낼 수 있다. 단, 이진탐색은 원소들이 정렬되어 있어야만 사용할 수 있다. javascript로 구현한 이진탐색 function binarySearch (target, dataArray) { let low = 0; let high = dataArray.length - 1; while (low target) { // 추측값이 정답보다 클 경우 high = mid - 1; } else { // 추측값이 정답보다 작을 경우 low = mid + 1; } } return undefined; } 단순탐색과 이..
[Lv.1] Hash - 완주하지 못한 선수
·
과거의 이력/프로그래머스
https://github.com/ohjeongmin/Programmers_Algorithm/tree/main/src/javascript/hash GitHub - ohjeongmin/Programmers_Algorithm Contribute to ohjeongmin/Programmers_Algorithm development by creating an account on GitHub. github.com 나의 풀이 function solution(p, c) { p.sort() c.sort() while(p.length) { let pVal = p.pop() if(pVal !== c.pop()) return pVal } } 풀이 이유 1. 중복값이 있을 경우 중복값이 있을 경우, 앞 인덱스보다 뒷 인덱스로..