크기가 n x m인 행렬이 있다고 가정합니다. 셀은 흰색으로 'W' 또는 검은색으로 'B'입니다. 홀수 길이의 테이블 안의 일부 정사각형은 검은색으로 칠해져 있었다. 이 사각형의 중심을 찾아야 합니다.
따라서 입력이 다음과 같으면
W | 여 | 나 | 나 | 나 | 여 |
여 | 여 | 나 | 나 | 나 | 여 |
여 | 여 | 나 | 나 | 나 | 여 |
여 | 여 | 여 | 여 | 여 | 여 |
여 | 여 | 여 | 여 | 여 | 여 |
그러면 출력은 (3, 1)이 됩니다.
단계
이 문제를 해결하기 위해 다음 단계를 따릅니다. −
n := row count of matrix m := column count of matrix cnt := 0 X := 0 Y := 0 for initialize i := 0, when i < n, update (increase i by 1), do: for initialize j := 0, when j < m, update (increase j by 1), do: if matrix[i, j] is same as 'B', then: increase cnt by 1 X := X + i Y := Y + j X := X / cnt Y := Y / cnt return (Y, X)
예시
이해를 돕기 위해 다음 구현을 살펴보겠습니다. −
#include <bits/stdc++.h> using namespace std; void solve(vector<vector<char>> matrix){ int n = matrix.size(); int m = matrix[0].size(); int cnt = 0, X = 0, Y = 0; for (int i = 0; i < n; i++){ for (int j = 0; j < m; j++) if (matrix[i][j] == 'B') cnt++, X += i, Y += j; } X /= cnt; Y /= cnt; printf("%d, %d\n", Y, X); } int main(){ vector<vector<char>> matrix = { { 'W', 'W', 'B', 'B', 'B', 'W' }, { 'W', 'W', 'B', 'B', 'B', 'W' }, { 'W', 'W', 'B', 'B', 'B', 'W' }, { 'W', 'W', 'W', 'W', 'W', 'W' }, { 'W', 'W', 'W', 'W', 'W', 'W' } }; solve(matrix); }
입력
{ { 'W', 'W', 'B', 'B', 'B', 'W' }, { 'W', 'W', 'B', 'B', 'B', 'W' }, { 'W', 'W', 'B', 'B', 'B', 'W' }, { 'W', 'W', 'W', 'W', 'W', 'W' }, { 'W', 'W', 'W', 'W', 'W', 'W' } }
출력
3, 1