csct3434
[level 2] [1차] 프렌즈4블록 - 17679 본문
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
class Solution {
public int solution(int m, int n, String[] b) {
char[][] board = new char[m][n];
for (int i = 0; i < m; i++) {
board[i] = b[i].toCharArray();
}
return solve(m, n, board);
}
public int solve(int m, int n, char[][] board) {
int count = 0;
boolean[][] mark = new boolean[m][n];
int[] dx = {0, 0, 1, 1};
int[] dy = {0, 1, 0, 1};
for (int x = 0; x < m - 1; x++) {
for (int y = 0; y < n - 1; y++) {
char friend = board[x][y];
if (friend == '.') {
continue;
}
boolean pop = true;
for (int i = 0; i < 4; i++) {
if (friend != board[x + dx[i]][y + dy[i]]) {
pop = false;
}
}
if (pop) {
for (int i = 0; i < 4; i++) {
mark[x + dx[i]][y + dy[i]] = true;
}
}
}
}
for (int x = 0; x < m; x++) {
for (int y = 0; y < n; y++) {
if (mark[x][y]) {
count++;
board[x][y] = '.';
}
}
}
for (int y = 0; y < n; y++) {
for (int x = m - 2; x >= 0; x--) {
if (board[x][y] == '.') {
continue;
}
for (int i = m - 1; i > x; i--) {
if (board[i][y] == '.') {
board[i][y] = board[x][y];
board[x][y] = '.';
}
}
}
}
if (count == 0) {
return 0;
}
return count + solve(m, n, board);
}
}
'프로그래머스' 카테고리의 다른 글
[level 2] [3차] 압축 - 17684 (0) | 2024.02.28 |
---|---|
[level 2] [1차] 캐시 - 17680 (0) | 2024.02.28 |
[level 2] [1차] 뉴스 클러스터링 - 17677 (0) | 2024.02.28 |
[level 2] 예상 대진표 - 12985 (0) | 2024.02.28 |
[level 2] 영어 끝말잇기 - 12981 (0) | 2024.02.28 |