문제 링크 : https://leetcode.com/problems/find-subsequence-of-length-k-with-the-largest-sum/
주어진 배열에서 k 개의 subsequece 중에서 그 합이 가장 큰 조합을 출력하라. 기존 배열의 순서가 바뀌면 안됨.
기존의 배열 순서를 유지한채로 반환하는 조건이 까다로웠던 문제였다.
이 조건만 단순히 정렬을 이용하여 풀 수 있었을텐데..
class Solution:
def maxSubsequence(self, nums: List[int], k: int) -> List[int]:
ans , fornums = [], sorted(nums, reverse=True)[:k]
for i in nums:
if i in fornums:
ans.append(i)
fornums.remove(i)
if len(fornums) == 0:
return ans
위에 언급한 조건은 기존의 nums와 비교하는 방법으로 풀 수 있다.
Runtime: 102 ms, faster than 41.50% of Python3 online submissions for Find Subsequence of Length K With the Largest Sum.
Memory Usage: 14.1 MB, less than 94.06% of Python3 online submissions for Find Subsequence of Length K With the Largest Sum.
22.09.08
다시 복습
fornums에 nums의 숫자들을 내림차순 정렬한 뒤 k개수만큼 넣어두고
Ex. nums = [3,4,3,3] 면
fornums에는 [4, 3]가 있음
그리고 nums를 탐색하며
탐색하는 숫자가 fornums에 있다면 해당 숫자를 결과값(ans)에 넣어주고 중복 방지를 위해 fornums에 있는 숫자들은 없애준다
그리고 ans에 들어있는 값들을 반환한다