일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
- 코딩테스트
- 프로세스
- 프로그래머스
- 포인터
- RxJS
- 배열
- 프론트엔드
- 릿코드
- Machine Learning
- 자바스크립트
- 컨테이너
- 웹팩
- 스택
- pytorch
- 큐
- 연결리스트
- 알고리즘
- RT scheduling
- 브라우저
- GraphQL
- vue3
- APOLLO
- 타입스크립트
- cors
- 이진탐색
- 연결 리스트
- 자료구조
- alexnet
- C
- 해시테이블
- Today
- Total
목록릿코드 (14)
프린세스 다이어리
문제 링크 두시간 가까이 걸림.. 1. 접근 방법 (1) 중복을 허용한 오름차순 배열이 주어지고 + O(logN) 시간복잡도로 풀으라고 했으며 + 피벗을 기준으로 왼쪽과 오른쪽의 값을 비교해야 하는 문제이므로 이진탐색으로 푼다. (2) getIndex 라는 함수를 만들어서, 배열, 타깃, isLeftArray를 파라미터로 받아 주어진 타깃 범위의 첫 인덱스 또는 범위의 마지막 인덱스를 리턴하도록 한다. const getIndex = (nums, target, isLeftIndex) => { if (nums.length === 0) return -1; let left = 0; let right = nums.length - 1; let mid = 0; if (isLeftIndex) { // ... } els..
문제 링크 이전 회전배열 탐색 문제 풀고 오니 핵쉬움 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이거나 ..
문제 링크 이진탐색으로 푸는 것 자체는 별로 어렵진 않았으나 슬슬 이진탐색 풀이가 필요하다는 것을 떠올리기 힘들 것 같음 1. 접근 방법 (1) 정렬이 돼 있지 않은 nums가 주어짐에도 문제가 이진 탐색 분류 내에 있는 이유는 역시 기준 mid의 양옆 원소를 비교해서 왼쪽이 클 때와 오른쪽이 클 때를 구분하는 로직이 필요하기 때문임 (2) mid의 양옆 원소가 mid보다 작으면 mid 리턴. if (nums[mid - 1] nums[mid + 1]) return mid; (3) mid의 원소가 mid+1의 원소보다 작으면 left를 mid의 오른쪽으로 넘겨줌. (4) mid의 원소가 mid+1의 원소보다 보다 크면 right를 mid 값으로 옮겨줌. if..
문제 링크 왜 "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) mid를 제곱근으로 두고, low는 1, high는 x의 절반 값으로 둔다. 제곱근은 x의 절반보다 클 수 없다. let low = 1; let high = x / 2; let mid = 0; (2) 기본 이진탐색을 진행한다. 단, low와 high를 옮기는 판단 기준은 mid * mid가 x보다 큰지 작은지로 설정한다. while (low x) return mid - 1; (4) 1의 경우 제곱근을 1로 리턴하도록 예외처리를 추가한다. if (x