티스토리 뷰
https://app.codility.com/demo/results/trainingPJ93XE-8ZM/
조건은 충족했지만, 배열의 크기가 커질 수록 퍼포먼스는 현저히 떨어지는 로직 ㅇ_ㅇ
어렵.. ㅇ-ㅇ
function solution($A) { $result = 0; if (sizeof($A) < 2 || sizeof($A) > 100000) return $result; $tmp = 0; for ($p = 1 ; $p < sizeof($A) ; $p++) { $sum_a = $sum_b = 0; if ($A[$p] < -1000 || $A[$p] > 1000) return $result; for ($i = 0 ; $i < $p ; $i++) { $sum_a += $A[$i]; } for ($j = $p ; $j < sizeof($A) ; $j++) { $sum_b += $A[$j]; } if ($p == 1) $tmp = abs($sum_a - $sum_b); else $tmp = $tmp > abs($sum_a - $sum_b) ? abs($sum_a - $sum_b) : $tmp; } if ($tmp != null) $result = $tmp; return $result; }
https://app.codility.com/demo/results/trainingVQDJWB-BHU/
헤헷.. 생각해보면 굳이 저렇게 반복반복할 필요가 없는 거였다.
알고리즘 테스트 계속 해보면 생각하는 방향이 많이 달라질 거 같아.
function solution($A) { $result = 0; if (sizeof($A) < 2 || sizeof($A) > 100000) return $result; $arr_sum = array(); $sum = 0; for ($p = 1 ; $p < sizeof($A) ; $p++) { if ($A[0] < -1000 || $A[0] > 1000 || $A[$p] < -1000 || $A[$p] > 1000) return $result; $sum += $A[$p-1]; $arr_sum[] = $sum; if ($p == sizeof($A)-1) $sum += $A[$p]; } $tmp = 0; for ($i = 0 ; $i < sizeof($arr_sum) ; $i++) { if ($i == 0) $tmp = abs($arr_sum[$i]- ($sum-$arr_sum[$i])); else $tmp = $tmp > abs($arr_sum[$i]- ($sum-$arr_sum[$i])) ? abs($arr_sum[$i]- ($sum-$arr_sum[$i])) : $tmp; } $result = $tmp; return $result; }
'알고리즘' 카테고리의 다른 글
알고리즘/ 댐의 최대수위 구하기 _PHP (0) | 2018.05.22 |
---|---|
알고리즘/ 가장 긴 패스워드 찾기 _PHP (0) | 2018.05.22 |
알고리즘/ 빠진 숫자 찾기 _PHP (0) | 2018.05.19 |
알고리즘/ 개구리 점프 _PHP (0) | 2018.05.19 |
알고리즘/ 배열에서 짝없는 원소 찾기 _PHP (0) | 2018.05.16 |