알고리즘
-
알고리즘 01_[Greedy] 짐 나르기공부/데일리코딩 2022. 8. 11. 08:54
문제 김코딩과 박해커는 사무실 이사를 위해 짐을 미리 싸 둔 뒤, 짐을 넣을 박스를 사왔다. 박스를 사오고 보니 각 이사짐의 무게는 들쭉날쭉한 반면, 박스는 너무 작아서 한번에 최대 2개의 짐 밖에 넣을 수 없었고 무게 제한도 있었다. 예를 들어, 짐의 무게가 [70kg, 50kg, 80kg, 50kg]이고 박스의 무게 제한이 100kg이라면 2번째 짐과 4번째 짐은 같이 넣을 수 있지만 1번째 짐과 3번째 짐의 무게의 합은 150kg이므로 박스의 무게 제한을 초과하여 같이 넣을 수 없다. 박스를 최대한 적게 사용하여 모든 짐을 옮기려고 합니다. 짐의 무게를 담은 배열 stuff와 박스의 무게 제한 limit가 매개변수로 주어질 때, 모든 짐을 옮기기 위해 필요한 박스 개수의 최소값을 return 하도록..
-
Section4 Daily Coding 15_largestRectangularArea카테고리 없음 2022. 8. 10. 09:04
문제 히스토그램(histogram)은 표(도수 분포표, 빈도표)로 되어 있는 도수 분포(frequency distribution)를 정보 그림으로 나타낸 것입니다. 예를 들어, 대학교의 한 학과에서 신입생들의 현재 거주 지역을 조사한 결과가 다음과 같다고 가정해 봅시다. 서울 2명, 경기 1명, 대전 4명, 부산 5명, 대구 1명, 광주 3명, 제주도 3명... 이 자료를 히스트그램으로 나타내면 각각 높이 2, 1, 4, 5, 1, 3, 3인 직사각형이 왼쪽부터 그려지게 됩니다. 편의상 직사각형의 너비는 1이라고 가정합니다. 이를 그림으로 나타내면 아래와 같습니다. 6 | 5 | x 4 | x x 3 | x x x x 2 | x x x x x 1 | x x x x x x x ----------------..
-
Section4 Daily Coding 14_robotPath2공부/데일리코딩 2022. 8. 9. 09:14
문제 세로와 가로의 길이가 각각 M, N인 방의 지도가 2차원 배열로 주어졌을 때, 1은 장애물을 의미하고 0 이동이 가능한 통로를 의미합니다. 로봇은 한 번에 임의의 k칸 직진과 90도 회전 중 1가지 동작을 할 수 있다. 로봇의 현재 위치와 방향, 목표 지점과 방향이 함께 주어집니다. 이 때, 방향은 위쪽이 1, 오른쪽이 2, 아래쪽이 3, 왼쪽이 4로 주어집니다. 로봇이 목표 지점까지 도달해 목표 방향으로 회전하는 데 필요한 동작의 수를 리턴해야 합니다. 입력 인자 1 : room 배열을 요소로 갖는 배열 room.length는 M room[i]는 number 타입을 요소로 갖는 배열 room[i].length는 N room[i][j]는 세로로 i, 가로로 j인 지점의 정보를 의미 room[i][j..
-
Section4 Daily Coding 12_inequalityNumber공부/데일리코딩 2022. 8. 5. 09:11
문제 아래와 같은 과정을 거쳐 부등호 수(inequalityNumber)를 만들 수 있습니다. 최대 9개의 부등호()가 주어집니다. 부등호의 좌우에는 0부터 9사이의 숫자가 한 번씩만 들어가야 합니다. 부등호를 만족하는 숫자의 조합을 차례대로 이어 붙여 만든 정수를 부등호 수라고 한다. 부등호 기호들을 입력받아 부등호를 만족하는 최대 부등호 수와 최소 부등호 수의 차이를 리턴해야 합니다. 입력 인자 1 : signs string 타입의 공백을 사이에 둔 부등호 기호들 signs.length는 17 이하 (최대 9개의 부등호 기호) 출력 number 타입을 리턴해야 합니다. 주의사항 첫 자리가 0인 경우도 부등호 수에 포함되어야 합니다. 모든 입력에 답은 항상 존재합니다. 입출력 예시 let output ..
-
Section4 Daily Coding 11_LPS공부/데일리코딩 2022. 8. 4. 09:18
문제 문자열을 입력받아 다음의 조건을 만족하는 LPS*를 찾아 그 길이를 리턴해야 합니다. LPS: 주어진 문자열의 가장 긴 접두어이자 접미어(Longest Prefix which is also Suffix) non-overlapping: 접두어와 접미어는 서로 겹치는 부분이 없어야 합니다. 다시 말해, prefix와 suffix는 문자열의 동일한 인덱스에 위치한 문자를 요소로 가지면 안 됩니다. 입력 인자 1 : str string 타입의 임의의 알파벳 소문자 문자열 ( str.length는 60,000 이하 출력 number 타입을 리턴해야 합니다. 주의사항 prefix(접두어)는 문자열의 첫 인덱스부터 시작하는 모든 부분 문자열을 의미합니다. suffix(접미어)는 문자열의 마지막 인덱스부터 시작하..
-
Section4 Daily Coding 09_LCS공부/데일리코딩 2022. 8. 2. 09:11
문제 두 문자열을 입력받아 다음의 조건을 만족하는 LCS*의 길이를 리턴해야 합니다. LCS: 두 문자열에 공통으로 존재하는 연속되지 않는 부분 문자열(Longest Common Subsequence) 문자열 'abc'의 subseqeunce는 'a', 'b', 'c', 'ab', 'ac', 'bc', 'abc' 입니다. 입력 인자 1 : str1 string 타입의 알파벳 소문자와 숫자로 이루어진 문자열 str1.length는 50 이하 인자 2 : str2 string 타입의 알파벳 소문자와 숫자로 이루어진 문자열 str2.length는 50 이하 출력 number 타입을 리턴해야 합니다. 주의사항 LCS의 길이를 리턴해야 합니다. LCS가 존재하지 않는 경우, 0을 리턴해야 합니다. 입출력 예시 l..
-
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..