TIL87. CodeKata : 연속적인 요소를 더했을 때 가장 큰 값 반환하기 문제
🌈 연속적인 요소를 더했을 때 가장 큰 값 반환하기 문제
🤔 나의 Solution
숫자로 이루어진 리스트 nums를 인자로 주면, 그 안에서 어떤 연속적인 요소를 더했을 때 가장 큰 값이 나오나요? 가장 큰 값을 찾아 return해주세요.
✔️ 배열 nums에 [-2,1,-3,4,-1,2,1,-5,4]이 주어진다면, 6을 반환한다. [4, -1, 2, 1] 을 더할 때 나오는 6이 가장 크기 때문이다.
def maxSubArray(nums): for i in range(1, len(nums)): if nums[i-1] > 0: nums[i] += nums[i-1] # print(f"i : {i} / num: {nums}") return max(nums) print(maxSubArray([-2,1,-3,4,-1,2,1,-5,4]))
✔️ nums를 index 1부터 순회하며, i-1번째 수가 0보다 클 때만 i번째 수와 i-1수를 더해 i번째 요소로 바꿔주는 방법으로 해결했다.
✔️ i-1번째가 0보다 작다면, 왼쪽부터 순회하며 더하기 때문에 더하는 것에 의미가 없기 떄문이다.
✔️ 배열이 순회하는 과정을보면 아래와 같다.
i : 2 / num: [-2, 1, -2, 4, -1, 2, 1, -5, 4] # 👈 2번 요소를 i-1, i를 합친 값으로 수정 i : 4 / num: [-2, 1, -2, 4, 3, 2, 1, -5, 4] # 👈 4번 요소를 i-1, i를 합친 값으로 수정 i : 5 / num: [-2, 1, -2, 4, 3, 5, 1, -5, 4] # 👈 5번 요소를 i-1, i를 합친 값으로 수정 i : 6 / num: [-2, 1, -2, 4, 3, 5, 6, -5, 4] # 👈 6번 요소를 i-1, i를 합친 값으로 수정 i : 7 / num: [-2, 1, -2, 4, 3, 5, 6, 1, 4] # 👈 7번 요소를 i-1, i를 합친 값으로 수정 i : 8 / num: [-2, 1, -2, 4, 3, 5, 6, 1, 5] # 👈 8번 요소를 i-1, i를 합친 값으로 수정
✔️ 요소가 더해진 다음에 다음 i번째에서 양수라면 한번 더 더해지기 때문에 2중으로 모두 순회할 필요없이 해결할 수 있다.
Author And Source
이 문제에 관하여(TIL87. CodeKata : 연속적인 요소를 더했을 때 가장 큰 값 반환하기 문제), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@jewon119/TIL87.-CodeKata-연속적인-요소를-더했을-때-가장-큰-값-반환하기-문제저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)