일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- GraphQL
- 자바스크립트
- 코딩테스트
- RxJS
- vue3
- 릿코드
- alexnet
- 자료구조
- 큐
- 타입스크립트
- 포인터
- cors
- 프로그래머스
- 스택
- 프론트엔드
- pytorch
- 프로세스
- 브라우저
- Machine Learning
- 알고리즘
- RT scheduling
- 해시테이블
- 컨테이너
- 연결 리스트
- 배열
- C
- 연결리스트
- 이진탐색
- 웹팩
- APOLLO
- Today
- Total
목록알고리즘 (26)
프린세스 다이어리

문제 링크 이전 회전배열 탐색 문제 풀고 오니 핵쉬움 3분컷(문제 풀이 조건이 쉽게 주어지긴 했음) 1. 접근 방법 (1) mid 값이 mid - 1 값보다 작은 경우, 회전된 상태에서 mid값이 인덱스 0인 경우이므로 mid의 값을 반환한다. if (nums[mid - 1] > nums[mid]) return nums[mid]; (2) mid 기준 왼쪽이 정렬된 상태면 left를 mid + 1로 옮겨 준다, (3) mid 기준 오른쪽이 정렬된 상태면 right를 mid로 옮겨 준다. if (nums[0] < nums[mid]) { // 왼쪽이 정렬된 상태일 때 left = mid + 1; } else { // 오른쪽이 정렬된 상태일 때 right = mid; } (4) 주어지는 배열의 길이가 1이거나 ..

문제 링크 왜 "Advanced" Binary Search 인지 모르겠으나 여기서 원하는 대로 풀어드림. 1. 접근 방법 (1) 장애 난 버전이랑 그렇지 않은 버전을 나누어서 탐색하면 되므로 이진탐색으로 접근한다 (2) 이전 버전 mid - 1이 정상 버전이고 지금 검사중인 mid 버전이 장애 난 버전이면 지금 검사중인 mid 버전 리턴. if (!isBadVersion(mid - 1) && isBadVersion(mid)) return mid; (3) 그 외 경우에서, 지금 버전 mid가 장애 난 버전이면 왼쪽 리스트 탐색하고, 정상 버전이면 오른쪽 리스트를 탐색한다. if (isBadVersion(mid)) { right = mid; } else { left = mid + 1; } (4) left 리..

1. 접근 방법 (1) mid기준 오른쪽이 정렬됐을 경우와, mid기준 왼쪽이 정렬됐을 경우를 나눈다. if (nums[left]

1. 접근 방법 (1) lottos에서 win_nums랑 일치하는 숫자의 갯수가 n이라면, 최소 정답은 n개, 최대 정답은 n + (0의 갯수)다. (2) 0의 갯수 구하기 const numOfZeros = lottos.filter(lotto => lotto === 0).length; (3) 최소, 최대 정답 수 구하기 let minCorrect = 0; for (let i = 0; i { if (corre..

> 문제 바로가기 코딩테스트 연습 - 베스트앨범 스트리밍 사이트에서 장르 별로 가장 많이 재생된 노래를 두 개씩 모아 베스트 앨범을 출시하려 합니다. 노래는 고유 번호로 구분하며, 노래를 수록하는 기준은 다음과 같습니다. 속한 노래가 programmers.co.kr 1. 접근 방법 (0) 일단 문제가 해시 카테고리에 있다는 점을 참고해 map을 생성하여 작성함. (1) map에 장르별로 key에 장르를, value에 각 곡의 인덱스와 실행 횟수를 배열로 넣어주고, 문제의 조건대로 value 정렬하기 let map = new Map(); for (let i = 0; i < genres.length; i++) { if (map.get(genres[i])) { map.set(genres[i], [...map...

> 문제 바로가기 1. 접근 방법 (1) 주어지는 clothes 배열을 for...of 문으로 돌면서 map에 넣어준다. for (let clothing of clothes) { if (map.get(clothing[1])) { map.set(clothing[1], [...map.get(clothing[1]), clothing[0]]) } else { map.set(clothing[1], [clothing[0]]); } } (2) 옷을 입는 경우의 수를 계산한다. 아무것도 안 입는 경우는(-///-) 없기 때문에 마지막에 1을 뺀다. for (let [key, value] of map) { result = result * (value.length + 1) } return result - 1; 2. 전체 ..

> 문제 바로가기 1. 접근 방법 (0) 동명이인이 있을 수 있다는 점에서 해시 테이블로 푸는 방법을 생각했다. (1) participant를 map에 저장하면서, key는 참가자 이름, value는 동명이인이 이미 있으면 +1, 없으면 그냥 1로 넣어준다. for (let person of participant){ if(!map.get(person)){ map.set(person, 1); }else{ map.set(person, map.get(person)+1); } } (2) completion을 돌면서 한 명씩 map에 이름에 해당하는 값이 1이면 엘리먼트를 삭제해 주고, 2 이상이면 1을 뺀다. for(let person of completion){ if(map.get(person) >= 2){ ..

1. 이진 트리 노드 구현 이진 트리는 부모가 왼쪽 자식, 오른쪽 자식을 가지고 있다는 점에서 포인터를 이용해서 구현하면 효과적인 데이터 관리가 가능하다. 노드 구조체는 다음과 같다. #include #include typedef struct Node { int data; struct Node *leftChild; struct Node *rightChild; } Node; 하나의 노드는 내부적으로 하나의 data를 가지고 있다. 여기 예시 코드에서는 정수형 데이터 하나만 들어가는 걸로 설정했지만, 실제로는 다양한 데이터가 data에 들어갈 수 있다. 특정 노드를 초기화하는 함수는 다음과 같다. Node* initNode(int data, Node* leftChild, Node* rightChild) { ..