무지개타고

더하기를 하자 - 열다섯번째 본문

Program

더하기를 하자 - 열다섯번째

OnRainbow 2010. 3. 3. 23:51
또다시 찾아온 더하기 시간이다. ^^

문제는 대충 이렇다.
자료가 나열되어 있다.
그중 이웃한 자료가 앞 자료와 같을 때, 즉 자료가 연속되어 나열되는 경우에서
가장 많이 연속출현한 최다빈도와 그 값 찾기.



이리저리 생각해 봤으나, 역시나 더하기가 필요해 보인다.



b16 셀 (최다빈도)
=MAX(MMULT((MMULT((TRANSPOSE(MATCH(A2:A12,A2:A12,0))=MATCH(A2:A12,A2:A12,0))*(TRANSPOSE(ROW(A2:A12))>ROW(A2:A12)),1*(TRANSPOSE(ROW(A2:A12))>=ROW(A2:A12)))<>0)*(MMULT((TRANSPOSE(MATCH(A2:A12,A2:A12,0))=MATCH(A2:A12,A2:A12,0))*(TRANSPOSE(ROW(A2:A12))>ROW(A2:A12)),1*(TRANSPOSE(ROW(A2:A12))>=ROW(A2:A12)))=((TRANSPOSE(ROW(A2:A12))>ROW(A2:A12))*(TRANSPOSE(ROW(A2:A12))-ROW(A2:A12)))),ROW(A2:A12)^0))

b17 셀 (출현자료)
=INDEX(A2:A12,MATCH(MAX(MMULT((MMULT((TRANSPOSE(MATCH(A2:A12,A2:A12,0))=MATCH(A2:A12,A2:A12,0))*(TRANSPOSE(ROW(A2:A12))>ROW(A2:A12)),1*(TRANSPOSE(ROW(A2:A12))>=ROW(A2:A12)))<>0)*(MMULT((TRANSPOSE(MATCH(A2:A12,A2:A12,0))=MATCH(A2:A12,A2:A12,0))*(TRANSPOSE(ROW(A2:A12))>ROW(A2:A12)),1*(TRANSPOSE(ROW(A2:A12))>=ROW(A2:A12)))=((TRANSPOSE(ROW(A2:A12))>ROW(A2:A12))*(TRANSPOSE(ROW(A2:A12))-ROW(A2:A12)))),ROW(A2:A12)^0)),MMULT((MMULT((TRANSPOSE(MATCH(A2:A12,A2:A12,0))=MATCH(A2:A12,A2:A12,0))*(TRANSPOSE(ROW(A2:A12))>ROW(A2:A12)),1*(TRANSPOSE(ROW(A2:A12))>=ROW(A2:A12)))<>0)*(MMULT((TRANSPOSE(MATCH(A2:A12,A2:A12,0))=MATCH(A2:A12,A2:A12,0))*(TRANSPOSE(ROW(A2:A12))>ROW(A2:A12)),1*(TRANSPOSE(ROW(A2:A12))>=ROW(A2:A12)))=((TRANSPOSE(ROW(A2:A12))>ROW(A2:A12))*(TRANSPOSE(ROW(A2:A12))-ROW(A2:A12)))),ROW(A2:A12)^0),0))

두 수식 모두 배열수식이다.
파이어폭스에선 수식이 제대로 보여지지 않겠지만.

학교 다닐 때, 행렬에 대해 이정도만이라도 관심 갖고 공부했었다면 얼마나 좋았을까...



Comments