전체 글 (347) 썸네일형 리스트형 JS 알고리즘 공부1.with BaaaaaaaarkingDog BaaaaaaaarkingDog님의 알고리즘 강의 블로그를 보며 기본을 다지고 정리하려고 한다. 하지만 BaaaaaaaarkingDog님이 기본적으로 사용하는 언어는 C, C++ 기반이기 때문에 나는 javascript를 이용해 코딩테스트를 준비하려고 한다. # OT 코딩 테스트 사이트들 백준(https://www.acmicpc.net/) 프로그래머스(https://programmers.co.kr/) 구름(https://www.goorm.io/) 코딩테스트에 필요한 능력 배경 지식 : 알고리즘, 자료구조, 프로그래밍 언어적 테크닉 등 활용할 수 있는 지식 문제 해결 능력 : 배경지식을 잘 활용해 문제를 해결할 수 있는 능력 구현력 : 문제를 해결했다면 코드로 구현할 수 있는 능력 # 기초 코드 작성 요령.. JS Heap 구현 완전 이진 트리의 일종으로 우선순위 큐나 Heap sort에서 사용된다. Heap은 Max Heap과 Min Heap 두 가지 종류가 있다. 힙에서 대소관계는 부모 자식 사이에는 성립하지만, 형제 사이에는 성립하지 않는다. 따라서 완전히 정렬되지 않은 반정렬 상태를 유지하고 있다. 1. Max Heap : 가장 큰 값이 루트 노드에 존재한다. 모든 노드는 자식 노드보다 부모 노드가 큰 값을 가진다. 2. Min Heap : 가장 작은 값이 루트 노드에 존재한다. 모든 노드는 자식 노드보다 부모 노드가 작다. 두 종류의 Heap을 사용해 최댓값이나 최솟값을 찾아내는 연산을 빠르게 할 때 사용한다. Heap에 값을 삽입할 경우에는 bubbleUp을 사용하고, 삭제하는 경우에는 bubbleDown을 사용한다... 경우의 수 구하기(순열,중복순열,조합,중복조합) JS 1. 순열(nPr)서로 다른 n개의 원소 중 m개를 순서에 맞게(=순서가 다르면 다른 것으로 취급) 선택 후 나열 반복문 구현반복문으로 구현하는 경우 for문의 수가 n만큼 반복하게 된다. n이 작다면 상관없지만, 큰 경우에는 for문을 많이 사용하기 때문에 비효율적이다.function permutationLoop(list) { const result = []; for(let i=0; i 재귀 구현재귀로 구현하는 경우 반복하는 횟수를 제한하기 위한 조건문만 추가하면 한 번의 반복문을 사용해 효율적인 코드를 작성할 수 있다.// 방법1function permutationRecursion(list,m) { if(m === 1) return list.map(el=>[el]); const resu.. JS Array.sort() js에서 사용되는 배열의 sort 함수에 대해 정리해보려고 한다. 특징사용 시 기존 데이터가 변경되고 변경된 배열을 반환하는 함수이다.반환된 정렬은 stable sort가 아닐 수 있다. == 같은 값에 대해 순서가 보장되지 않을 수도 있다.기본적으로 유니코드 코드 순서대로 정렬해준다. 사용 방법사용 방법은 두 가지가 있는데,1. 단순하게 유니코드의 코드 순서대로 정렬하기. 해당 방법은 문자열을 사전 순으로 정렬할 때 사용한다. 숫자의 경우 예상과 상당히 다를 수 있기 때문에 사용하지 않는 것을 추천한다.2. 비교함수(compare function)라는 콜백을 사용해서 내가 원하는 대로 정렬하기. 특정 조건이 있거나 숫자를 오름차순이나 내림차순으로 정렬할 때 사용한다.const arr = [2,4,5,1.. 왜 최단거리 문제에 BFS를 사용하는가? BFS란 무엇인가? 간단하게 알아보면, Breathe First Search의 약자로 넓이 우선 탐색 알고리즘이다. 1. 시작 노드에서 인접한 노드를 대기 큐에 저장한다. 2. 대기 큐에서 노드를 하나 추출해 방문한다. 3. 추출한 노드와 인접한 노드를 대기 큐에 저장한다. 4. 그래프 전부를 탐색할 때까지 2, 3을 반복한다. 그렇다면 왜 최단거리 문제를 풀 때 BFS를 사용하는가? 해당 이유는 BFS가 탐색하는 규칙을 살펴보면 알 수 있다. BFS의 경우 넓이를 우선으로 탐색하기 때문에 시작 노드와 거리가 1인이 노드를 전부 탐색하고, 다음으로 거리가 2인 노드들... 탐색하는 노드가 시작 노드로부터의 거리가 점차 증가한다. 탐색 중 거리를 늘려간다면 최소 거리가 나오기 때문에 BFS를 사용한다. 참.. 프리온보딩 4회차 1월 오늘은 포트폴리오 관리 주의사항과 여러 최적화 기법 및 스타트업 선택 기준에 대해서 수업을 들었습니다. 포트폴리오 관리 시 주의사항 포트폴리오에는 보통 깃허브에 있는 프로젝트 주소를 적어둡니다. 이때 흥미로운 프로젝트의 경우 회사에서 직접 빌드해 볼 수 있습니다. 그런데 환경이 달라지는 경우 빌드가 안 되거나 어떤 오류로 인해 빌드할 때 오류가 생기는 경우가 많습니다. 그렇기 때문에 포트폴리오를 작성하면서 프로젝트에 있는 default branch에서 빌드가 잘 되고 동작까지 하는지 한 번쯤은 확인이 필요합니다. 또한 패키지 매니저를 npm도 사용해 보고 yarn도 사용해보고 하는 경우가 있는데, 이때 lock 파일이 여러 개가 생성되는 경우가 있습니다. 하지만 lock 파일은 필요한 디펜던시들의 버전에.. 프리온보딩 3회차 1월 오늘은 성능 측정 도구와 최적화 방법에 대해 간단히 알아보고 이력서에 대해 배웠다. 성능 측정 도구 소개드릴 도구들은 말 그대로 성능을 측정하는 도구들인데 따로 설치가 필요하지 않고 크롬에서 제공하는 도구들입니다. 1. Lighthouse 개발자 도구에 관심을 가지다 보면 여러 탭들을 볼 수 있습니다. 그중에 요소 탭과 콘솔 탭을 위주로 사용하고 가끔 네트워크 탭과 애플리케이션(스토리지, 쿠키 등) 탭을 사용하는 저로써는 존재만 알고 사용해보지 못한 도구입니다. 간단하게 설명하자면 웹 성능을 종합적으로 분석하는 도구이며 주요 기능으로는 성능 분석, 접근성검사, SEO평가, PWA기준 평가 등이 있습니다. 이 외에도 다양한 기능을 제공하기 때문에 필요하다면 더 많은 공부를 통해 활용해 보는 것이 좋을 듯합.. 프리온보딩 2회차 1월 지난 시간 복습 지역변수와 전역변수 중 지역변수를 선호한다. 왜냐하면 전역변수를 사용하게 되면 디버깅의 어려움 생긴다. 그렇기에 전역변수의 경우 필요하지 않으면 최대한 사용하지 않는다. 개발 툴의 경우 프로젝트 크기에 따라 다르게 사용한다. 오늘은 테스트에 관련해 이야기를 해보자. 무엇을 테스트 할 것인가? UI의 경우 테스트가 필요 없다. why? UI는 테스트하는 환경에 따라 바뀌는 부분이 많기도 하고, 다른 도구(storybook)로 테스트가 가능하다. 렌더링 순서를 고려해야 하나? 특별한 경우가 아니고서야 개발을 하면서 렌더링 순서를 고려할 필요 없다. 왜냐하면 사용자가 일반적으로 사용할 때 전체 화면에서 어떤 것이 먼저 그려지길 바라는 경우가 드물다. 그렇기에 테스트를 하는 경우, 우리가 중요하.. 이전 1 ··· 39 40 41 42 43 44 다음