[알고리즘] 연속된 수를 더해서 가장 큰 값 찾기

2022. 11. 2. 17:04·개발/알고리즘
728x90
반응형

문제

배열안에 있는 요소중 연속된 num개 만큼 뽑아 더한다. 더한값중 가장 큰값을 찾는 함수만들기

예시 : 

maxSubarraySum([2, 6, 9, 2, 1, 8, 5, 6, 3], 3);

풀이

(1) 1번 풀이

function maxSubarraySum(arr, num) {
  if (num > arr.length) {
    return null;
  }
  var max = -Infinity;
  for (let i = 0; i < arr.length - num + 1; i++) {
    temp = 0;
    for (let j = 0; j < num; j++) {
      temp += arr[i + j];
    }
    if (temp > max) {
      max = temp;
    }
  }
  return max;
}

시간 복잡도 : O(n^2)

(2) 2번 풀이

function maxSubarraySum(arr, num) {
  let maxSum = 0;
  let tempSum = 0;
  if (arr.length < num) return null;
  for (let i = 0; i < num; i++) {
    maxSum += arr[i];
  }
  tempSum = maxSum;
  for (let i = num; i < arr.length; i++) {
    tempSum = tempSum - arr[i - num] + arr[i];
    maxSum = Math.max(maxSum, tempSum);
  }
  return maxSum;
}

앞에것만 빼고 뒤에것 더해준다.

시간복잡도 : O(n)

 

728x90
반응형

'개발 > 알고리즘' 카테고리의 다른 글

[알고리즘] 재귀함수  (0) 2022.11.14
[알고리즘] 문제 모음  (0) 2022.11.02
[알고리즘] 배열에 중복되지 않는 요소 개수 찾기  (0) 2022.11.02
[알고리즘] 다중 포인터  (0) 2022.11.02
[알고리즘] anagram  (0) 2022.11.02
'개발/알고리즘' 카테고리의 다른 글
  • [알고리즘] 재귀함수
  • [알고리즘] 문제 모음
  • [알고리즘] 배열에 중복되지 않는 요소 개수 찾기
  • [알고리즘] 다중 포인터
TeTedo.
TeTedo.
  • TeTedo.
    TeTedo 개발 일기
    TeTedo.
  • 전체
    오늘
    어제
    • 분류 전체보기 (319)
      • 개발 (274)
        • Article (4)
        • 정리 (21)
        • Spring Boot (17)
        • JPA (2)
        • JAVA (6)
        • Database (4)
        • 자료구조 (11)
        • 알고리즘 (32)
        • React (20)
        • Docker (10)
        • node.js (18)
        • Devops (11)
        • Linux (4)
        • TypeScript (3)
        • Go (10)
        • HyperLedger (4)
        • BlockChain (43)
        • html, css, js (48)
        • CS (3)
        • AWS (3)
      • 모아두고 나중에 쓰기 (3)
      • 팀프로젝트 (18)
        • SNS(키보드워리어) (9)
        • close_sea (9)
      • 개인프로젝트 (1)
        • Around Flavor (1)
        • CHAM (13)
        • ethFruitShop (5)
      • 독서 (0)
        • 스프링부트와 AWS로 혼자 구현하는 웹 서비스 (0)
  • 블로그 메뉴

    • 홈
    • 개발일기
    • CS
    • 실습
    • 코딩테스트
    • 웹
    • Go
    • node.js
    • 팀플
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    블록체인
    js
    컨테이너
    명령어
    node.js
    30일챌린지
    nodejs
    html
    go언어
    node
    go
    하이퍼레저
    프로그래머스
    mysql
    ERC721
    도커
    30일 챌린지
    erc20
    CSS
    React
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.1
TeTedo.
[알고리즘] 연속된 수를 더해서 가장 큰 값 찾기
상단으로

티스토리툴바