N×N 행렬 세 개 A0, A1, A2가 주어진다.
집합 A={A0, A1, A2}라 하자. 이 집합에 포함된 세 행렬의 어떤 순열 X, Y, Z가 XY=Z라는 조건을 만족할 때, 각 행렬은 다음과 같은 특성을 갖는다고 하자.
- X: 평문
- Y: 암호화 행렬
- Z: 암호문
이때 S(Ai∣A)를 집합 A에 속하는 원소 Ai의 특성들의 집합이라고 하자. (0≤i≤2)
예를 들어, A0=(0001), A1=(1000), A2=(0000), 그리고 A={A0, A1, A2}라고 하자.
이때 A0A1=A2, 그리고 A1A0=A2이다.
따라서 S(A0∣A)={평문,암호화 행렬}, S(A1∣A)={평문,암호화 행렬}, S(A2∣A)={암호문}임을 알 수 있다.
이제 f(Ai∣A) (0≤i≤2)를 다음과 같이 정의하자.
f(Ai∣A)=1×[평문∈S(Ai∣A)]+2×[암호화 행렬∈S(Ai∣A)]+4×[암호문∈S(Ai∣A)]
여기서 [condition]={10if conditionotherwise.이다.
즉, 위의 예시에서
f(A0∣A)=(1×1)+(2×1)+(4×0)=3,
f(A1∣A)=(1×1)+(2×1)+(4×0)=3,
f(A2∣A)=(1×0)+(2×0)+(4×1)=4이다.
세 개의 N×N 행렬 A0, A1, A2가 주어진다. A={A0, A1, A2}일 때, f(A0∣A), f(A1∣A),f(A2∣A)를 구하는 프로그램을 작성하시오.