최대 매출

minho·2021년 9월 16일
0

나의 코드

<html>
    <head>
        <meta charset="UTF-8">
        <title>출력결과</title>
    </head>
    <body>
        <script>
            function solution(k, arr){
                let x = k-1,
                    aws = 0;
                while (x < arr.length) {
                    let sum = 0;
                    for(let i = x - (k-1); i <= x; i++) sum += arr[i];
                    if(aws < sum) aws = sum;
                    x++;                                                                    
                }
                return aws;
            }                                        
            let a=[12, 15, 11, 20, 25, 10, 20, 19, 13, 15];
            console.log(solution(3, a));
        </script>
    </body>
</html>

x를 뒤로 한칸씩 이동시키며 sum을 구해주는 방식이다.
sum을 구하기 위해 매번 인자들을 더해줘야하는 비효율성이 있다.

다른사람의 코드

<html>
    <head>
        <meta charset="UTF-8">
        <title>출력결과</title>
    </head>
    <body>
        <script>
            function solution(k, arr){
                let answer, sum=0;
                for(let i=0; i<k; i++) sum+=arr[i];
                answer=sum;
                for(let i=k; i<arr.length; i++){
                    sum+=(arr[i]-arr[i-k]);
                    answer=Math.max(answer, sum);
                }                    
                return answer;
            }            
            let a=[12, 15, 11, 20, 25, 10, 20, 19, 13, 15];
            console.log(solution(3, a));
        </script>
    </body>
</html>
  1. 처음 k만큼의 합을 구해준다.
  2. i를 뒤쪽으로 한칸씩 옮기며 arr[i]는 더해주고, arr[i-k]는 빼준다.
    2-1 여기서 arr[i-k]는 k범위 숫자중 가장 작은 수이다.
    위에서 i =3일때 arr[i-k] -> arr[0] 이다. 즉, 맨 앞의 숫자를 빼주는 것이다.
  3. 기존의 answer와 sum중에 큰것을 answer로 지정한다.
profile
Live the way you think

0개의 댓글