시간 제한 | 메모리 제한 | 제출 | 정답 | 맞힌 사람 | 정답 비율 |
---|---|---|---|---|---|
2 초 | 512 MB | 937 | 730 | 600 | 80.863% |
문제를 출제하던 욱제는 갑자기 괴랄한 문제를 내고 싶어졌다. 불행하게도, 이번 대회에는 프로그래밍 뉴비들이 많기 때문에 그럴 수는 없었다. 하지만 욱제는 신입생들을 괴롭히고픈 욕망을 포기할 수 없었다.
‘하하! 과연 신입생들이 이 문제를 풀 수 있을까?’
문제는 간단하다. N×N 크기의 두 부울행렬(0과 1로만 이루어진 행렬) A=[aij]와 B=[bij]가 주어졌을 때, 두 행렬에 대해 부울곱 연산을 수행한 행렬 C=[cij]에 나타나는 1의 개수를 세는 것이다. 부울곱 연산은 아래와 같이 수행된다.
cij = (ai1∧b1j)∨(ai2∧b2j)∨...∨(ain∧bnj)
xij는 X행렬의 i행j열 원소를 뜻하며 ∧는 논리곱(AND), ∨는 논리합(OR) 연산을 나타낸다. 자, 어서 코딩하자!
첫째 줄에 행렬의 크기 N(1 ≤ N ≤ 300)이 주어진다. 이후 N개의 줄에 N×N의 부울행렬 A=[aij]와, 다음 N개의 줄에 N×N의 부울행렬 B=[bij]가 주어진다.
A☉B를 연산한 행렬 C에서 나타나는 1의 개수를 세어서 출력한다.
3 1 1 0 0 1 0 0 0 1 1 0 0 1 1 1 0 0 1
7
2 0 1 1 1 1 1 0 0
2
예제1의 연산 결과는 다음과 같다.
1 1 1 1 1 1 0 0 1 따라서 1의 개수는 7이다.
예제2의 연산 결과는 다음과 같다.
0 0 1 1
따라서 1의 개수는 2이다.
High School > 선린인터넷고등학교 > 2017 선린 봄맞이 교내대회 F번