일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
Tags
- 백준
- 알고리즘
- 인텔리제이 에러
- 자바ORM표준JPA프로그래밍
- 프로그래머스
- 김영한
- JPA
- 시소 짝꿍
- 영속성
- 스프링 입문을 위한 자바 객체 지향의 원리와 이해
- java
- 조회수중복
- 올리브영 고객센터
- 카카오2023신입공채
- 리코쳇로봇
- 전적 검색
- 더티체킹
- BFS
- DFS
- 테크잇
- 인프런
- 포트 죽이는법
- 엔에첸
- already use
- 자바
- 라이엇 API
- 스프링부트
- 멋쟁이사자차럼
- 최주호
- 백엔드 스쿨3기
Archives
- Today
- Total
My Blog
[JAVA] 프렌즈4블록 본문
https://school.programmers.co.kr/learn/courses/30/lessons/17679
package programmers;
import java.util.LinkedList;
import java.util.List;
public class kakao2018_4 {
static String[][] data;
static boolean[][] visited;
public int solution(int m, int n, String[] board) {
int answer = 0;
data = new String[m][n];
for (int i = 0; i < m; i++) {
String[] board_data = board[i].split("");
for (int j = 0; j < n; j++) {
data[i][j] = board_data[j];
}
}
while (true) {
int num = update(m, n);
if (num == 0) {
break;
}
answer += num;
}
return answer;
}
static int update(int m, int n) {
visited = new boolean[m][n];
int cnt = 0;
for (int i = 0; i < m - 1; i++) {
for (int j = 0; j < n - 1; j++) {
if (data[i][j].equals("0")) {
continue;
}
if (validBlock(i, j) == true) {
visited[i][j] = true;
visited[i][j + 1] = true;
visited[i + 1][j] = true;
visited[i + 1][j + 1] = true;
}
}
}
for (int i = 0; i < n; i++) {
List<String> temp = new LinkedList<>();
for (int j = m - 1; j >= 0; j--) {
if (visited[j][i] == true) {
cnt++;
continue;
}
temp.add(data[j][i]);
}
for (int j = m - 1, k = 0; j >= 0; j--, k++) {
if (k < temp.size()) {
data[j][i] = temp.get(k);
} else {
data[j][i] = "0";
}
}
}
return cnt;
}
static boolean validBlock(int x, int y) {
String ch = data[x][y];
if (ch.equals(data[x][y + 1]) && ch.equals(data[x + 1][y]) && ch.equals(data[x + 1][y + 1])) {
return true;
}
return false;
}
public static void main(String[] args) {
kakao2018_4 s = new kakao2018_4();
int m = 4;
int n = 5;
String[] board = {
"CCBDE",
"AAADE",
"AAABF",
"CCBBF"
};
System.out.println(s.solution(m, n, board));
}
}
728x90
'알고리즘 > 프로그래머스' 카테고리의 다른 글
[JAVA] 두 수의 나눗셈 (0) | 2023.02.22 |
---|---|
[JAVA] 숫자 비교하기 (0) | 2023.02.22 |
[JAVA] 프로그래머스 - 나머지 구하기 (0) | 2023.02.21 |
[JAVA] n진수 게임 (0) | 2023.01.19 |
[JAVA] 개인정보 수집 유효기간 (0) | 2023.01.18 |
Comments