알고리즘 4

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

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

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

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

[알고리즘] 문제해결접근법

알고리즘이란?특정 작업을 달성하기 위한 과정이나 일련의 단계를 의미 실력 향상 방법문제 해결을 위한 계획 만들기(문제에 접근하는 방법, 문제를 세분화하기 위한 전략)일반적인 문제 패턴을 파악 문제 해결 전략문제 이해문제를 내 방식대로 다시 말할 수 있는가?  문제를 해결하기 위해 어떤 입력이 필요한가?문제를 해결하면 어떤 출력이 나와야 하는가?출력을 입력에서 결정할 수 있는가? 즉, 문제를 해결하기에 충분한 정보가 있는가? (이 질문은 문제를 해결하려는 과정에서야 답할 수 있을 수도 있지만, 지금 이 단계에서 이 질문을 고려하는 것도 여전히 중요하다.)중요한 데이터 요소들을 어떻게 라벨링해야 할까?구체적 예시를 알아보기간단한 예시로 시작더 복잡한 예시들로 진행빈 입력값이 있는 예제를 살펴보는것잘못된 입력..

[알고리즘] 배열과 오브젝트의 성능평가

🤓 선수 지식으로는 빅오 표기법의 개념이 필요하다.(빅오 표기법: https://recordoftheday.tistory.com/entry/%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98-%EB%B9%85%EC%98%A4%ED%91%9C%EA%B8%B0%EB%B2%95) 객체의 빅오 표기객체는 언제 사용하냐정렬의 필요가 없을때빠른 접근, 입력과 제거를 원할function addUpTo(n) { let total = 0; for (let i = 1; i  빅오의 객체 표기입력 - O(1)객체에 키와 값을 추가하는 빅오 표기제거 - O(1)객체의 키를 제거하기 위한 빅오 표기탐색 - O(n)접근 - O(1)객체의 키에 접근하기 위한 빅오 표기탐색은 희귀하지만, O(N)은 N에 따라서 ..

728x90