본문 바로가기

Algorithm

(21)
[Udemy] Sliding window 관련 문제 풀이 지난 시간에 배운 sliding window 관련 문제 풀이를 하면서 개념을 더 탄탄하게 익혀보자.문제 1. minSubArrayLen양수 배열과 양수 두 매개변수를 받는 함수가 있다. 주어진 정수 인자보다 인접한 요소의 부분합이 크거나 같은 하위 배열의 최소 길이를 반환하라.minSubArrayLen([2,3,1,2,4,3], 7) // 2 -> because [4,3] is the smallest subarrayminSubArrayLen([2,1,6,5,4], 9) // 2 -> because [5,4] is the smallest subarrayminSubArrayLen([3,1,7,11,2,9,8,21,62,33,19], 52) // 1 -> because [62] is greater than 5..
[Udemy] Sliding Window 패턴 파악하기 오늘은 배열, 문자열, 연결 리스트와 같은 선형구조에서 데이터를 입력하거나 특정 방식으로 연속적인 하위 데이터 집합을 구하는 데 용이한 Sliding Window(슬라이딩 윈도우) 패턴에 대해 알아보자. 문제배열에서 n 갯수만큼 인접한 숫자들의 합 중 가장 큰 값을 반환하라. input: arr = [1,2,5,2,8,1,5], n = 2output: 10 input: arr = [1,2,5,2,8,1,5], n = 4output: 17 input: arr = [4,2,1,6], n = 1output: 6 input: arr = [4,2,1,6,2], n = 4output: 13 input: arr = [], n = 4output: null 일반적인 접근function maxSubarraySum(arr,..
[Udemy] Two pointer(투 포인터) 패턴 파악하기 오늘은 투 포인터 패턴에 대해 알아보자.투 포인터는 인덱스나 위치에 해당하는 포인터나 값을 만든 후 특정 조건에 따라 포인터를 이동시키는 패턴을 말한다.주로 배열, 문자열, 연결 리스트와 같은 선형 자료구조에서 한 쌍의 값이나 조건을 충족시키는 무언가를 찾을 때 사용된다.문제 1.오름차순으로 정렬된 배열에서 두 요소의 합이 0이 되는 첫번째 쌍을 찾아 반환하라. input: [-3, -2, -1, 0, 1, 2, 3]output: [-3, 3] input: [-2, 0, 1, 3]output: undefined input: [1, 2, 3]output: undefined 일반적인 접근function sumZero(arr) { for (let i = 0; i 반복문이 중첩되었기 때문에 시간 복잡도가 O(n..
[Udemy] Frequency Counter(빈도수 세기) 패턴 파악하기 오늘은 문자열, 배열과 같은 선형구조의 자료구조에서 빈도수 세기 패턴에 대해 알아보자.문제두 배열이 주어졌을 때, 첫번째 배열의 각 요소의 제곱수가 두번째 배열이 있는지 확인하는 함수를 작성하라. input: [1,2,3], [4,1,9]output: true순서는 상관없이 첫번째 배열의 각 요소의 제곱수가 모두 2번째 배열에 있으므로 trueinput: [1,2,3], [1,9]output: false2의 제곱수인 4가 2번째 배열에 없으므로 falseinput: [1,2,2], [1,1,4]output: false첫번째 배열에는 1이 1개, 2가 2개인데 두번째 배열에서는 1의 제곱수가 2개, 2의 제곱수가 1개이므로 빈도가 다르므로 false일반적인 접근function frequencyValues(..
[Udemy] 코딩테스트 초보자가 문제 해결을 위해 거쳐야 할 필수적인 5가지 단계 오늘은 코딩테스트와 실무에서 문제 해결을 위한 필수적인 단계에 대해 이야기하려고 한다.이를 적용하기 위해 예시 문제를 가져왔다.문제문자열을 인수로 받아서 문자열에 포함된 모든 숫자, 알파벳의 갯수를 포함하는 객체를 반환하는 함수를 구현해라.갯수를 셀 때, 대소문자 구분이 없이 센다.특수문자, 공백은 포함하지 않는다.function charCount(str) { // 구현하시오 }문제 해결 계획 수립을 위한 필수적인 단계1. 문제 이해 하기문제를 해결하기 위해 우선 문제를 제대로 이해하는 것이 중요하다.문제를 제대로 이해하기 위한 단계는 다음과 같다.1. 문제를 나만의 방식대로 생각해보기문제를 읽고 나만의 언어 혹은 내가 생각하고 이해한대로 직접 말해보거나 글로 작성해본다.어떤 문자열이 주어지고 문자열에 ..