[๋ฐฑ์ค] 1236๋ฒ - ์ฑ ์งํค๊ธฐ (C++)
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์ด๋ฉด ํด๊ฒฐ์ด ๋๋ ๋ฌธ์ ๋ผ๋๊ฑธ๋ณด๊ณ ๊ฐํ๊ณผ ์์ฌ์์ด ๋ง์ด ๋จ์์๋ค.