반응형
문제: app.codility.com/programmers/lessons/3-time_complexity/tape_equilibrium/
처음에 죄다 타임아웃 에러가 나서 50점도 안나와서 깜짝 놀랐는데 깜빡하고 System.out.println()을 안 지워준거였다...
어쩐지 시간 복잡도가 O(N^2)가 나올리가 없는데 ㅋㅋ ㅠㅠㅠ
정답률 92 코드
class Solution {
public int solution(int[] A) {
int sum = 0;
int sumOfAll = 0;
int lengthOfA = A.length;
int min = 1001;
int cal = 0;
for(int a:A) {
sumOfAll += a;
}
for(int i=0;i<lengthOfA-1;i++) {
sum += A[i];
sumOfAll -= A[i];
cal = Math.abs(sum-sumOfAll);
min = min>cal?cal:min;
}
return min;
}
}
요소가 2개인 경우에 틀렸다.
lengthOfA-1 미만인 경우에만 for문을 돌다보니...
2개인 경우를 추가했다!
아니면 for문의 범위를 바꾸는 방법도 있다.
1부터 시작하고 A[i]가 아니라 A[i-1]에 대해서 계산한다던가의 식으로!
class Solution {
public int solution(int[] A) {
int sum = 0;
int sumOfAll = 0;
int lengthOfA = A.length;
int min = 1001;
int cal = 0;
if(lengthOfA==2) {
return Math.abs(A[0]-A[1]);
}
for(int a:A) {
sumOfAll += a;
}
for(int i=0;i<lengthOfA-1;i++) {
sum += A[i];
sumOfAll -= A[i];
cal = Math.abs(sum-sumOfAll);
min = min>cal?cal:min;
}
return min;
}
}
반응형
'Memo > 코테' 카테고리의 다른 글
[Kakao] 신규 아이디 추천 (0) | 2021.05.26 |
---|---|
[Codility] CountDiv (0) | 2021.04.22 |
[Codility] PermMissingElem (0) | 2021.04.20 |
정수 삼각형 (0) | 2021.01.18 |
짝지어 제거하기 (0) | 2021.01.11 |