kreel94   3년 전

마지막에 더하는 방법에 대해 궁금한 것이 있어서요

22번줄에 있는 방법은 제가 했는데 틀렸다고 나와서 다른분들꺼를 찾아보니 32줄 방식으로 하셨더라고요

따로 실해을 돌려보고 혹시나 다른 입력을 넣으면 달라질까 넣어봤지만 값이 같았습니다..

어떤점에서 차이가 나는지 혹시 알려주세요... 

jsh031613   3년 전

22번째 줄의 방식은 인덱스 순서대로

0 + 1 + 2 + 3 + 4 / 1 + 2 + 3 + 4 / 2 + 3 + 4 /3 + 4 / 4 의 합입니다.

32번째 줄의 방식은 인덱스 순서대로

0 / 0 + 1 / 0 + 1 + 2 / 0 + 1 + 2 + 3 / 0 + 1 + 2 + 3 + 4 의 합입니다.

Arrays.sort() 로 정렬을 하셨다면 0번 인덱스부터 오름차순으로 들어가 있어서,

작은것부터 누적하여 더하는 것과 큰것부터 누적하여 더하는 것의 차이가 있습니다.

예제인 3 1 4 3 2 를 정렬하면, 1 2 3 3 4 이고,

이를 각 방식으로 합을 구해보시면 될 것 같습니다.

kreel94   3년 전

22번줄 방식이

0 + 0 + 0 + 0 + 0 / 1 + 1 + 1 + 1 / 2 + 2 + 2 / 3 + 3 / 4

즉 1 2 3 3 4 값으로 두면 

1 1 1 1 1

2 2 2 2 

3 3 3

3 3

4

이고

32번줄 방식이 

0 / 0 + 1 / 0 + 1 + 2 / 0 + 1 + 2 + 3 / 0 + 1 + 2 + 3 + 4로 

1

1 2

1 2 3

1 2 3 3

1 2 3 3 4

로 같다고 생각해서.. 지금 다시 디버그 해보았는데 result 값에 들어가는 N배열 속 값을 잘못 i와 j를 잘못넣으신게 아니신지 확인부탁드릴게요..ㅎ

23번줄 result는 N[i]  i의 값으로

33번줄 result는 N[j]  j의 값으로

저도 방금 디버그하다 이중for문 줄만 복붙하다보니 33번줄 N[j] 에 i 값을 넣으니 말씀하신데로 값이 나와 알아차리게 되었어요 ..ㅎㅎ

다시 한번 확인해주시면 감사하겠습니다...

댓글을 작성하려면 로그인해야 합니다.