무지개타고

더하기를 하자 - 25 본문

Program

더하기를 하자 - 25

OnRainbow 2013. 12. 3. 11:14
하트 날리기!

방식은...
참가자 {a,b,c,d,e}는 대상자 {가,나,다,라,마,바}를 향해
하트를 날릴 수 있다.
참가자는 한 번에 다수의 대상자를 향해 하트를 날릴 수 있다.
이때 가중치는 하트 개수에 반비례한다.
더불어 참가자는 여러 번 하트를 날릴 수 있다.
단 동일 참가자가 최종적으로 날린 하트만 인정된다.
즉 앞서 날린 하트는 무시된다.

그럼 하트를 날려볼까~

참가자 a,c는 다회에 걸쳐 하트를 날렸다.
그 중 a는 최종적으로 포기?
그리고 b,d는 둘 이상의 대상자에게 하트를 날렸고,
이에반해 c는 대상자 모두에게 하트를 날렸다.
때문에 c가 보낸 하트의 가중치는 1/n으로 상대적으로 낮게 반영된다.
그에반해 e는 한 대상자에게만 하트를 날려 가중치는 1이다.



앞서 날린 하트를 구분짓기 위해 조건부서식으로 살짝 눈속임을 하자.
즉 눈속임이지 셀에 입력된 값은 여전히 하트다.



참가자 {a,b,c,d,e}가 날린 하트를 가중치를 반영해
대상자 {가,나,다,라,마,바}별로 합산하면...
(배열수식이므로 입력시 Ctrl, Shift, Enter를 동시에 누릴 것)

c12 셀
=SUM((C$3:C$11="♡")*(MMULT(($B$3:$B$11=TRANSPOSE($B$3:$B$11))*(ROW($B$3:$B$11)<=TRANSPOSE(ROW($B$3:$B$11))),ROW($B$3:$B$11)^0)=1)*IF(MMULT(1*($C$3:$H$11="♡"),TRANSPOSE(COLUMN($C$2:$H$2)^0))=0,1,1/MMULT(1*($C$3:$H$11="♡"),TRANSPOSE(COLUMN($C$2:$H$2)^0))))

아래 그림에서
F 행렬은 참가자별 최종 순번 확인,
K 행렬은 가중치를 가리킨다.



Comments