전체 글 195

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

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

[알고리즘] 문제 해결 패턴 (2) 다중 포인터 패턴

다중 포인터 패턴인덱스나 위치에 해당하는 포인터나 값을 다음 특정 조건에 따라 중간 지점에서부터 시작 지점이나 끝 지점이나 양쪽 지점을 향해 이동시키는 것  👉🏻 배열이나 문자열과 같은 일종의 선형 구조나 이중 연결 리스트나 단일 연결 리스트를 만든다.👉🏻 한 쌍의 값이나 조건을 충족시키는 무언가를 찾는다.[-4, -3, -2, -1, 0, 1, 2, 5]"alksjdalksjdlkasjdlks" 참조값이란 인덱스를 가리키는 숫자인 i와 j같은 변수를 의미한다.j와 j를 시작하여 특정방향으로 이동할 수 있게 참조값을 사용하기도 한다. 포인터 변수는 배열이나 문자열의 특정 위치를 가리킨다.(포인터 변수는 두번째도 있으므로 서로를 향해 이동하거나 같은 방향으로 이동하든 끝에서부터 시작위치로 이동하든 ..

[프로그래머스] 컨트롤 제트 🎛️ | JS

문제숫자와 "Z"가 공백으로 구분되어 담긴 문자열이 주어집니다. 문자열에 있는 숫자를 차례대로 더하려고 합니다. 이 때 "Z"가 나오면 바로 전에 더했던 숫자를 뺀다는 뜻입니다. 숫자와 "Z"로 이루어진 문자열 s가 주어질 때, 머쓱이가 구한 값을 return 하도록 solution 함수를 완성해보세요.해결 과정문제가 풀리지 않아 라매개발자 영상을 보며 풀었다. 라매개발자 영상을 보고도 이해가 되지 않아 며칠동안 고민했다. 고민을 해도 이해가 되지 않았다. 그러다 문득 완성된 코드를 먼저 이해해보기로 했다. 그래도 이해가 되지않아. 디버깅을 해보면서 이해를 하니까 코드가 이해가 됐다.function solution(s) { // 현재 숫자를 저장할 빈문자열을 만든다. let currentNumber ..

[알고리즘] 문제 해결 패턴 (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에 따라서 ..

[알고리즘] 빅오표기법

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

[프로그래머스] 문자열 정렬하기(1) | JS

문제문자열 my_string이 매개변수로 주어질 때, my_string 안에 있는 숫자만 골라 오름차순 정렬한 리스트를 return 하도록 solution 함수를 작성해보세요.해결 과정function solution(my_string) { let emptyValue = my_string.replace(/[a-z]/g, ''); let emptyValue2 = Array.from(String(emptyValue), Number); return emptyValue2.sort();} replace()를 이용하여 a-z의 문자들을 my_string에서 부터 제거해줬다.그렇게 되면 값들이 숫자로 변환해야하는데 방법을 몰라서 구글링했다.  숫자를 문자열로 만들어 주기 위해 참고한 사이트 👇..

728x90