Skip to content

Instantly share code, notes, and snippets.

@hanjae-jea
Forked from anonymous/gist:3627407d7f97cd37d0e9
Last active August 29, 2015 14:07
Show Gist options
  • Save hanjae-jea/4be33c7dcd3f67b7590d to your computer and use it in GitHub Desktop.
Save hanjae-jea/4be33c7dcd3f67b7590d to your computer and use it in GitHub Desktop.
package sunwooks;
// 1)차이가뭔지 파일,IOException
// 설명 : IOException은 말 그대로 IO(Input,Output)과정에서 발생하는 예상못한 동작이 발생했을때
// 이 프로그램이 그 에러를 처리하지 않고, 상위 프로그램에 전달한다는 뜻인데, 이거는 Java의 핵심
// 예외 처리 기법이라 알면 좋고, 굳이 여기서 100% 이해할 필요는 없고. 아마 try-catch 배우면서
// 더 자세히 배우게 될꺼야.
// 내가 알기로는 Scanner 클래스는 IOException이 안 일어나는걸로 알고 있는데... 필요한가 보네...
import java.io.File;
import java.util.Scanner;
import java.io.IOException;
public class Fire {
public static void main(String[] args)throws IOException{
//read
Scanner inFile =new Scanner(new File("input4.txt"));
int m=inFile.nextInt();
int n=inFile.nextInt();
int d=inFile.nextInt();
if(m<3 || m>10) {
System.out.println("잘못된 입력입니다");
return;
}
if(n<3 || n>10) {
System.out.println("잘못된 입력입니다");
return;
}
if(d<3 || d>10) {
System.out.println("잘못된 입력입니다");
return;
}
char[][] field = new char[m][n];
for(int i=0; i<m; i++){
String line =inFile.next();
if(line.length() !=n){
System.out.println("잘못된 입력입니다");
return;
}
field[i]=line.toCharArray();
}
//2)infile.close의 위치
// 설명 : 사실 프로그램 맨 마지막에 있어도 되는데, 정확히는 이 파일을 다 읽었으니 더 이상
// 안 읽어도 되니 열어놓은 파일을 닫는 다는 뜻이야. 이러면 어쨌든 파일을 읽는 자원을 절약하는 거야.
inFile.close();
for(int i=0; i<m; i++){
for(int j=0;j<n; j++){
System.out.print(field[i][j]);
}
System.out.println();
}
System.out.println();
for(int day=0;day<d;day++) {
for(int i=0;i<m;i++) {
for(int j=0;j<n;j++) {
/* 불이 번지는 것을 *로 표현하면 배열 검사하면서 불이 계속 번져나가기 때문에
* 임시로 #으로 한 뒤 한번에 #을 *로 바꿔줌
*/
if(field[i][j]=='*') {
//상
if(i > 0) {
if(field[i-1][j]=='0') {
field[i-1][j] = '#';
}
}
//하
if(i < m-1) {
if(field[i+1][j] == '0') {
field[i+1][j] = '#';
}
}
//좌
if(j > 0) {
if(field[i][j-1] == '0') {
field[i][j-1] = '#';
}
}
//우
if(j < n-1) {
if(field[i][j+1] == '0') {
field[i][j+1] = '#';
}
}
field[i][j] = '+';
}
}
}
//#을 *로 바꿔줌
for(int i=0;i<m;i++) {
for(int j=0;j<n;j++) {
if(field[i][j]=='#') {
field[i][j] = '*';
}
}
}
System.out.println("Day "+(day+1) );
for(int i=0;i<m;i++) {
for(int j=0;j<n;j++) {
System.out.print(field[i][j]);
}
System.out.println();
}
System.out.println();
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment