[재귀] 재귀란? (반복문 vs 재귀 누가더 성능이좋은가!)
·
과거의 이력/기본개념 (손필기)
. 재귀(Recursion) 란? : 재귀함수란 자기 자신을 계속 호출하는 함수를 뜻한다. - 자기 자신을 호출할 수 있기 때문에 반복 연산에 자주 사용된다. - 모든 재귀함수는 무한재귀가 발생하는것을 방지하기 위해 탈출 조건인 기본단계와 재귀단계로 나누어져 있다. - 함수가 호출될 때 스택 메모리(stack memory)를 사용하게 되는데, 함수의 스택 call이 반복적으로 이루어지므로 메모리를 많이 차지하며 반복문에 비해 성능이 좋지 않다. - 메모리가 부족한 상황까지 반복된다면 stack overflow가 발생하며 프로그램이 비정상 종료 된다. 재귀 vs 반복문 여기까지의 결론 재귀는 반복문보다 느리고 성능이 좋지 않다. 그럼 대체 재귀를 왜 사용하는걸까?... 재귀함수를 사용하는 이유 1. 재귀적..
[빅오표기법] 빅오표기법이란? (Big O notation)
·
과거의 이력/기본개념 (손필기)
. 개발자로써 알고리즘을 짜야하고, 누군가가 만들어놓은 알고리즘을 자주 사용한다. 과연 그 알고리즘은 빠른 알고리즘일까? 이것을 평가하기위한 지표가 빅오표기법(Big O notation) 이다. 1. 빅오표기법이란? 상단에서 언급했듯 빅오표기법은 알고리즘이 얼마나 빠른지를 나타내는 표기법이다. 실제로 대문자 O를 사용하기에 빅.오. 표기법이라고 한다.(정말로..!) 빅오표기법은 '초' 와같은 시간단위로 속도를 세는것이 아니라 연산 횟수를 비교하기 위한것이다. 따라서 연산양이 많아질때 알고리즘에 걸리는 시간이 어떤식으로 증가하는지 알 수 있다. 2. 예시 100개의 원소를 가진 리스트를 단순탐색과 이진탐색을 각각 수행한다고 해보자. 이진탐색은 7밀리초가 걸리고 단순탐색은 100밀리초가 걸린다. 해당 결과로..
[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. 중복값이 있을 경우 중복값이 있을 경우, 앞 인덱스보다 뒷 인덱스로..