cequala   3년 전

N명의 사람이 M번째 타종을 들었는지의 여부는 N행 M열의 배열로 나타낼 수 있습니다. 이 때 특정 열에 0이 있다면, 그 열 내에서 0에 해당하는 사람이 1에 해당하는 사람보다 종으로부터 더 멀리 있음을 의미할 것입니다. 0은 못 들은 거고 1은 들은 거니까요. 

이제 특정 열 내에서 0에 해당하는 어떤 행(사람)을 a라 하고, 1에 해당하는 어떤 행을 b라 두겠습니다. a는 b보다 종으로부터 멀리 있다는 것이고, 편의를 위해 (a = 0) & (b = 1)이라고 칭합니다. 그렇다면 다른 열에서 (a = 1) & (b = 0)이 나오는 건 불가능할 것입니다. b가 a보다 멀리 있다는 것과, a가 b보다 멀리 있다는 것은 양립불가능하기 때문입니다.

이로부터 제가 생각한 전략은, N x M의 배열에서 0이 가장 많이 나오는 열, 그리고 그 다음으로 0이 가장 많이 나오는 열을 찾아 그 성분을 비교하는 것입니다. 어떤 크기의 소리가 닿지 않는 사람이 더 큰 소리를 들을 수는 있을 것이나, 어떤 크기의 소리가 닿는 사람이 더 작은 소리를 못 듣는 상황은 없기 때문입니다.

지금까지 말씀드린 전략대로 코드를 구현했고, 문제에서 제시된 예시 테스트케이스와 제가 만들어서 넣어본 5개 이상의 케이스에서 제대로 출력이 되었습니다. 하지만 어찌됐건 오답처리가 되고 있고, 어느 부분이 문제인지 생각하기 어려워 질문드립니다.

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