전체 글 222

[알고리즘&자료구조] 분할정복 알고리즘, Divide and conquer

분할정복이란? 알고리즘 디자인 패러다임 중 하나이다. 정의 : 문제를 즉각 해결할 수 있을 때까지 재귀적으로 둘 이상의 하위 문제(Sub-problem)들로 나누고(Divide) 문제를 해결한 다음(Conquer) 그 결과를 이용해 다시 전체 문제를 해결하며 합치는 방법 분할정복 핵심 진행방식 ① 분할 : 동일한 타입의 하위 문제로 큰 문제를 분할한다. ② 정복 : 재귀적으로 하위 문제들을 해결한다. ③ 병합 : 적절히 해결된 결과를 사용해 큰 문제를 해결한다. 분할정복 종류 이진탐색, 퀵정렬, 병합(합병)정렬 이글에서는 이전 알고리즘&자료구조 글로 썼던 이진탐색의 예시로 진행한다. 선형탐색/순차탐색(Linear search, Sequential Search) function search(arr, val..

[기타] YML, YAML

YML/YAML 이란? Yet Another Markup Language의 약자로, 사람이 읽을 수 있는 데이터 직렬화 언어이다. 최근에는 YAML Ain't Markup Language라고 불리는 재귀적 말장난도 있다. YAML 은 JSON이나 XML과 마찬가지로 설정 파일 등의 목적을 가진 데이터를 기술하기 위해 만든 포맷으로 JSON과 비교하자면 좀 더 구조가 복잡하지만 사람이 보기에 가독성 측면에서 좀 더 자연스러운 포맷이다. 어디서 사용하는가? 여러곳에서 활용하고 있겠지만 현재 내 입장에서는 github actions을 이용할때 CI/CD 를 배포할때 사용하는 포맷이다. 처음에는 그저 CI/CD를 구현하기위한 주목적으로 큰틀만 알고 사용했지만 여러 추가적인 action이 필요하게 되고(cloud..

공부/기타 2022.11.12

[알고리즘&자료구조] 슬라이딩 윈도우 알고리즘, Sliding Window

슬라이딩 윈도우란? 고정 사이즈의 윈도우가 이동하면서 윈도우 내에 있는 데이터를 이용해 문제를 풀이하는 알고리즘 여기서 말하는 윈도우와 슬라이딩은 창문 틀에서 창문이 슬라이딩 하는 것 같은 알고리즘이라는 뜻 프로그램을 작성할때나 코딩테스트에서 리스트를 활용하는 경우는 굉장히 많다. 일반적으로 인덱스를 처음부터 끝까지 완전 탐색을 하게 되는데, 완전 탐색을 할 경우 효율성이 좋지 않을 때 활용할 수 있는 알고리즘 3가지는 다음과 같다. Two Pointer Sliding Window Prefix Sum 문제설명 주어진 Array에서 주어진 number 만큼의 연속되게 붙어있는 값들을 더했을때 가장 큰 값 max를 구해야한다. 예를들어 maxSubarraySum([2,6,9,2,1,8,5,6,3],3) 라는..

개발자 Roadmap

출처: https://github.com/pocojang/developer-roadmap GitHub - pocojang/developer-roadmap: 2020년 웹 개발자가 되기 위한 로드맵 2020년 웹 개발자가 되기 위한 로드맵 :kr:. Contribute to pocojang/developer-roadmap development by creating an account on GitHub. github.com 로드맵의 목적 이 로드맵의 목적은 전체적인 방향에 대한 아이디어를 제공하고 다음에 무엇을 배워야 할지 혼란스러울 경우와 트렌드에 뒤떨어진 것을 배우지 않도록 안내하는 것입니다. 왜 어떤 도구가 다른 도구보다 적합하다고 생각되는지에 대한 이해를 넓혀 가야 하며 유행에 따른 도구를 기억하는 ..

공부/기타 2022.11.10

[TIL] 2022/11/06 회고록

일단 한동안 회사 프로젝트에 집중하기도 했고 따로 기술관련 글은 올리지 못한거 같다. 맡고 있는 프로젝트의 SEO를 최적화하기위해 react-helmet과 react-snap을 사용하긴 했는데 원하는 만큼의 결과가 나오진 못했던거 같다. 원래라면 SSR, SSG 방식의 Next.js 로 바꿔야하지만 그렇게 되면 다시 마이그레이션하는 작업의 소요시간도 크기도하고 새로 추가된 요구사항들을 진행하지 못하기도 해서 일단 try 개념으로 SPA일때 사용하는 helmet과 snap을 사용해봤는데 첫페이지 외에 다른 라우팅주소에 대한 검색이 구글에서 나오질 않고 있다. 일단은 우선순위에서 급한부분이 아니라 나중에 작업하겠지만 아마 추후에 next.js로 최적화를 들어가지 않을까 싶다. 아마 다음주부터는 새로운 프로젝..

TIL 2022.11.06

[알고리즘&자료구조] Frequency Counter Pattern, Multiple Pointers Pattern

문제 해결 패턴 중 Frequency Counter 패턴(빈도카운터)과 Multiple Pointers 패턴(다중포인터)을 공부하였다. 빈도카운터 정확한 공식적인 이름이 있는게 아니지만 문제 해결할때 많이 등장하고 Colt Steele은 이를 frequencty counter 라고 정의하여 사용하기 때문에 이렇게 외우기로 했다. Frequency Counter Pattern, 빈도 카운터 패턴 빈도카운터패턴은 애너그램 anagram과 같은 문제나, 두 배열이나 문자 string값을 비교하여 배열의 값들이 다른 한쪽의 배열의 제곱인지 체크하는 등에서 사용하는데 자바스크립트 객체의 속성접근을 이용하여 있는지 확인후 없다면 +1 있다면 있는 값의 +1 해주는 식으로 만들고 비교할때 하나씩 지우는 방식이다. 말..