프로그래머스
-
알고리즘 01_[Greedy] 짐 나르기공부/데일리코딩 2022. 8. 11. 08:54
문제 김코딩과 박해커는 사무실 이사를 위해 짐을 미리 싸 둔 뒤, 짐을 넣을 박스를 사왔다. 박스를 사오고 보니 각 이사짐의 무게는 들쭉날쭉한 반면, 박스는 너무 작아서 한번에 최대 2개의 짐 밖에 넣을 수 없었고 무게 제한도 있었다. 예를 들어, 짐의 무게가 [70kg, 50kg, 80kg, 50kg]이고 박스의 무게 제한이 100kg이라면 2번째 짐과 4번째 짐은 같이 넣을 수 있지만 1번째 짐과 3번째 짐의 무게의 합은 150kg이므로 박스의 무게 제한을 초과하여 같이 넣을 수 없다. 박스를 최대한 적게 사용하여 모든 짐을 옮기려고 합니다. 짐의 무게를 담은 배열 stuff와 박스의 무게 제한 limit가 매개변수로 주어질 때, 모든 짐을 옮기기 위해 필요한 박스 개수의 최소값을 return 하도록..
-
Section4 Daily Coding 08_LIS공부/데일리코딩 2022. 8. 1. 09:07
문제 정수를 요소로 갖는 문자열을 입력받아 다음의 조건을 만족하는 LIS*의 길이를 리턴해야 합니다. LIS: 배열의 연속되지 않는 부분 배열 중 모든 요소가 엄격하게 오름차순으로 정렬된 가장 긴 부분 배열(Longest Increasing Subsequence) 배열 [1, 2, 3]의 subseqeunce는 [1], [2], [3], [1, 2], [1, 3], [2, 3], [1, 2, 3] 입니다. 엄격한 오름차순: 배열이 동일한 값을 가진 요소없이 오름차순으로 정렬되어 있는 경우를 말합니다. 입력 인자 1 : arr number 타입을 요소로 갖는 배열 arr.length는 60,000 이하 arr[i]는 100,000 이하의 양의 정수 출력 number 타입을 리턴해야 합니다. 주의사항 LIS..
-
Section4 Daily Coding 07_rangeMinimum공부/데일리코딩 2022. 7. 29. 09:19
문제 정수를 요소로 갖는 배열과 특정 구간을 입력받아, 해당 구간 내에서 최소값을 리턴해야 합니다. 입력 인자 1 : arr number 타입을 요소로 갖는 배열 arr.length는 500,000 이하 arr[i]는 -100,000 이상 100,000 이하의 정수 인자 2 : ranges number 타입을 요소로 갖는 배열 ranges.length는 10,000 이하 ranges[i]는 특정 구간을 의미 ranges[i][0]은 i번째 구간의 시작 인덱스 ranges[i][1]은 i번째 구간의 마지막 인덱스 출력 배열(arr)를 리턴해야 합니다. (입출력 예시 참고) arr[i]는 i번째 구간(ranges[i])의 최소값 입출력 예시 const arr = [1, 3, 2, 7, 9, 11]; cons..
-
Section3 Daily Coding 19_rotateMatrix카테고리 없음 2022. 7. 19. 09:19
문제 2차원 N x N 배열을 시계 방향으로 90도 회전시킨 배열을 리턴해야 합니다. 입력 인자 1 : matrix 가로 길이(matrix[i].length)와 세로 길이(matrix.length)가 모두 N인 2차원 배열 matrix[i][j]는 number 타입 출력 2차원 배열을 리턴해야 합니다. 입출력 예시 const matrix = [ [1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12], [13, 14, 15, 16], ]; console.log(matrix[0][0]); // --> 1 console.log(matrix[3][2]); // --> 15 const rotatedMatrix = rotateMatrix(matrix); console.log(rotatedMa..
-
Section3 Daily Coding 18_mergeSort공부/데일리코딩 2022. 7. 18. 09:19
문제 정수를 요소로 갖는 배열을 입력받아 오름차순으로 정렬하여 리턴해야 합니다. 입력 인자 1 : arr number 타입을 요소로 갖는 배열 arr[i]는 정수 arr.length 100,000 이하 출력 number 타입을 요소로 갖는 배열을 리턴해야 합니다. 배열의 요소는 오름차순으로 정렬되어야 합니다. arr[i] [1, 3, 21] 힌트 병합 정렬은 표준 라이브러리에서 정렬을 구현할 때 퀵 정렬이나 힙 정렬의 대안으로 사용하는 최적화된 정렬 알고리즘입니다. 병합 정렬은 다음과 같은 알고리즘을 사용합니다. N의 길이를 가진 배열 리스트를 1의 길이를 가진 "부분 리스트"가 N개 모인 것으로 취급합니다. 인접한 부분 리스트들을 정렬하여 2의 길이를 가진 부분 리스트로 병합합니다. 2의 길이를 가진 ..
-
Section3 Daily Coding 16_insertionSort공부/데일리코딩 2022. 7. 14. 10:04
insertionSort 문제 정수를 요소로 갖는 배열을 입력받아 오름차순으로 정렬하여 리턴해야 합니다. 입력 인자 1 : arr number 타입을 요소로 갖는 배열 arr[i]는 정수 arr.length는 1,000 이하 출력 number 타입을 요소로 갖는 배열을 리턴해야 합니다. 배열의 요소는 오름차순으로 정렬되어야 합니다. arr[i] [1, 3, 21] Advanced insertionSort 함수의 두 번째 인자로 callback 함수를 받아서, 그 함수의 리턴값을 기준으로 요소들을 정렬해 보세요. Reference Code // naive solution // const insertionSort = function (arr) { // let sorted = [arr[0]]; // for (..
-
Section3 Daily Coding 14_binarySearch공부/데일리코딩 2022. 7. 12. 09:34
문제 오름차순 정렬된 정수의 배열(arr)과 정수(target)를 입력받아 target의 인덱스를 리턴해야 합니다. 입력 인자 1 : arr number 타입을 요소로 갖는 배열 arr[i]는 정수 인자 2 : target number 타입의 정수 출력 number 타입을 리턴해야 합니다. 주의사항 이진탐색 알고리즘(O(logN))을 사용해야 합니다. 단순한 배열 순회(O(N))로는 통과할 수 없는 테스트 케이스가 존재합니다. target이 없는 경우, -1을 리턴해야 합니다. 입출력 예시 let output = binarySearch([0, 1, 2, 3, 4, 5, 6], 2); console.log(output); // --> 2 output = binarySearch([4, 5, 6, 9], 10..
-
Section3 Daily Coding 11_getItemFromTwoSortedArrays공부/데일리코딩 2022. 7. 9. 09:26
문제 길이가 m, n이고 오름차순으로 정렬되어 있는 자연수 배열들을 입력받아 전체 요소 중 k번째 요소를 리턴해야 합니다. 입력 인자 1 : arr1 자연수를 요소로 갖는 배열 arr1.length는 m 인자 2 : arr2 자연수를 요소로 갖는 배열 arr2.length는 n 인자 3 : k number 타입의 0 이상의 정수 출력 number 타입을 리턴해야 합니다. 주의사항 두 배열의 길이의 합은 1,000,000 이하입니다. 어떤 배열 arr의 k번째 요소는 arr[k-1]을 의미합니다. 입출력 예시 let arr1 = [1, 4, 8, 10]; let arr2 = [2, 3, 5, 9]; let result = getItemFromTwoSortedArrays(arr1, arr2, 6); cons..