pastarithm   5년 전

잘못된 부분을 찾지 못하여 질문드립니다!

문제에서 선수는 1,2,3, ... 이지만 0,1,2,... 로 표현하겠습니다.


<변수 설명>

1) N = 전체 인원 수

2) arr[20][20] = 선수들의 능력치 배열

3) teamOne[10] = 선수 0을 포함한 팀의 팀원 배열

4) Another[10] = 선수 0을 포함하지 않은 팀의 팀원 배열

5) idx = 선수 0을 포함한 팀의 조합(Combination)을 위해 사용되는 index 변수

    ex. {0, 1, 2, 3, 4, 5} 에서 한 팀의 조합을 찾을 때 {0, 1, 2}를 시작으로,

          idx = 2에서 {0, 1, 3}, {0, 1, 4}, {0, 1, 5}를 구하고,

          idx = 1에서 {0, 2, 3}을 만든 후,

          다시 idx = 2로 돌아와서 {0, 2, 4}, {0, 2, 5}를 구하는 방식!

6) numTeam = 한 팀의 팀원 수 (N/2)

7) result = 최종 출력값 (초기값 -1)

<코드 설명>

  1. [Line 25] teamOne을 0부터 numTeam-1까지 채웁니다
  2. [Line 30] idx를 teamOne의 마지막 인덱스(numTeam-1)로 초기화, 알고리즘의 첫 시작(4번)이 ++이므로 teamOne[idx]를 1 빼줍니다
  3. [Line 34] 알고리즘 시작! idx가 선수 0을 가리키면 종료합니다 (if 5번 / else if 6번 / else if 10번)
  4. [Line 36] teamOne에서 현재 idx의 팀원 번호를 1 증가시킵니다
  5. [Line 39] 현재 idx에서 가질 수 있는 최대값에 도달했으면, idx를 1 빼줍니다 (ex. N=6일 때 각 idx에 대해 최대값은 {3, 4, 5} )
  6. [Line 43] 5번이 아니면서 현재 idx가 teamOne의 가장 끝 인덱스면, 두 팀의 S값을 구합니다
  7. [Line 45] Another를 구합니다 : 0부터 N-1까지 teamOne에 없으면 Another에 삽입합니다
  8. [Line 52] teamOne과 Another의 S의 합을 각각 S1, S2로 구합니다
  9. [Line 61] S1 - S2의 절대값 tmp를 구하고, result가 -1이면 result=temp, 아니면 tmp가 더 작을 때 result=tmp를 합니다
  10. [Line 66] 5번도 아니고 6번도 아니고 idx != 0 이면 teamOne[idx+1]을 현재값으로 복사하고 idx를 1 증가시킵니다

이해를 도울 수 있게 작성되었는지 모르겠습니다 ㅠㅠ

감사합니다!

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