Algorithm/๋ฌธ์ œํ’€์ด

[๋ฐฑ์ค€] 1236๋ฒˆ - ์„ฑ ์ง€ํ‚ค๊ธฐ (C++)

moaoh 2023. 8. 7. 23:36

 

1236๋ฒˆ: ์„ฑ ์ง€ํ‚ค๊ธฐ

์ฒซ์งธ ์ค„์— ์„ฑ์˜ ์„ธ๋กœ ํฌ๊ธฐ N๊ณผ ๊ฐ€๋กœ ํฌ๊ธฐ M์ด ์ฃผ์–ด์ง„๋‹ค. N๊ณผ M์€ 50๋ณด๋‹ค ์ž‘๊ฑฐ๋‚˜ ๊ฐ™์€ ์ž์—ฐ์ˆ˜์ด๋‹ค. ๋‘˜์งธ ์ค„๋ถ€ํ„ฐ N๊ฐœ์˜ ์ค„์—๋Š” ์„ฑ์˜ ์ƒํƒœ๊ฐ€ ์ฃผ์–ด์ง„๋‹ค. ์„ฑ์˜ ์ƒํƒœ๋Š” .์€ ๋นˆ์นธ, X๋Š” ๊ฒฝ๋น„์›์ด ์žˆ๋Š” ์นธ์ด๋‹ค

www.acmicpc.net

๋ฌธ์ œ

์˜์‹์ด๋Š” ์ง์‚ฌ๊ฐํ˜• ๋ชจ์–‘์˜ ์„ฑ์„ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค. ์„ฑ์˜ 1์ธต์€ ๋ช‡ ๋ช…์˜ ๊ฒฝ๋น„์›์— ์˜ํ•ด์„œ ๋ณดํ˜ธ๋˜๊ณ  ์žˆ๋‹ค. ์˜์‹์ด๋Š” ๋ชจ๋“  ํ–‰๊ณผ ๋ชจ๋“  ์—ด์— ํ•œ ๋ช… ์ด์ƒ์˜ ๊ฒฝ๋น„์›์ด ์žˆ์œผ๋ฉด ์ข‹๊ฒ ๋‹ค๊ณ  ์ƒ๊ฐํ–ˆ๋‹ค.

์„ฑ์˜ ํฌ๊ธฐ์™€ ๊ฒฝ๋น„์›์ด ์–ด๋””์žˆ๋Š”์ง€ ์ฃผ์–ด์กŒ์„ ๋•Œ, ๋ช‡ ๋ช…์˜ ๊ฒฝ๋น„์›์„ ์ตœ์†Œ๋กœ ์ถ”๊ฐ€ํ•ด์•ผ ์˜์‹์ด๋ฅผ ๋งŒ์กฑ์‹œํ‚ค๋Š”์ง€ ๊ตฌํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜์‹œ์˜ค.

 

์ž…๋ ฅ

์ฒซ์งธ ์ค„์— ์„ฑ์˜ ์„ธ๋กœ ํฌ๊ธฐ N๊ณผ ๊ฐ€๋กœ ํฌ๊ธฐ M์ด ์ฃผ์–ด์ง„๋‹ค. N๊ณผ M์€ 50๋ณด๋‹ค ์ž‘๊ฑฐ๋‚˜ ๊ฐ™์€ ์ž์—ฐ์ˆ˜์ด๋‹ค. ๋‘˜์งธ ์ค„๋ถ€ํ„ฐ N๊ฐœ์˜ ์ค„์—๋Š” ์„ฑ์˜ ์ƒํƒœ๊ฐ€ ์ฃผ์–ด์ง„๋‹ค. ์„ฑ์˜ ์ƒํƒœ๋Š” .์€ ๋นˆ์นธ, X๋Š” ๊ฒฝ๋น„์›์ด ์žˆ๋Š” ์นธ์ด๋‹ค.

 

 

์ถœ๋ ฅ

์ฒซ์งธ ์ค„์— ์ถ”๊ฐ€ํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ๋น„์›์˜ ์ตœ์†Ÿ๊ฐ’์„ ์ถœ๋ ฅํ•œ๋‹ค.

 

ํ’€์ด๊ณผ์ •

๋ฌธ์ œ์˜ ์–ด๋–ป๊ฒŒ ์ ‘๊ทผ์„ ํ•ด์•ผํ•˜๋Š”๊ฐ€์— ๋Œ€ํ•ด์„œ ๊ณ ๋ฏผ์„ ๋งŽ์ด ํ–ˆ์—ˆ๋‹ค.

