티스토리 뷰

1515 : 생명 게임 1

import java.util.Scanner;

// 210125
// 1515 : 생명 게임 1

public class CU1515 {

	public static void main (String[] args) {
		Scanner sc = new Scanner(System.in);
		
		int[][] myMap = new int[25][25];
		
		int[] dx = {-1, 1, 0, 0, -1, -1, 1, 1};
		int[] dy = {0, 0, -1, 1, -1, 1, -1, 1};
		
		for (int i=0; i<25; i++) {
			for (int j=0; j<25; j++) {
				myMap[i][j] = sc.nextInt();
			}
		}
		
		int[][] yourMap = new int[25][25];
		
		for (int i=0; i<25; i++) {
			for (int j=0; j<25; j++) {
				// 생명 x
				if (myMap[i][j] == 0) {
					int cnt = 0;
					
					for (int z=0; z<8; z++) {
						if (cnt > 3) {
							yourMap[i][j] = 0;
							break;
						}
						int ni = i+dx[z];
						int nj = j+dy[z];
						if (ni<0 || ni>=25 || nj<0 || nj>=25) {
							continue;
						} else {
							if (myMap[ni][nj] == 1) cnt++;
						}
					} 					
					if (cnt == 3) yourMap[i][j] = 1; 
					else yourMap[i][j] = 0; 
					
				} // if
				// 생명 x
				else if (myMap[i][j] == 1) {
					int cnt = 0;

					for (int z=0; z<8; z++) {
						int ni = i+dx[z];
						int nj = j+dy[z];
						if (ni<0 || ni>=25 || nj<0 || nj>=25) {
							continue;
						} else {
							if (myMap[ni][nj] == 1) cnt++;
						}
					} 					
					if ((cnt==2) || (cnt==3)) yourMap[i][j] = 1;
					else yourMap[i][j] = 0;
				}
				
			}
		}
				
		// 출력
		for (int i=0; i<25; i++) {
			for (int j=0; j<25; j++) {
				System.out.print(yourMap[i][j] + " ");
			}
			System.out.println();
		}
		
		sc.close();
	}
}

 

 

생명게임 2 

테스트케이스 확인해보아야함

import java.util.Scanner;

// 210125
// 1515 : 생명 게임 1

public class Main {

	public static void main (String[] args) {
		Scanner sc = new Scanner(System.in);
		
		int[] dx = {-1, 1, 0, 0, -1, -1, 1, 1};
		int[] dy = {0, 0, -1, 1, -1, 1, -1, 1};
		
		int a = sc.nextInt();
		int b = sc.nextInt();
		
		int x = sc.nextInt();
		int y = sc.nextInt();
		int z = sc.nextInt();
		
		int[][] myMap = new int[a][b];
		int[][] yourMap = new int[a][b];
		
		for (int i=0; i<a; i++) {
			for (int j=0; j<b; j++) {
				yourMap[i][j] = sc.nextInt();
			}
		}
		
		int k = sc.nextInt();
		for (int kc=0; kc< k; kc++) {
			myMap = yourMap;
			yourMap = new int[a][b];
			
			for (int i=0; i<a; i++) {
				for (int j=0; j<b; j++) {
					// 죽음
					if (myMap[i][j] == 0) {
						int cnt = 0;
						for (int w=0; w<8; w++) {
							int ni = i + dx[w];
							int nj = j + dy[w];
							
							if (ni<0 || ni>=a || nj<0 || nj>=b) continue;
							else {
								if (myMap[ni][nj] == 1) cnt ++;
							} // if-else
						} // for
						
						if (cnt == x) yourMap[i][j] = 1;
						else yourMap[i][j] = 0;
					} // if
					// 살음
					else if (myMap[i][j] == 1) {
						int cnt = 0;
						
						for (int w=0; w<8; w++) {
							int ni = i + dx[w];
							int nj = j + dy[w];
							
							if (ni<0 || ni>=a || nj<0 || nj>=b) continue;
							else {
								if (myMap[ni][nj] == 1) cnt ++;
							} // if-else
						} // for
						
						if (z>=y) {
							if (cnt>=y && cnt<z) yourMap[i][j] = 1;
							else yourMap[i][j] = 0;
						} else { // y>z
							if (cnt >= y) yourMap[i][j] = 1;
							else yourMap[i][j] = 0;
						  }
					} // else if 
					
				}
			} // for
		} // for
		

		// 출력
		for (int i=0; i<a; i++) {
			for (int j=0; j<b; j++) {
				System.out.print(yourMap[i][j] + " ");
			}
			System.out.println();
		}
		
		sc.close();
	}
}

'코딩테스트 > 코드업' 카테고리의 다른 글

[CodeUp] 100제 - 1063 ~1077  (0) 2021.01.25
[CodeUp] 100제 - 1053 ~ 1062  (0) 2021.01.25
[CodeUp] 100제 - 1093 ~1099  (0) 2021.01.25
[CodeUp] 100제 - 1087 ~ 1092  (0) 2021.01.23
[CodeUp] 100제 - 1085, 1086  (0) 2021.01.23
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2024/09   »
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
글 보관함