https://www.acmicpc.net/problem/5212
5212๋ฒ: ์ง๊ตฌ ์จ๋ํ
์ฒซ์งธ ์ค์ ์ง๋์ ํฌ๊ธฐ R๊ณผ C (1 โค R, C โค 10)๊ฐ ์ฃผ์ด์ง๋ค. ๋ค์ R๊ฐ ์ค์๋ ํ์ฌ ์ง๋๊ฐ ์ฃผ์ด์ง๋ค.
www.acmicpc.net
๋ฌธ์ ์ค๋ช
R X C ํฌ๊ธฐ์ ์ง๋์, ๋ฐ๋ค๋ '.'๋ก, ๋
์ 'X'๋ก ํ๊ธฐ
50๋
ํ, ์ธ์ ํ ์ธ์นธ ๋๋ ๋ค์นธ์ด ๋ฐ๋ค์ธ ๋
์, ๋ฐ๋ค์ ์ ๊น
50๋
ํ์ ์ง๋๋ฅผ ๊ทธ๋ฆฌ๋๋ฐ, ์ง๋์ ํฌ๊ธฐ๊ฐ ๋ชจ๋ ์ฌ์ ํฌํจํ๋ ๊ฐ์ฅ ์์ ์ง์ฌ๊ฐํ
์ง๋์ ์๋ ๊ณณ, ์ง๋์ ๋ฒ์๋ฅผ ๋ฒ์ด๋๋ ๊ณณ์ ๋ฐ๋ค
๋ฌธ์ ํ์ด
1. ์ ๋ ฅ
int[][] map
์ ์ง๋ ์ ์ฅ, ๋ฐ๋ค๋ 0, ๋
์ 1
2. ์ ๊ธธ ๋ ํ์ธ
map์ ๋๋ฉด์, ๋
์ด๋ฉด findSeaCnt(x,y)
ํธ์ถ
๋ค๋ฉด์ ํ์ธํ๋๋ฐ, ๋ฒ์๋ฅผ ๋ฒ์ด๋๋ ๋ฐ๋ค๋ก ์นด์ดํธint[][] aroundSea
์ ์ ์ฅ
3. ๋ ๊ฐ๋ผ์ํ๊ธฐ
removeLand()
aroundSea
์ ๊ฐ์ด 3์ด์์ด๋ฉด, ๋ฐ๋ค(0)๋ก ๊ฐ ๋ณ๊ฒฝ
4. ์ง๋ ์ค์ด๊ธฐ
map
์ ๋๋ฉด์ ๋
์ธ ๋ถ๋ถ์์
minX, minY, maxX, maxY ๊ฐ๋ค์ ์ ์ฅ
map[minX][minY] ~ map[maxX][maxY] ๊ฐ๋ค๋ง ์ถ๋ ฅ
์ฝ๋
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.LinkedList;
import java.util.Queue;
import java.util.StringTokenizer;
public class Main_BOJ_5212_์ง๊ตฌ_์จ๋ํ {
static int R, C, minX = Integer.MAX_VALUE, minY = Integer.MAX_VALUE, maxX = -1, maxY = -1;
static int[][] map, aroundSea;
static int[] dx = {-1, 0, 0, 1};
static int[] dy = {0, -1, 1, 0};
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer stringTokenizer = new StringTokenizer(br.readLine());
R = Integer.parseInt(stringTokenizer.nextToken());
C = Integer.parseInt(stringTokenizer.nextToken());
aroundSea = new int[R][C];
map = new int[R][C];
for (int i = 0; i < R; i++) {
char[] arr = br.readLine().toCharArray();
for (int j = 0; j < C; j++) {
map[i][j] = arr[j] == '.' ? 0 : 1;
}
}
for (int i = 0; i < R; i++) {
for (int j = 0; j < C; j++) {
if(map[i][j] == 1) findSeaCnt(i, j);
}
}
removeLand();
makeMap();
/*System.out.println("minX : " + minX + " minY : " + minY +" maxX : " + maxX + " maxY : " + maxY);
for (int[] ma : map) {
for (int m : ma) {
System.out.print(m + " ");
}
System.out.println();
}*/
for (int i = minX; i <= maxX; i++) {
for (int j = minY; j <= maxY; j++) {
System.out.print(map[i][j] == 0 ? '.' : 'X');
}
System.out.println();
}
}
private static void makeMap() {
for (int i = 0; i < R; i++) {
for (int j = 0; j < C; j++) {
if (map[i][j] == 1) {
minX = minX > i ? i : minX;
minY = minY > j ? j : minY;
maxX = maxX < i ? i : maxX;
maxY = maxY < j ? j : maxY;
}
}
}
}
private static void removeLand() {
for (int i = 0; i < R; i++) {
for (int j = 0; j < C; j++) {
if (aroundSea[i][j] >= 3) {
map[i][j] = 0;
}
}
}
}
private static void findSeaCnt(int x, int y) {
for (int i = 0; i < 4; i++) {
int nx = x + dx[i];
int ny = y + dy[i];
if(nx < 0 || ny < 0 || R <= nx || C <= ny || map[nx][ny] == 0) aroundSea[x][y] += 1;
}
}
}
'์๊ณ ๋ฆฌ์ฆ > ๋ฐฑ์ค' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[ ๋ฐฑ์ค / BOJ 21922 ] ํ๋ถ ์ฐ๊ตฌ์ ๋ฏผ์ ( ์๋ฐ / JAVA ) (0) | 2022.02.21 |
---|---|
[ BOJ / ๋ฐฑ์ค 20165 ] ์ธ๋ด์ ๋๋ฏธ๋ ธ ์ฅ์ธ ํธ์ ( ์๋ฐ / JAVA ) (0) | 2022.02.21 |
[ ๋ฐฑ์ค / BOJ 20436 ] ZOAC 3 ( JAVA / ์๋ฐ ) (0) | 2022.02.15 |
[ ๋ฐฑ์ค / BOJ 21609 ] ์์ด ์คํ๊ต ( ์๋ฐ / JAVA ) (0) | 2022.02.14 |
[ BOJ / ๋ฐฑ์ค 20061 ] ๋ชจ๋ ธ๋ฏธ๋ ธ๋๋ฏธ๋ ธ 2 ( ์๋ฐ / JAVA ) (0) | 2022.02.12 |
https://www.acmicpc.net/problem/5212
5212๋ฒ: ์ง๊ตฌ ์จ๋ํ
์ฒซ์งธ ์ค์ ์ง๋์ ํฌ๊ธฐ R๊ณผ C (1 โค R, C โค 10)๊ฐ ์ฃผ์ด์ง๋ค. ๋ค์ R๊ฐ ์ค์๋ ํ์ฌ ์ง๋๊ฐ ์ฃผ์ด์ง๋ค.
www.acmicpc.net
๋ฌธ์ ์ค๋ช
R X C ํฌ๊ธฐ์ ์ง๋์, ๋ฐ๋ค๋ '.'๋ก, ๋
์ 'X'๋ก ํ๊ธฐ
50๋
ํ, ์ธ์ ํ ์ธ์นธ ๋๋ ๋ค์นธ์ด ๋ฐ๋ค์ธ ๋
์, ๋ฐ๋ค์ ์ ๊น
50๋
ํ์ ์ง๋๋ฅผ ๊ทธ๋ฆฌ๋๋ฐ, ์ง๋์ ํฌ๊ธฐ๊ฐ ๋ชจ๋ ์ฌ์ ํฌํจํ๋ ๊ฐ์ฅ ์์ ์ง์ฌ๊ฐํ
์ง๋์ ์๋ ๊ณณ, ์ง๋์ ๋ฒ์๋ฅผ ๋ฒ์ด๋๋ ๊ณณ์ ๋ฐ๋ค
๋ฌธ์ ํ์ด
1. ์ ๋ ฅ
int[][] map
์ ์ง๋ ์ ์ฅ, ๋ฐ๋ค๋ 0, ๋
์ 1
2. ์ ๊ธธ ๋ ํ์ธ
map์ ๋๋ฉด์, ๋
์ด๋ฉด findSeaCnt(x,y)
ํธ์ถ
๋ค๋ฉด์ ํ์ธํ๋๋ฐ, ๋ฒ์๋ฅผ ๋ฒ์ด๋๋ ๋ฐ๋ค๋ก ์นด์ดํธint[][] aroundSea
์ ์ ์ฅ
3. ๋ ๊ฐ๋ผ์ํ๊ธฐ
removeLand()
aroundSea
์ ๊ฐ์ด 3์ด์์ด๋ฉด, ๋ฐ๋ค(0)๋ก ๊ฐ ๋ณ๊ฒฝ
4. ์ง๋ ์ค์ด๊ธฐ
map
์ ๋๋ฉด์ ๋
์ธ ๋ถ๋ถ์์
minX, minY, maxX, maxY ๊ฐ๋ค์ ์ ์ฅ
map[minX][minY] ~ map[maxX][maxY] ๊ฐ๋ค๋ง ์ถ๋ ฅ
์ฝ๋
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.LinkedList;
import java.util.Queue;
import java.util.StringTokenizer;
public class Main_BOJ_5212_์ง๊ตฌ_์จ๋ํ {
static int R, C, minX = Integer.MAX_VALUE, minY = Integer.MAX_VALUE, maxX = -1, maxY = -1;
static int[][] map, aroundSea;
static int[] dx = {-1, 0, 0, 1};
static int[] dy = {0, -1, 1, 0};
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer stringTokenizer = new StringTokenizer(br.readLine());
R = Integer.parseInt(stringTokenizer.nextToken());
C = Integer.parseInt(stringTokenizer.nextToken());
aroundSea = new int[R][C];
map = new int[R][C];
for (int i = 0; i < R; i++) {
char[] arr = br.readLine().toCharArray();
for (int j = 0; j < C; j++) {
map[i][j] = arr[j] == '.' ? 0 : 1;
}
}
for (int i = 0; i < R; i++) {
for (int j = 0; j < C; j++) {
if(map[i][j] == 1) findSeaCnt(i, j);
}
}
removeLand();
makeMap();
/*System.out.println("minX : " + minX + " minY : " + minY +" maxX : " + maxX + " maxY : " + maxY);
for (int[] ma : map) {
for (int m : ma) {
System.out.print(m + " ");
}
System.out.println();
}*/
for (int i = minX; i <= maxX; i++) {
for (int j = minY; j <= maxY; j++) {
System.out.print(map[i][j] == 0 ? '.' : 'X');
}
System.out.println();
}
}
private static void makeMap() {
for (int i = 0; i < R; i++) {
for (int j = 0; j < C; j++) {
if (map[i][j] == 1) {
minX = minX > i ? i : minX;
minY = minY > j ? j : minY;
maxX = maxX < i ? i : maxX;
maxY = maxY < j ? j : maxY;
}
}
}
}
private static void removeLand() {
for (int i = 0; i < R; i++) {
for (int j = 0; j < C; j++) {
if (aroundSea[i][j] >= 3) {
map[i][j] = 0;
}
}
}
}
private static void findSeaCnt(int x, int y) {
for (int i = 0; i < 4; i++) {
int nx = x + dx[i];
int ny = y + dy[i];
if(nx < 0 || ny < 0 || R <= nx || C <= ny || map[nx][ny] == 0) aroundSea[x][y] += 1;
}
}
}
'์๊ณ ๋ฆฌ์ฆ > ๋ฐฑ์ค' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[ ๋ฐฑ์ค / BOJ 21922 ] ํ๋ถ ์ฐ๊ตฌ์ ๋ฏผ์ ( ์๋ฐ / JAVA ) (0) | 2022.02.21 |
---|---|
[ BOJ / ๋ฐฑ์ค 20165 ] ์ธ๋ด์ ๋๋ฏธ๋ ธ ์ฅ์ธ ํธ์ ( ์๋ฐ / JAVA ) (0) | 2022.02.21 |
[ ๋ฐฑ์ค / BOJ 20436 ] ZOAC 3 ( JAVA / ์๋ฐ ) (0) | 2022.02.15 |
[ ๋ฐฑ์ค / BOJ 21609 ] ์์ด ์คํ๊ต ( ์๋ฐ / JAVA ) (0) | 2022.02.14 |
[ BOJ / ๋ฐฑ์ค 20061 ] ๋ชจ๋ ธ๋ฏธ๋ ธ๋๋ฏธ๋ ธ 2 ( ์๋ฐ / JAVA ) (0) | 2022.02.12 |