Computer Science 5

[Algorithm] Job Scheduling - Javascript

[LeetCode 1235번] Maximum Profit in Job Scheduling - LeetCode Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview. leetcode.com 1. 문제 startTime과 endTime이 정해져 있는 작업 데이터로, 최대 profit을 만들 수 있는 작업의 조합을 찾는 문제이다. 2. 해결 Job Scheduling은 DFS를 통해 완전 탐색으로 풀 수는 있겠지만, 문제의 조건에 따라 오버플로우가 발생할 수 있다. 우리는 DP와 이진 탐색을 활용하여 O(N log..

[CS] Javascript로 LRU Cache 구현하기

1. LRU Cache 1) Cache Cache는 연산에 필요한 데이터나 값을 미리 가져다놓는 임시 메모리다. 메인 메모리에 접근하여 데이터를 가져오는 비용이 크기 때문에 자주 사용되는 값이나 앞으로 사용될 예정인 값은 가까운 캐시에 저장하여 저비용으로 접근하기 위해 사용된다. CPU는 어떤 값이 필요할 때, 캐시 -> 메모리 -> 디스크 순으로 방문하여 값을 찾는다. 2) LRU(Least Recently Used) Cache 캐시는 저장 공간이 작기 때문에, 캐시에 새로운 값을 저장할 때 공간이 가득 차 있는 상태라면, 특정 데이터와 교체를 하므로써 저장되어야 한다. 이 때, 어떤 데이터를 교체할 것인지 판단하는 것을 페이지 교체 알고리즘이라고 하며, LRU는 이 페이지 교체 알고리즘 중 하나이다...

[프로그래머스] 조이스틱 & 백준 3663번 (with python3)

Background - 해당 문제는 프로그래머스에서는 그리디 알고리즘으로 분류되어 있지만, 실제 풀이에서는 그리디 + 완전 탐색에 가깝다. 문제 Test Case test Parameters Return 1 "JEROEN" 56 2 "JAN" 23 3 (추가) "ABAAAAABBA" 8 4 (추가) "AABAAAABBB" 11 5 (추가) "AABAAAAAAB" 6 (백준 기준) *핵심 포인트 시작점 : 0번 인덱스 1번 케이스 : [정방향] 커서 이동 2번 케이스 : [역방향] 커서 이동 3번 케이스 : [정방향] 후 [역방향] 커서 이동 4번 케이스 : [정방향] 후 [역방향] 커서 이동 5번 케이스 : [역방향] 후 [정방향] 커서 이동 *정방향 : 왼쪽 -> 오른쪽 Point 1) 요구사항 체크 ..

[프로그래머스] python3 - 행렬 테두리 회전하기

프로그래머스 level 2 - 행렬 테두리 회전하기 - python3 : deepcopy와 slicing copy 속도 차이 - 1. 요구사항 2. 문제 해결법 - 주어진 회전 목록 queries에 따라 각 좌표를 이동시킨 후, 이동한 좌표의 값들 중 최소 값을 배열에 담으면 된다. 1) graph 행렬 생성 2) 회전 목록마다 좌표 이동 (이 때, temp 라는 깊은 복사 그래프를 만들어서 끝부분이 안 겹치도록 함) 3) 이동할 때마다 해당 값을 nums 배열에 저장 4) 이동이 끝난 후, nums의 최소값을 result 배열에 저장 5) 이동된 temp 그래프를 graph로 얕은 복사 6) *회전 목록이 끝날 때까지 2번부터 반복 7) result 배열 출력 3. 키 포인트 - 처음에 deepcopy..