[백준] 16918번 봄버맨 (java, 구현)
728x90
반응형
골드 1,2 풀다가 실버 푸니까 더 헷갈리는 것 같다
for문을 돌면서 . 인곳을 O를 표시해주고 터트릴 시간을 적어준다.
큐 없이 풀 수 있는 문제 for문으로 돌면서 체크해놓은 터트리는 시간과 같은 곳을 다시 .으로 만들어준다.
package algo0421;
import java.util.Scanner;
class Pos{
int y,x;
public Pos(int y, int x) {
super();
this.y = y;
this.x = x;
}
}
public class B_16918_봄버맨_Main {
static int r,c,n;//n초
static char[][] map;
static int[][] num;
static int[] xpos= {0,0,1,-1};
static int[] ypos= {1,-1,0,0};
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
r=sc.nextInt();
c=sc.nextInt();
n=sc.nextInt();
map=new char[r][c];
num=new int[r][c];
for (int i = 0; i < r; i++) {
String s=sc.next();
for (int j = 0; j <c; j++) {
map[i][j]=s.charAt(j);
if(map[i][j]=='O') {
num[i][j]=3;
}
}
}
int time=1;
while(time<n) {
time+=1;
install(time);//2,4,6
// print();
// print2();
if(time==n)break;
time+=1;
boom(time);//3,5,7
// print();
// print2();
}
print();
}
private static void install(int time) {
for (int i = 0; i < r; i++) {
for (int j = 0; j <c; j++) {
if(map[i][j]=='.') {
map[i][j]='O';
num[i][j]=time+3;
}
}
}
}
public static void boom(int time) {
for (int i = 0; i < r; i++) {
for (int j = 0; j <c; j++) {
if(num[i][j]==time) {
map[i][j]='.';
for (int k = 0; k < 4; k++) {
int yy=i+ypos[k];
int xx=j+xpos[k];
if(yy<0 || xx<0 || yy>=r || xx>=c)continue;
map[yy][xx]='.';
}
}
}
}
}
public static void print() {
for (int i = 0; i < r; i++) {
for (int j = 0; j <c; j++) {
System.out.print(map[i][j]);
}
System.out.println();
}
// System.out.println();
}
public static void print2() {
for (int i = 0; i < r; i++) {
for (int j = 0; j <c; j++) {
System.out.print(num[i][j]);
}
System.out.println();
}
// System.out.println();
}
}
728x90
반응형
'백준' 카테고리의 다른 글
[백준] 13335번 트럭 (java, 구현) (0) | 2021.04.21 |
---|---|
[백준] 15683번 감시 (시뮬레이션, java) (0) | 2021.04.21 |
[백준] 4307번 개미 (java, 구현) (0) | 2021.04.21 |
[백준] 17609번 회문 (java, 구현) (0) | 2021.04.21 |
[백준] 14891번 톱니바퀴 (java, 시뮬레이션) (0) | 2021.04.21 |
TAGS.