효율성 #3. 최대 매출
카테고리 : TIL (Tody I Learned) >> Algorithm
인프런 자바(Java) 알고리즘 문제풀이 : 코딩테스트 대비 수강 중
문제:
N일 동안의 매출 기록이 주어졌을 때 연속된 k일 동안의 최대 매출 구하기
내 코드:
public int solution(int n, int k, int[] arr){
int sum = 0, max = 0;
for(int i = 0; i < k; i++) {
sum += arr[i];
max = sum;
}
for(int i = k; i < n; i++) {
sum -= arr[i-k];
sum += arr[i];
max = Math.max(max, sum);
}
return max;
}
for
문을 돌면서 k일 동안의 매출을 더한다- 다음날로 넘어갈 때 처음날의 매출은 뺴고 다음날의 매출을 더한다
- ex)
sum
에 2, 3, 4일 매출이 담겨있다면 2일 매출을 뺴고 5일 매출을 더한다
- ex)
- 최대값 반환
다른 방법
for(int i = 0; i < k; i++) {
sum += arr[i];
}
max = sum;
max
값은for
문을 빠져나와 넣어주는게 연산 수를 줄일 수 있음- 말고는 없음
개선된 점:
- 내 풀이와 동일
- 잘 풀었다!
끝!