๋งจ ์ฒ˜์Œ ์ƒ๊ฐํ–ˆ๋˜ ๋ฐฉ๋ฒ•์€ ๋ฌธ์ œ์— ๋‚˜์™€์žˆ๋Š” ๊ทธ๋Œ€๋กœ ๋ชจ๋“  ํ–‰๊ณผ ๋ชจ๋“  ์—ด์— ํ•œ ๋ช… ์ด์ƒ์˜ ๊ฒฝ๋น„์› ์ด๋ผ๋Š” ์กฐ๊ฑด์ด ์ฃผ์–ด์ ธ์žˆ์œผ๋‹ˆ X๊ฐ€ ์กด์žฌํ•˜๋Š”
ํ–‰๊ณผ ์—ด์˜ .๋“ค์„ ๋ชจ๋‘ ๊ฐ์‹œ๋Œ€์ƒ์ด๋ผ๊ณ  ์ƒ๊ฐ์„ ํ•˜๊ณ  ๋ฌธ์ œ๋ฅผ ํ’€์–ด๋ณด์•˜์—ˆ๋‹ค.

#include <iostream>

char arr[51][51];

// ๊ฐ€๋กœ = q, ์„ธ๋กœ = w, ๋‘˜๋‹ค = e
void	change(int n, int m, int y, int x)
{
	for (int k = 0; k < m; k++) {
		if (arr[y][k] != 'X')
			if (arr[y][k] == '.' || arr[y][k] == 'w') {
				if (arr[y][k] == 'w') arr[y][k] = 'e';
				else arr[y][k] = 'q';
			}
	}
	for (int l = 0; l < n; l++) {
		if (arr[l][x] != 'X')
			if (arr[l][x] == '.' || arr[l][x] == 'q') {
				if (arr[l][x] == 'q') arr[l][x] = 'e';
				else arr[l][x] = 'w';
			}
	}
}

int		main(void)
{
	int n, m;
	std::cin >> n >> m;

	for (int i = 0; i < n; i++) {
		for (int j = 0; j < m; j++)
			std::cin >> arr[i][j];
	}

	for (int i = 0; i < n; i++) {
		for (int j = 0; j < m; j++) {
			if (arr[i][j] == 'X') {
				change(n, m, i, j);
			}
		}
	}

	int temp = 0, max = -1;
	for (int i = 0; i < n; i++) {
		for (int j = 0; j < m; j++) {
			if (arr[i][j] != 'e' && arr[i][j] != 'X' && arr[i][j] != 'w')
				temp++;
		}
		if (temp > max) max = temp;
		temp = 0;
	}
	for (int i = 0; i < m; i++) {
		for (int j = 0; j < n; j++) {
			if (arr[j][i] != 'e' && arr[j][i] != 'X' && arr[j][i] != 'q') {
				temp++;
			}
		}
		if (temp > max) max = temp;
		temp = 0;
	}
	std::cout << max;

	return (0);
}
..X.

..X.

..X.

..X.

answer : 3

์œ„์™€ ๊ฐ™์€ ์ฝ”๋“œ๋ฅผ ์กฐ๊ฑด์‹์œผ๋กœ ๋งŒ๋“ค๊ณ  ์œ„์™€ ๊ฐ™์€ ๋ฐ˜๋ก€๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ์œ„ํ•ด์„œ ๊ฐ€๋กœ๋ฅผ ํ™•์ธํ•˜๋Š” q์™€ ์„ธ๋กœ๋ฅผ ํ™•์ธํ•˜๋Š” w๋ฅผ ๋งŒ๋“ค์–ด์„œ
2์ค‘์œผ๋กœ ๊ฒฝ๋น„์›ํ™•์ธ์ด ๋˜๋Š” e๋ฅผ ์ œ์™ธํ•œ ๋‹ค๋ฅธ ๊ฐ’์˜ ๊ฒฝ์šฐ ๊ฒฝ๋น„์›์ด ํ•„์š”ํ•œ ์ˆ˜ ๋ผ๋Š” ์‹์œผ๋กœ ๋ฌธ์ œ๋ฅผ ํ’€์—ˆ์—ˆ๋‹ค.

 

๋ฌธ์ œ ์ž์ฒด๋Š” ํ•ด๊ฒฐ์ด ๋˜์—ˆ์—ˆ์ง€๋งŒ ์œ„์— ํ˜•์‹์˜ ์ฝ”๋“œ์˜ ๊ฒฝ์šฐ๋Š” ์‹œ๊ฐ„๋ณต์žก๋„๊ฐ€ ๋„ˆ๋ฌด ๋ณต์žกํ•˜๊ณ , ๋ฌธ์ œ๋„ ๋„ˆ๋ฌด ์–ด๋ ต๊ฒŒ ์ ‘๊ทผ์„ ํ–ˆ๋˜๊ฑฐ ๊ฐ™์•„์„œ

์•„๋ž˜์™€ ๊ฐ™์€ ๋ฐฉ๋ฒ•์œผ๋กœ ์ƒˆ๋กญ๊ฒŒ ์ ‘๊ทผ์„ ํ•ด๋ณด์•˜๋‹ค.

#include <iostream>

char arr[51][51];

