티스토리 뷰
5212번: 지구 온난화
첫째 줄에 지도의 크기 R과 C (1 ≤ R, C ≤ 10)가 주어진다. 다음 R개 줄에는 현재 지도가 주어진다.
www.acmicpc.net
풀이
1) 2차원 배열을 탐색하다가 X가 나오면 사방탐색을 해서 X의 갯수를 또다른 int형 2차원 배열에 담음
2) minR, minC, maxR, maxC 변수를 X가 나올때마다 갱신
3) 갯수가 2 이하면 전부 '.'으로 바꿈
4) 2번 범위만큼 출력
주의사항
1) 새로 2차원 배열을 생성하지 않고 하나만가지고 하기 어려움
package com.baekJoon;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.StringReader;
import java.util.StringTokenizer;
public class BJ_B1_5212_지구온난화 {
static BufferedReader input = new BufferedReader(new InputStreamReader(System.in));
static StringTokenizer tokens;
static int R,C,map2[][];
static char map[][];
public static void main(String[] args) throws NumberFormatException, IOException {
input = new BufferedReader(new StringReader(src));
tokens = new StringTokenizer(input.readLine());
R = Integer.parseInt(tokens.nextToken());
C = Integer.parseInt(tokens.nextToken());
map = new char[R][C];
map2 = new int[R][C];
for(int r=0; r<R; r++) {
String line = input.readLine();
for(int c=0; c<C; c++) {
map[r][c] = line.charAt(c);
}
}
for(int r=0; r<R; r++) {
for(int c=0; c<C; c++) {
if(map[r][c] == 'X') {
for(int d=0; d<4; d++) {
int nr = r+dr[d];
int nc = c+dc[d];
if(isIn(nr, nc) && map[nr][nc] == 'X') {
map2[r][c] ++;
}
}
}
}
}
int minR = 10, minC = 10;
int maxR = 0, maxC = 0;
for(int r=0; r<R; r++) {
for(int c=0; c<C; c++) {
if(map2[r][c] < 2) {
map[r][c] = '.';
}else {
if(maxR < r) {
maxR = r;
}
if(maxC < c) {
maxC = c;
}
if(minR > r) {
minR = r;
}
if(minC > c) {
minC = c;
}
}
}
}
for(int r=minR; r<=maxR; r++) {
for(int c=minC; c<=maxC; c++) {
System.out.print(map[r][c]);
}
System.out.println();
}
}
static boolean isIn (int r, int c) {
return (r>=0 && c>=0 && r<R && c<C);
}
static int dr[] = {0,0,-1,1};
static int dc[] = {-1,1,0,0};
static String src =
"3 10\r\n" +
"..........\r\n" +
"..XXX.XXX.\r\n" +
"XXX.......";
}
후기
머리가 안돌아가서 이상한데서 오래걸렸다.. 골드의 '빙산' 문제와 비슷한 문제이다. 생각해보니 그거 틀렸던 문젠데 다시 풀어봐야겠다.
'Algorithm' 카테고리의 다른 글
[백준] G3 14890 경사로 (java) (0) | 2020.12.22 |
---|---|
[백준] B1 1652 누울 자리를 찾아라 (java) (0) | 2020.12.21 |
[백준] S4 20291 파일 정리 (java) (0) | 2020.12.21 |
[백준] G5 14499 주사위 굴리기 (java) (0) | 2020.12.20 |
[백준] S2 15662 톱니바퀴2 (java) (1) | 2020.12.20 |
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 객체지향
- PriorityQueue
- 리액트 네이티브
- 알고리즘
- 백준
- react native
- 자바
- 시뮬레이션
- 문자열
- Spring Boot
- 구현
- java
- react
- 코딩새내기
- S2
- 그리디
- DFS
- map
- 우선순위큐
- S3
- 현꾸라지
- 다익스트라
- Spring
- 백트래킹
- SWEA
- laugh4mile
- 리액트
- g4
- BFS
- G5
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
글 보관함