일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- Spring
- springboot
- 코딩테스트
- Dependency
- @Scheduled
- java
- 프로그래머스
- 스프링 스케줄러
- pom.xml
- Arrays
- Collections
- 스프링
- HashMap
- 의존성관리
- C++
- 스프링부트
- mybatis
- maven
- Spring Mail
- codility
- thymeleaf
- 스프링 메일
- GOF
- Spring Boot
- pair
- 스프링 부트
- list
- spring scheduler
- 프로젝트 구조
- vuejs #vue #js #프론트엔드 #nodejs #클라이언트사이드 #템플릿엔진
- Today
- Total
Rooted In Develop
[Codility] Prefix Sums - MinAvgTwoSlice / Java 본문
1. 문제
A non-empty array A consisting of N integers is given. A pair of integers (P, Q), such that 0 ≤ P < Q < N, is called a slice of array A (notice that the slice contains at least two elements). The average of a slice (P, Q) is the sum of A[P] + A[P + 1] + ... + A[Q] divided by the length of the slice. To be precise, the average equals (A[P] + A[P + 1] + ... + A[Q]) / (Q − P + 1).
For example, array A such that:
A[0] = 4 A[1] = 2 A[2] = 2 A[3] = 5 A[4] = 1 A[5] = 5 A[6] = 8
contains the following example slices:
- slice (1, 2), whose average is (2 + 2) / 2 = 2;
- slice (3, 4), whose average is (5 + 1) / 2 = 3;
- slice (1, 4), whose average is (2 + 2 + 5 + 1) / 4 = 2.5.
The goal is to find the starting position of a slice whose average is minimal.
Write a function:
class Solution { public int solution(int[] A); }
that, given a non-empty array A consisting of N integers, returns the starting position of the slice with the minimal average. If there is more than one slice with a minimal average, you should return the smallest starting position of such a slice.
For example, given array A such that:
A[0] = 4 A[1] = 2 A[2] = 2 A[3] = 5 A[4] = 1 A[5] = 5 A[6] = 8
the function should return 1, as explained above.
Write an efficient algorithm for the following assumptions:
- N is an integer within the range [2..100,000];
- each element of array A is an integer within the range [−10,000..10,000].
Copyright 2009–2020 by Codility Limited. All Rights Reserved. Unauthorized copying, publication or disclosure prohibited.
2. 코드
class Solution {
public int solution(int[] A) {
int minIndex = 0;
float min = Float.MAX_VALUE;
for(int i=0; i<A.length-1; i++) {
int sum = A[i];
int count = 1;
for(int j=i+1; j<A.length; j++) {
sum += A[j];
count++;
float avg = (float)sum / (float)count;
if(avg < min) {
min = avg;
minIndex = i;
}
if(count==3)
break;
}
}
return minIndex;
}
}
'Algorithm Test > Java' 카테고리의 다른 글
[Codility] Sorting - MaxProductOfThree / Java (0) | 2020.06.14 |
---|---|
[Codility] Sorting - Distinct / Java (0) | 2020.06.14 |
[Codility] Prefix Sums - GenomicRangeQuery / Java (0) | 2020.06.14 |
[Codility] Prefix Sums - CountDiv / Java (0) | 2020.06.14 |
[Codility] Counting Elements - PermCheck / Java (0) | 2020.06.14 |