๋ฌธ์ (์ถ์ฒ: https://www.acmicpc.net/problem/5212)
< ์ง๊ตฌ ์จ๋ํ >
๋ฌธ์ ํ์ด
์ธ์ ํ ์ธ ์นธ ๋๋ ๋ค ์นธ์ ๋ฐ๋ค๊ฐ ์๋ ๋ ์ ๋ฐ๋ค๋ก ๋ฐ๊พผ ํ ์ฌ์ด ์๋ ๊ณณ์ ๊ฐ์ฅ ์์ ์ขํ์ ๊ฐ์ฅ ํฐ ์ขํ๋ฅผ ๊ตฌํด ๊ตฌ๊ฐ๋งํผ ์ถ๋ ฅํ๋ค.
my solution (Java)
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.StringTokenizer;
public class _5212_ { // ์ง๊ตฌ ์จ๋ํ
static char[][] arr, result;
static int r, c;
static int dx[] = { -1, 1, 0, 0 };
static int dy[] = { 0, 0, -1, 1 };
public static void main(String[] args) throws IOException {
BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
StringTokenizer st = new StringTokenizer(bf.readLine());
r = Integer.parseInt(st.nextToken());
c = Integer.parseInt(st.nextToken());
arr = new char[r][c];
result = new char[r][c];
for (int i = 0; i < r; i++) {
String str = bf.readLine();
for (int j = 0; j < c; j++) {
char x = str.charAt(j);
arr[i][j] = x;
result[i][j] = x;
}
}
for (int i = 0; i < r; i++) {
for (int j = 0; j < c; j++) {
if(arr[i][j]=='X')
check(i, j);
}
}
int min_x = -1, min_y = -1, max_x = -1, max_y = -1;
for (int i = 0; i < r; i++) {
for (int j = 0; j < c; j++) {
if (result[i][j] == 'X') {
if (min_x == -1 || min_x > i) {
min_x = i;
}
if (min_y == -1 || min_y > j) {
min_y = j;
}
if (max_x == -1 || max_x < i) {
max_x = i;
}
if (max_y == -1 || max_y < j) {
max_y = j;
}
}
}
}
for (int i = min_x; i <= max_x; i++) {
for (int j = min_y; j <= max_y; j++) {
bw.write(result[i][j]);
}
bw.write("\n");
}
bw.flush();
}
private static void check(int i, int j) {
int num = 0;
for (int k = 0; k < 4; k++) {
int x = i + dx[k];
int y = j + dy[k];
if (x < 0 || x >= r || y < 0 || y >= c) {
num += 1;
} else if (x >= 0 && x < r && y >= 0 && y < c && arr[x][y] == '.') {
num += 1;
}
}
if (num >= 3) {
result[i][j] = '.';
}
}
}
๋ณ์)
r, c : ์ง๋์ ํฌ๊ธฐ
arr : ์ง๋ ์ ๋ณด
result : ๋ฐ๋ ์ง๋
dx, dy : ์ํ์ข์ฐ
min_x, min_y, max_x, max_y : ์ฌ์ด ์๋ ๊ณณ์ ๊ฐ์ฅ ์์ ์ขํ, ๊ฐ์ฅ ํฐ ์ขํ
์ง๋์ ํฌ๊ธฐ์ ์ง๋ ์ ๋ณด๋ฅผ ์ ๋ ฅ๋ฐ์ ์ ์ฅํ๋ค. ๋ชจ๋ ์ขํ๋ฅผ ํ์ํ๋ฉฐ ๊ทธ ์ขํ๊ฐ ๋ ์ด๋ผ๋ฉด check ํจ์๋ฅผ ํธ์ถํ๋ค. check ํจ์๋ฅผ ํตํด ์ธ์ ํ ์ธ ์นธ ๋๋ ๋ค ์นธ์ ๋ฐ๋ค๊ฐ ์๋์ง ํ์ธ ํ ์กฐ๊ฑด์ ๋ง๋ค๋ฉด ๊ทธ ์ขํ๋ฅผ ๋ฐ๋ค๋ก ๋ฐ๊ฟ์ค๋ค.
์๋ ์ง๋์ ๋ฐ๋ ์ง๋๋ฅผ ๊ตฌ๋ถํ๋ ์ด์ ๋ ๋ฐ๋ค๋ก ๋ฐ๋๋ ๊ฒ์ด ๋์์ ์ผ์ด๋๋ ์ผ์ด์ง ์์ฐจ์ ์ผ๋ก ๋ฐ์ํ๋ ์ผ์ด ์๋๊ธฐ ๋๋ฌธ์ด๋ค.
๋ฐ๋ ์ง๋๋ฅผ ๋ชจ๋ ์ฌ์ ํฌํจํ๋ ๊ฐ์ฅ ์์ ์ง์ฌ๊ฐํ์ผ๋ก ์ถ๋ ฅํด์ผ ํ๋ฏ๋ก ์ฌ์ด ์๋ ๊ณณ ์ค์์ ๊ฐ์ฅ ์์ x, y ์ขํ์ ๊ฐ์ฅ ํฐ x, y ์ขํ๋ฅผ ๊ตฌํด์ค ํ ์์ ์ขํ์ ํฐ ์ขํ ๊ตฌ๊ฐ์ ์ถ๋ ฅํ๋ค.

'๐Algorithm > ๐ฅBaekjoon' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Baekjoon] 27497_์ํ๋ฒณ ๋ธ๋ก (0) | 2023.11.24 |
---|---|
[Baekjoon] 2872_์ฐ๋ฆฌ์ง์ ๋์๊ด์ด ์์ด (1) | 2023.11.23 |
[Baekjoon] 18429_๊ทผ์์ค (0) | 2023.11.21 |
[Baekjoon] 1448_์ผ๊ฐํ ๋ง๋ค๊ธฐ (1) | 2023.11.20 |
[Baekjoon] 13305_์ฃผ์ ์ (0) | 2023.11.17 |