알고리즘
-
Section4 Daily Coding 06_heapSort공부/데일리코딩 2022. 7. 28. 09:12
문제 정수를 요소로 갖는 배열을 입력받아 오름차순으로 정렬하여 리턴해야 합니다. 입력 인자 1 : arr number 타입을 요소로 갖는 배열 arr[i]는 -100,000 이상 100,000 이하의 정수 arr.length는 100,000 이하 출력 number 타입을 요소로 갖는 배열을 리턴해야 합니다. 주의사항 힙 정렬을 구현해야 합니다. arr.sort 사용은 금지됩니다. 입력으로 주어진 배열은 중첩되지 않은 1차원 배열입니다. 최소 힙(min heap)을 구현해야 합니다. 최소 힙 구현을 위해 선언된 함수들(getParentIdx, insert, removeRoot)을 전부 완성해야 합니다. swap, getParentIdx, insert, removeRoot를 전부 사용해야 합니다. swap,..
-
Section4 Daily Coding 04_gossipProtocol공부/데일리코딩 2022. 7. 26. 09:05
문제 세로와 가로의 길이가 각각 M, N인 마을지도가 배열로 주어졌을 때, '1'은 주민이 있는 집을 의미하고 '0'은 주민이 없는 땅을 의미합니다. 이 마을은 소문이 시작되면 하루에 상하좌우 한 칸 바로 옆에 있는 집으로 퍼집니다. 특정 주민의 집 (R, C)으로부터 어떤 소문이 시작될 경우, 마을 전체로 소문이 퍼지는데 걸리는 시간(일)을 리턴해야 합니다. 입력 인자 1 : village string 타입을 요소로 갖는 배열 village.length는 M village[i]는 string 타입 village[i].length는 N village[i][j]는 세로로 i, 가로로 j인 지점의 정보를 의미 village[i][j]는 '0' 또는 '1' 인자 2: row number 타입의 0 이상의 정수..
-
Section4 Daily Coding 03_LSCS공부/데일리코딩 2022. 7. 25. 08:59
문제 정수를 요소로 갖는 배열을 입력받아 다음의 조건을 만족하는 LSCS*를 리턴해야 합니다. LSCS: 주어진 배열의 연속된 부분 배열*의 합을 구한다고 할 때, 이 중 가장 큰 값(Largest Sum of Contiguous Subarray) 연속된 부분 배열들: 배열 [1,2,3]의 연속 부분 배열은 [1], [1, 2], [1, 2, 3], [2], [2, 3], [3] 입니다. 입력 인자 1 : arr number 타입을 요소로 갖는 배열 arr.length는 60,000 이하 arr[i]는 -100,000 이상 100,000 이하의 정수 출력 number 타입을 리턴해야 합니다. 주의사항 배열의 모든 요소가 음수인 경우도 있습니다. 입출력 예시 let output = LSCS([1, 2, 3..
-
Section4 Daily Coding 02_robotPath공부/데일리코딩 2022. 7. 22. 09:19
문제 세로와 가로의 길이가 각각 M, N인 방의 지도가 2차원 배열로 주어졌을 때, 1은 장애물을 의미하고 0 이동이 가능한 통로를 의미합니다. 로봇은 지도 위를 일분에 한 칸씩 상하좌우로 이동할 수 있습니다. 로봇의 위치와 목표 지점이 함께 주어질 경우, 로봇이 목표 지점까지 도달하는 데 걸리는 최소 시간을 리턴해야 합니다. 입력 인자 1 : room 배열을 요소로 갖는 배열 room.length는 M room[i]는 number 타입을 요소로 갖는 배열 room[i].length는 N room[i][j]는 세로로 i, 가로로 j인 지점의 정보를 의미 room[i][j]는 0 또는 1 인자 2 : src number 타입을 요소로 갖는 배열 src.length는 2 src[i]는 0 이상의 정수 src..
-
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 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..