[BOJ] 백준 #1236. 성 지키기 (C++)

1 분 소요

🎨 문제

boj-1236

문제 링크: https://www.acmicpc.net/problem/1236

  • 알고리즘 분류: 구현
  • 난이도: Bronze Ⅰ



💬 풀이

  1. 입력받기 ― 2차원 배열 동적할당
  2. ‘X’가 있는 행과 열을 마킹해줄 bool row[N], bool col[M] 배열
    ― ‘X’를 입력받으면, 그 행과 열을 true처리
  3. 구하고자 하는 답은 ans_r + ans_c - min(ans_r, ans_c). 즉 max(ans_r, ans_c)
    ― 경비원이 없는 false행과 false열 중 겹치게 한 곳만 두면 되니까


👩‍💻 코드

C++

#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
using namespace std;

int main() {
	//freopen("input.txt", "rt", stdin);
	int N, M;
	cin >> N >> M;
	char** input = new char*[N];
	for (int i = 0; i < N; i++) {
		input[i] = new char[M];
	}

	bool* row = new bool[N] {false};
	bool* col = new bool[M] {false};
	for (int i = 0; i < N; i++) {
		for (int j = 0; j < M; j++) {
			cin >> input[i][j];
			if (input[i][j] == 'X') {
				row[i] = true;
				col[j] = true;
			}
		}
	}

	int ans_r = 0, ans_c = 0;
	for (int i = 0; i < N; i++) {
		if (!row[i]) { ++ans_r; }
	}
	for (int i = 0; i < M; i++) {
		if (!col[i]) { ++ans_c; }
	}

	cout << max(ans_r, ans_c);

	return 0;
}



처음엔 정답률 보고 쫄았는데, 오히려 한번에 맞춤.
정답률 높은 문제들은 오히려 오래 걸린 적이 꽤 있다.
정답률 보고 쫄지 말쟈. 그냥 ㄱㄱ

댓글남기기