Little Jay

[C++] 백준 1236 - 성지키기 본문

알고리즘/BOJ

[C++] 백준 1236 - 성지키기

Jay, Lee 2022. 2. 19. 15:31

이 문제를 처음 봤을때는 Brute Force로 하나하나 열 다 체크해가면서 Back Tracking으로 다시 돌아가고 해야하나

생각했지만 2차원 리스트를 생성하고 0으로 초기화해 성을 나타내고, 
행들 중에서 경비원이 없는 행의 개수를 센다.
열들 중에서 경비원이 없는 열의 개수를 센다.
두 값 중에 큰 값이 정답이 된다.

#include <iostream>
using namespace std;

char castle[51][51];
bool row[51];
bool col[51];
int n, m;

int main() {

	ios::sync_with_stdio(false);
	cin.tie(0); cout.tie(0);

	cin >> n >> m;
	for (int i = 0; i < n; i++) {
		cin >> castle[i];
	}

	for (int i = 0; i < n; i++) {
		for (int j = 0; j < m; j++) {
			if (castle[i][j] == 'X') {
				row[i] = true;
				col[j] = true;
			}
		}
	}

	int r_count = 0, c_count = 0;
	for (int i = 0; i < n; i++) {
		if (!row[i]) r_count++;
	}
	for (int j = 0; j < m; j++) {
		if (!col[j]) c_count++;
	}

	cout << max(r_count, c_count) << endl;

	return 0;
}

 

Comments