풀이
( 이클립스로 재코딩하였습니다. )
import java.util.*;
public class javatest {
static int x = 0; // 행
static int y = 0; // 열
public static void main(String[] args) {
String[] oneArr; // 입력받은 문자열 배열
String[] smallArr; // oneArr의 원소를 담을 배열
int count = 0;
Scanner scan = new Scanner(System.in);
x = Integer.parseInt(scan.nextLine()); // 행 할당
y = Integer.parseInt(scan.nextLine()); // 열 할당
String[][] twoArr = new String[x][y]; // 2차원 배열 twoArr 초기화
oneArr = scan.nextLine().split(","); // 입력받은 배치 문자들
// 2차원 배열에 할당
for(int i=0; i<x; i++) {
smallArr = oneArr[i].split("");
for(int j=0; j<y; j++) {
twoArr[i][j] = smallArr[j];
}
}
Game(twoArr);
for(int i=0; i<x; i++) {
for(int j=0; j<y; j++) {
if("0".equals(twoArr[i][j])) {
count++;
}
}
}
System.out.println(count);
}
private static void Game(String[][] twoArr) {
int state = 1;
String str = "";
String[] arr;
while(state != 0) {
state = 0;
str = "";
// 사라질 영역 찾기
for(int i=0; i<x-1; i++) {
for(int j=0; j<y-1; j++) {
if(twoArr[i][j].equals(twoArr[i][j+1]) &&
twoArr[i][j].equals(twoArr[i+1][j]) &&
twoArr[i][j].equals(twoArr[i+1][j+1]) && !"0".equals(twoArr[i][j])
) {
if("".equals(str)) {
str = i + "," + j;
}else {
str += "," + i + "," + j;
}
state = 1;
}
}
}
if(!"".equals(str)) {
// 찾은 영역 배열로 만들기
arr = str.split(",");
// 찾은 영역 제거
for(int i=0; i<arr.length; i+=2) {
int a = Integer.parseInt(arr[i]);
int b = Integer.parseInt(arr[i+1]);
twoArr[a][b] = "0";
twoArr[a+1][b] = "0";
twoArr[a][b+1] = "0";
twoArr[a+1][b+1] = "0";
}
// 남은 문자 정렬
for(int i=0; i<y; i++) {
str = "";
int num = x-1;
for(int j=x-1; j>=0; j--) {
if(!"0".equals(twoArr[j][i])) {
twoArr[num][i] = twoArr[j][i];
num--;
}
}
for(int j=num; j>=0; j--) {
twoArr[j][i] = "0";
}
}
}
}
}
}
결과
'코딩 문제 > 프로그래머스' 카테고리의 다른 글
프로그래머스 - 실력체크 - 레벨 2 - 8번째 (0) | 2021.02.16 |
---|---|
프로그래머스 - 실력체크 - 레벨 2 - 7번째 (0) | 2021.02.16 |
프로그래머스 - 실력체크 - 레벨 2 - 5번째 (0) | 2021.02.13 |
프로그래머스 - 실력체크 - 레벨 2 - 4번째 (0) | 2021.02.13 |
프로그래머스 - 실력체크 - 레벨 2 - 3번째 (0) | 2021.02.13 |