티스토리 뷰
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 |
댓글