알고리즘 문제/Leetcode283 [Leetcode] 210. Course Schedule II 문제 : https://leetcode.com/problems/course-schedule-ii/ 총 numCourses 개의 수강해야 하는 강좌가 있으며 0 ~ numCourses-1 의 레이블로 지정되어 있다. prerequisites[i] = [ai, bi] 로 이루어진 prerequisites 배열이 있다. 이는 ai 강좌를 수강하고 싶은 경우 bi 과정을 먼저 수강해야 함을 의미한다. 모든 강좌들을 마치기 위해 수강해야 하는 강좌의 순서를 구해라. 만일 모든 강좌들을 수강할 수 없다면 빈 배열을 반환해라. adj[i] = i번째 강좌를 수강해야만 들을 수 있는 강좌의 번호들 degree[i] = i번 강좌를 수강하기 위해 수강해야 하는 강좌들의 개수 prerequisites을 탐색하며 위 배열들.. 2021. 12. 23. [Leetcode] 1103. Distribute Candies to People 문제 : https://leetcode.com/problems/distribute-candies-to-people/ candies 개의 사탕을 n명의 사람들에게 배분하려고 한다. 첫 번째 사람에게는 1개, 두 번째 사람에게는 2 ... n번째 사람에게는 n개의 사탕을 나눠준다. 이 후, 다시 첫 번째 사람에게 n+1, 두 번째 사람에게는 n+2 ... n번째 사람에게는 2n개의 사탕을 나눠준다. 이 절차를 모든 사탕을 나눠줄때까지 반복한다. 만일 나눠줄 사탕이 부족하다면 남은 사탕을 해당 사람에게 주고 해당 절차를 종료한다. 사탕을 모두 나눠줬을 때, 사람들이 가지는 사탕의 개수들의 리스트를 구하라. candies를 1, 2, 3 .. 개씩 모든 사람들에게 차례대로 모든 사탕을 소요할 때까지 나눠준다. .. 2021. 12. 21. [Leetcode] 976. Largest Perimeter Triangle 문제 : https://leetcode.com/problems/largest-perimeter-triangle/ 정수 배열 nums가 주어질 때, 이 길이 중 3개로 면적이 0보다 큰 삼각형을 만들 때, 이들 삼각형들 중 가장 큰 둘레를 구하라. 삼각형을 만들 수 없는 경우 0을 반환하라. 면적이 0보다 큰 삼각형을 만드는 경우는, 길이가 (a c 조건을 만족할 수 없다면 다른 정수들도 해당 조건을 만족할 수 없다. 따라서, nums 배열을 정렬한 뒤, 가장 큰 정수들부터 a, b, c를 선택한 뒤 a + b > c를 만족하는 경우가 나오면 a + b + c가 정답이 된다. 시간복잡도는 O(NlogN). 소스코드 : https://github.com/fpdjsns/Algorithm/blob/master/.. 2021. 12. 21. [Leetcode] 902. Numbers At Most N Given Digit Set 문제 : https://leetcode.com/problems/numbers-at-most-n-given-digit-set/ 내림차순으로 정렬된 숫자 배열 digits와 정수 n이 주어진다. digits 배열의 숫자는 원하는 만큼 재사용 가능하다. digits 수들을 이용하여 숫자를 만들 때, 정수 n보다 작거나 같은 정수들의 갯수를 구하라. 예시를 직접 풀면서 알아보자. digits = ["1", "3", "5"], n = "355" 입력 값이 위와 같을 때, 일의 자리(x), 십의 자리(xx) 수들은 모두 정답에 포함된다. 따라서 이들 개수는 정답에 미리 더해둔다. x 에 digits 들 중 어느 숫자가 와도 상관없으므로 조합을 생각하면 각 자리에 3개의 수가 올 수 있으므로 일의 자리의 경우의 수는.. 2021. 12. 19. [Leetcode] 147. Insertion Sort List 문제 : https://leetcode.com/problems/insertion-sort-list/ 단일 linked list의 헤드가 주어질 때 삽입 정렬을 이용하여 이들을 정렬한뒤 정렬된 linked list의 헤드를 반환하라. 정렬된 링크드 리스트의 헤드를 저장하기 위해 ListNode를 하나 만들고 이 노드의 주소값을 newHead 변수에 저장한다. 원본 head의 노드를 처음부터 하나씩 정렬시켜야 하므로 앞에있는 노드부터 하나씩 탐색하며 newHead를 헤드로 하는 링크드 리스트의 적절한 위치에 연결해준다. 탐색하는 노드의 포인트를 originNode라 하자. 정렬된 링크드 리스트의 적절한 위치를 찾을 때 노드를 적절한 위치에 넣기 위해서는 해당 노드의 앞에 위치하는 노드를 알아야 한다. 예를 .. 2021. 12. 15. [Leetcode] 1446. Consecutive Characters 문제 : https://leetcode.com/problems/consecutive-characters/ 이전 문자와 동일한지 체크하며 동일하면 cnt 변수를 +1, 아니면 1로 갱신하며 탐색하며 갱신된 cnt들 중 최대값이 정답이 된다. 시간복잡도는 O(N) 소스코드 : https://github.com/fpdjsns/Algorithm/blob/master/leetcode/easy/1446.%20Consecutive%20Characters.cpp 2021. 12. 13. 이전 1 ··· 8 9 10 11 12 13 14 ··· 48 다음