-
[Codility] TapeEquilibrium 100점알고리즘 2019. 3. 31. 23:21
문제 출처 : https://app.codility.com/programmers/lessons/3-time_complexity/tape_equilibrium/
문제요약 :
주어진 배열에서 각구간에서 차를 구한뒤 차가 가장 작은 정수를 반환하는 것.
ex) int[] A= {3, 1, 2, 4, 3};
1번째 : 3 -(1+2+4+3) = 3 - 10 = 7
2번째 : (3+1) - (2+4+3) = 4 - 9 = 5
3번째 : (3+1+2) - (4+3) = 6 - 7 = 1
4번째 : (3+1+2+4) - 3 = 10 - 3 = 7
이중에 가장 작은 값을 반환. -> 1
[100점]
https://app.codility.com/demo/results/training33VKAK-5FM/
이 단원의 핵심은 시간 복잡도가 O(N)을 나오게 하는 것이 핵심이다.
처음에 의식의 흐름대로 이중 for문으로 접근하려다, 정신을 잡고(?)
다시 풀기 시작했다. 좌변, 우변을 각각 구하고, Math함의 절대값을 구하는 메소드를 이용해서
list에 담은후 Collections의 최소값을 뽑는 min메소드를 이용하여 출력했다.
12345678910111213141516171819202122232425262728293031import java.util.ArrayList;import java.util.Collections;import java.util.List;public class Main {public static void main(String[] args) {int[] A ={3,1,2,4,3};System.out.println("결과 :"+ solution(A));}public static int solution(int[] A) {List sumList = new ArrayList();int left = 0;int right = 0;int sum = 0;for(int i : A) sum += i;for(int j = 1 ; j < A.length ; j++){left += A[j-1];right = sum - left;sumList.add(Math.abs(left - right));}return (int)Collections.min(sumList);}}cs '알고리즘' 카테고리의 다른 글
[Codility] FrogRiverOne 27→100 (0) 2019.05.06 [Codility] PermCheck 100점 (0) 2019.05.06 [Codility] PermMissingElem 30→80→100 (0) 2019.03.31 [Codility] FrogJmp 100점 (0) 2019.03.23 [Codility] BinaryGap 100점 (0) 2019.03.14