int		main(void)
{
	int n, m;
	int yCount = 0, xCount = 0;
	std::cin >> n >> m;

	for (int i = 0; i < n; i++) {
		for (int j = 0; j < m; j++) {
			std::cin >> arr[i][j];
		}
	}

	int count = 0;
	for (int i = 0; i < n; i++) {
		for (int j = 0; j < m; j++) {
			if (arr[i][j] != '.') break;
			count++;
		}
		if (count == m) xCount++;
		count = 0;
	}
	for (int i = 0; i < m; i++) {
		for (int j = 0; j < n; j++) {
			if (arr[j][i] != '.') break;
			count++;
		}
		if (count == n) yCount++;
		count = 0;
	}
	if (xCount <= yCount) std::cout << yCount;
	else std::cout << xCount;

	return (0);
}

์œ„์™€ ๊ฐ™์€ ๋ฐฉ์‹์€ X์˜ ๊ธฐ์ค€์ด ์•„๋‹Œ . ์„ ๊ธฐ์ค€์œผ๋กœ .์˜ ์ƒํ•˜์ขŒ์šฐ๋ฅผ ํ™•์ธํ•ด์„œ X๊ฐ€ ์กด์žฌํ•˜์ง€์•Š๋Š”๋‹ค๋ฉด
๊ฒฝ๋น„์›์ด ๋” ํ•„์š”ํ•˜๋‹ค๋Š” ์‹์œผ๋กœ ๊ณ„์‚ฐ์„ ํ•˜์—ฌ ์ด์ „์˜ ์ฝ”๋“œ๋ณด๋‹ค ํ›จ์”ฌ ์‹œ๊ฐ„๋ณต์žก๋„๊ฐ€ ๋œ ๊ฑธ๋ฆฌ๊ฒŒ n^2์œผ๋กœ ํ•ด๊ฒฐ์„ ํ–ˆ์—ˆ๋‹ค.

๊ทธ๋ ‡๊ฒŒ ํ’€์ด๋ฅผ ๋งˆ๋ฌด๋ฆฌํ•˜๋‹ค๊ฐ€ ๋‹ค๋ฅธ๋ถ„๋“ค์˜ ์ฝ”๋“œ์™€ ๋น„๊ต๋ฅผ ํ–ˆ์—ˆ๋Š”๋ฐ

#include <iostream>

int y[51], x[51];

int		main(void)
{
	int n, m;
	int yCount = 0, xCount = 0;
	char c;
	
	std::cin >> n >> m;
	for (int i = 0; i < n; i++) {
		for (int j = 0; j < m; j++) {
			std::cin >> c;
			if (c == 'X') {
				if (!y[i]) {
					y[i] = 1;
					yCount++;
				}
				if (!x[j]) {
					x[j] = 1;
					xCount++;
				}
			}
		}
	}
	if (n - yCount <= m - xCount) std::cout << m - xCount;
	else std::cout << n - yCount;

	return (0);
}

์œ„์™€ ๊ฐ™์€ ํ˜•์‹์œผ๋กœ ๊ธฐ์กด์˜ ์ฝ”๋“œ์—์„œ ์‹œ๊ฐ„๋ณต์žก๋„๋ฅผ ๋œ์–ด์„œ ํ›จ์”ฌ ๊ฐ„๋‹จํ•˜๊ฒŒ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ๋ฐœ๊ฒฌํ•  ์ˆ˜ ์žˆ์—ˆ๋‹ค.

code

#include <iostream>

int y[51], x[51];

int		main(void)
{
	int n, m;
	int yCount = 0, xCount = 0;
	char c;
	
	std::cin >> n >> m;
	for (int i = 0; i < n; i++) {
		for (int j = 0; j < m; j++) {
			std::cin >> c;
			if (c == 'X') {
				if (!y[i]) {
					y[i] = 1;
					yCount++;
				}
				if (!x[j]) {
					x[j] = 1;
					xCount++;
				}
			}
		}
	}
	if (n - yCount <= m - xCount) std::cout << m - xCount;
	else std::cout << n - yCount;

	return (0);
}

 

 

ํ›„๊ธฐ

๋ฐœ์ƒ์„ ์ƒ๊ฐํ•ด๋‚ด๊ธฐ๊ฐ€ ๋„ˆ๋ฌด๋‚˜๋„ ์–ด๋ ค์šด ๋ฌธ์ œ์˜€๋‹ค.

์ตœ๋Œ€ํ•œ ์‹œ๊ฐ„๋ณต์žก๋„๋ฅผ ์ค„์—ฌ๋ณด๊ณ ์ž ๊ณ ๋ฏผ์˜ ๊ณ ๋ฏผ์„ ๊ณ„์†ํ•ด๋ณด๊ณ  N^2 ๊นŒ์ง€ ์ค„์˜€์œผ๋ฉด ๋งŽ์ด ์ค„์˜€๋‹ค. ๋ผ๊ณ  ์ƒ๊ฐํ–ˆ์—ˆ๋Š”๋ฐ

์ข‹์€ ํ’€์ด๋ฅผ N์ด๋ฉด ํ•ด๊ฒฐ์ด ๋˜๋Š” ๋ฌธ์ œ๋ผ๋Š”๊ฑธ๋ณด๊ณ  ๊ฐํƒ„๊ณผ ์•„์‰ฌ์›€์ด ๋งŽ์ด ๋‚จ์•˜์—ˆ๋‹ค.