[알고리즘] 최대 매출 - 투포인터 알고리즘

newsilver·2021년 6월 2일
0

Algorithm

목록 보기
6/30

문제

현수의 아빠는 제과점을 운영합니다. 현수 아빠는 현수에게 N일 동안의 매출기록을 주고 연속 된 K일 동안의 최대 매출액이 얼마인지 구하라고 했습니다.

만약 N=10이고 10일 간의 매출기록이 아래와 같습니다. 이때 K=3이면

12 15 11 20 25 10 20 19 13 15

연속된 3일간의 최대 매출액은 11+20+25=56만원입니다. 여러분이 현수를 도와주세요.

✏️ 입력설명
첫 줄에 N(5<=N<=100,000)과 M(2<=K<=N)가 주어집니다.
두 번째 줄에 N개의 숫자열이 주어집니다. 각 숫자는 500이하의 음이 아닌 정수입니다.

✏️ 출력설명
첫 줄에 최대 매출액을 출력합니다.

✏️ 입력예제 1
10 3
12 15 11 20 25 10 20 19 13 15

✏️ 출력예제 1
56


풀이

 function solution(k, arr){
        //let n = 10;
        let sum = 0;	// k일 동안의 매출 합계
        let temp = [];	// 매출 합계를 저장하는 배열
        let result = Number.MIN_SAFE_INTEGER;	// 최대값을 구해 result 변수에 저장
        for (let i = 0; i < n - k + 1; i++) {	// 뒤에서 k+2번째 인덱스는 제외
            for (let j = i; j < i+k; j++) {	// i부터 i+k번째까지
                sum = sum + arr[j]		// sum 변수 구하기
        }
        temp.push(sum);			// 최대값을 구하기 위해 temp 변수에 저장
        console.log("sum : "+sum);
        console.log(temp);
        sum = 0;			// sum 초기화
    }
    result = Math.max(...temp);		// 최대값 구하기
    console.log("================================");
    console.log("결과 : "+result)
    return result;
}
            
let a=[12, 15, 11, 20, 25, 10, 20, 19, 13, 15];
console.log(solution(3, a));


✏️ 문제 출처

https://www.inflearn.com/course/%EC%9E%90%EB%B0%94%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8-%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98-%EB%AC%B8%EC%A0%9C%ED%92%80%EC%9D%B4/dashboard

profile
이게 왜 🐷

0개의 댓글