codility - PassingCars 정답 및 해설
뿌리튼튼 CS/Algorithm2017. 6. 9. 00:07
난이도 ★★☆☆☆
문제 요약
각 0의 뒤에 나오는 1의 개수를 각각 구한다음 걔네를 다 더하기 (오버플로우나면 -1 리턴) |
힌트
미리 1의 개수를 구해놓는 방법을 통해 중첩for문 제거 |
이하는 코드입니다. (복잡도 2n의 코드인데, 개선하면 n도 가능할겁니다)
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 32 33 34 35 36 37 38 39 40 41 42 43 44 | public int solution(int[] A) { int firstZeroIndex = -1; for (int i = 0; i < A.length; i++) { if (A[i] == 0) { firstZeroIndex = i; break; } } if (firstZeroIndex == -1) { return 0; } int totalOneCount = 0; for (int i = firstZeroIndex + 1; i < A.length; i++) { if (A[i] == 1) { totalOneCount++; } } if (totalOneCount == 0) { return 0; } int result = totalOneCount; int lastOneCount = 0; for (int i = firstZeroIndex + 1; i < A.length; i++) { if (A[i] == 0) { result += totalOneCount - lastOneCount; if (result > 100000000 || result < 0) { return -1; } } else if (A[i] == 1) { lastOneCount++; } } return result; } | cs |
'뿌리튼튼 CS > Algorithm' 카테고리의 다른 글
codility - MinAvgTwoSlice 정답 및 해설 (0) | 2017.06.09 |
---|---|
codility - GenomicRangeQuery 정답 및 해설 (0) | 2017.06.09 |
codility - CountDiv 정답 및 해설 (0) | 2017.06.08 |
codility - MaxCounters 정답 및 해설 (0) | 2017.06.06 |
codility - MissingInteger 정답 및 해설 (1) | 2017.06.06 |