-
-
Save hanjae-jea/4be33c7dcd3f67b7590d to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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