시간복잡도 4

[알고리즘] 문제 해결 패턴 (4) 분할 정복 패턴

분할 정복 패턴주로 배열이나 문자열 같은 큰 규모의 데이터셋을 처리한다.(연결리스트나 트리가 될 수 있다.) 값을 찾기 위해 배열의 왼쪽에서 시작하여 오른쪽 끝까지 이동하는 것보다는 배열을 작은 조각으로 세분화하여 각 조각들을 어디로 이동시킬지 결정하는 작은 조각으로 세분화하여 각 조각들을 어디로 이동시킬지 결정하는 작업을 하겠다.즉! 큰 데이터 덩어리를 작은 조각으로 나누는것 예시탐색알고리즘의 전형적인 예이다. 이것은 정렬된 숫자를 지닌 배열을 취한다. 배열은 정렬된 상태여야한다. 입력된 search라는 함수는 값을 취하고 해당 값이 있는 위치를 반환시킨다. search([1,2,3,4,5,6],4) // 3 function search(arr, val) { for (let i = 0; i  o(n)..

[알고리즘] 문제 해결 패턴 (3) 기준점 간 이동 배열 패턴

기준점 간 이동 배열 패턴배열이나 문자열과 같은 일련의 데이터를 입력하거나 특정 방식으로 연속적인 해당 데이터의 하위 집합을 찾는 경우에 유용하다.  sliding window 접근법창문을 하나 만들어야 한다. 창문은 단일변수, 하위배열, 또는 필요한 경우 다른 문자열도 될 수 있다. 조건에 따라 창문을 이동시키며, 시작 위치에서 시작하면 보통 왼쪽에서 오른쪽으로 이동한다. 오른쪽에서 왼쪽으로 이동도 가능하고 가운데 위치에서 시작할 수 있다. 그러나 보통 창문을 왼쪽, 즉 요소의 시작 위치 또는 배열이나 문자열의 시작 위치에서 끝나는 위치로 이동한다.  규모가 큰 데이터셋에서 데이터의 하위 집합을 추척하는 문제에 유용하다.예시 문제정수의 배열과 n이라는 수를 받아들이는 maxSubarraySum이라는 함..

[알고리즘] 문제 해결 패턴 (1) 빈도수 세기 패턴

빈도수 세기 패턴자바스크립트의 객체를 사용해 다양한 값과 빈도를 수집한다.  이 패턴은알고리즘과 여러 데이터와 입력 값이 서로 비슷한 값으로 구성되어 있는지서로 간의 애니그램인지값이 다른 값에 포함되는지 여부를 비교하거나데이터를 입력값이나 두 개 이상의 빈도 혹은 특정하게 발생하는 빈도와 비교할 때 유용하다. 이를 좋은 접근법이자 패턴으로 만들어주는 것은 중첩된 루프와 관련 있거나 n의 제곱 시간을 사용하는 더 쉬운 해결책과 비교했을 때 n²이라 할 수 있다.관련 문제 예시두 개의 배열을 입력받는 same이라는 함수를 작성하세요. 이 함수는 첫 번째 배열의 각 값이 두 번째 배열에서 제곱된 값으로 존재하는 경우에 true를 반환해야 합니다. 값의 빈도도 동일해야 합니다.same([1,2,3], [4,1,..

[알고리즘] 빅오표기법

빅오표기법빅오표기법는 대략적으로 숫자를 세는 것이다. 입력된 내용이 늘어날 수록 알고리즘에 실행 시간이 어떻게 변하는지 설명해주는 방식이다. 어떤 function의 입력 값이 늘어나는 것과 function 실행 시간이 변하는 관계를 의미한다.알고리즘의 성능 평가를 하기 위해서 사용하드웨어의 영향을 받지 않는다.  즉, 입력의 크기와 실행시간의 관계를 의미(f(n)=n) | n의 값이 커질수록 실행시간도 늘어난다.(f(n)=n*n | 실행시간이 n의 제곱일 수도 있다. f(n) = 1 | n이 커져도 실행 시간에는 아무런 영향을 받지 않기에 항상 상수일 수 있다. (간단하게 표현하기 위해 1로 표시)f(n)이 완전이 다를 수도 있다. 빅오 표기법의 필요성여러가지 코드를 일반적으로 서로 비교하고 성능을 평가..

728x90