일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- RT scheduling
- RxJS
- 해시테이블
- pytorch
- 연결리스트
- 연결 리스트
- alexnet
- 릿코드
- 브라우저
- C
- 큐
- 타입스크립트
- 웹팩
- APOLLO
- 이진탐색
- GraphQL
- 자료구조
- 프로그래머스
- vue3
- 코딩테스트
- 배열
- 알고리즘
- Machine Learning
- 프로세스
- 컨테이너
- 자바스크립트
- 포인터
- 프론트엔드
- cors
- 스택
- Today
- Total
목록자료구조, 알고리즘 (48)
프린세스 다이어리

문제 링크 이진탐색으로 푸는 것 자체는 별로 어렵진 않았으나 슬슬 이진탐색 풀이가 필요하다는 것을 떠올리기 힘들 것 같음 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

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..

문제 바로가기 1. 접근 방법 이 문제는 딱히 특별한 접근 방법이 있다기보다는 정규표현식만 잘 쓰면 된다. // 1단계 new_id의 모든 대문자를 대응되는 소문자로 치환합니다. answer = answer.toLowerCase(); // 2단계 new_id에서 알파벳 소문자, 숫자, 빼기(-), 밑줄(_), 마침표(.)를 제외한 모든 문자를 제거합니다. answer = answer.replace(/[^0-9a-z-_.]gi/, ""); // 3단계 new_id에서 마침표(.)가 2번 이상 연속된 부분을 하나의 마침표(.)로 치환합니다. answer = answer.replace(/\.+/gi, "."); // 4단계 new_id에서 마침표(.)가 처음이나 끝에 위치한다면 제거합니다. answer = a..

머지??? 새로 풀려고 들어갔는데 예전에 파이썬으로 풀은 적이 있음.. ㄷㄷ 일단 해답 기록,, def binary_search(times, n, left, right): count = 0 answer = -1 while left = n: if answer == -1: answer = mid else: answer = min(answer, mid) right = mid - 1 elif count < n: left = mid + 1 return answer def solution(n, times): times.sort() left = 0 right = times[-1]*n answer = binary_search(times, n, left, right) print(answer) return answer s..

> 문제 바로가기 코딩테스트 연습 - 베스트앨범 스트리밍 사이트에서 장르 별로 가장 많이 재생된 노래를 두 개씩 모아 베스트 앨범을 출시하려 합니다. 노래는 고유 번호로 구분하며, 노래를 수록하는 기준은 다음과 같습니다. 속한 노래가 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...