jiisoo
지수로그
jiisoo
전체 방문자
오늘
어제

블로그 메뉴

  • home
  • Github
  • 알고리즘 문제풀이 저장소
  • 분류 전체보기 (80)
    • Java (1)
    • Spring (30)
    • JPA (15)
    • cs (8)
      • 디자인패턴 (1)
      • 네트워크 (5)
      • Database (1)
      • 운영체제 (1)
    • algorithm (18)
      • 알고리즘 & 자료구조 이론 (12)
      • 알고리즘 풀이 (6)
    • 면접 준비 (0)
    • 회고 (5)
      • ATDD (4)
      • 학습테스트로 배우는 spring 2기 (1)
      • 프로젝트 (0)

인기 글

최근 댓글

최근 글

태그

티스토리

hELLO · Designed By 정상우.
jiisoo

지수로그

algorithm/알고리즘 풀이

[알고리즘] 최대 매출

2023. 1. 3. 15:41
Q. 현수의 아빠는 제과점을 운영합니다. 현수아빠는 현수에게 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)과 K(2<=K<=N)가 주어집니다.
두 번째 줄에 N개의 숫자열이 주어집니다. 각 숫자는 500이하의 음이 아닌 정수입니다.

 

- 출력 설명

 

첫 줄에 최대 매출액을 출력합니다.

 

 

- 입력 예제 1

 

10 3
12 15 11 20 25 10 20 19 13 15

 

 

- 출력예제 1

56

 

 

<나의 풀이>

public static int solution(int n, int k, int arr[]) {
    int answer = 0, sum = 0;

    for (int i = 0; i < k; i++) {
        sum += arr[i];
    }
    answer = sum;
    for (int i = k; i < n; i++) {
        sum += (arr[i] - arr[i-k]);
        answer = Math.max(answer, sum);
    }
    return answer;
}

 

 

 

 

 

<오늘 공부한 내용>

- 이 문제를 이중 for 문으로 구현할 경우 O(n^2) 의 시간복잡도가 걸린다.

- 슬라이딩 윈도우(Sliding Window) 알고리즘은 배열이나 리스트의 요소의 일정 범위의 값을 비교할때 사용하면 유용하다.

- 투 포인트 알고리즘과 비교해보면, 투 포인트 알고리즘은 구간의 넓이가 조건에 따라 유동적으로 변하지만,

   슬라이딩 윈도우 알고리즘은 항상 구간의 넓이가 고정되어 있다는 차이점이 있다.

 

 

 

 

'algorithm > 알고리즘 풀이' 카테고리의 다른 글

[알고리즘] 연속 부분수열  (0) 2023.01.05
[알고리즘] 공통원소 구하기  (0) 2023.01.02
[알고리즘] 두 배열 합치기(two pointers algorithm)  (0) 2022.12.30
[알고리즘] 암호  (0) 2022.12.28
[알고리즘] 문장 속 단어  (0) 2022.12.27
    'algorithm/알고리즘 풀이' 카테고리의 다른 글
    • [알고리즘] 연속 부분수열
    • [알고리즘] 공통원소 구하기
    • [알고리즘] 두 배열 합치기(two pointers algorithm)
    • [알고리즘] 암호
    jiisoo
    jiisoo

    티스토리툴바