티스토리 뷰

링크 : https://codility.com/programmers/lessons/3-time_complexity/tape_equilibrium/

 

문제>

*n개의 배열에서 A[0]~A[p-1]까지의 합(=P)과 A[p]~A[n-1]까지의 합(=N)의 차(P-N)의 절대값을 구해 가장 작은 수를 출력하라.

**P = A[0] +.. + A[p-1]);

**N = A[p] +.. + A[n-1];

**abs = |P - N|;

 

해결방법 0. ( 정확도 100%, 퍼포먼스 33% ) 쓰레기..

*) 2중 for문 사용.

1) 첫번째 for문에서 A의 0~n-1개 까지 누적으로 더하고( = P)

- 내부의 두번째 for문 p 부터 n - 1을 더한다( = N)

- N과 P를 뺀 절대값을 누적해서 더 작은 값이 나올 때 교체해준다.

* 첫번째 for문 돌때 내부의 for문이 남은 수 만큼 계속 돌기 때문에 좋은 방법이 아니다.

 

 

 

해결방법 1. ( 정확도 100%, 퍼포먼스 100% )

1) A의 값을 전부 더한다. = N

2) for문을 A의 수만큼 돌면서 N서 순차로 뺴고 뺀 값을 P에 더한다.

- N과 P를 뺀 절대값을 누적해서 더 작은 값이 나올 때 교체해준다.

* 미리 N의 합을 구해놓고 N에서 뺀 값을 P에 더하기 때문에 매번 N의 합을 구하는 계산이 줄어든다.

 

 

 

 

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/04   »
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
글 보관함