Notice
Recent Posts
Recent Comments
Link
변수의 기록
(코테) 프로그래머스_지게차와 크레인 본문
import java.util.*;
class Solution {
private static final int[] dx = {0, 0, 1, -1};
private static final int[] dy = {1, -1, 0, 0};
public int solution(String[] storage, String[] requests) {
char[][] containers = new char[storage.length][];
for (int i = 0; i < storage.length; i++) {
containers[i] = storage[i].toCharArray();
}
for (String request : requests) {
char c = request.charAt(0);
if (request.length() == 1) {
removeWithForklift(containers, c);
} else {
removeWithCrane(containers, c);
}
}
int count = 0;
for (char[] container : containers) {
for (char c : container) {
if (c != 0) {
count++;
}
}
}
return count;
}
private void removeWithCrane(char[][] containers, char c) {
for (int i = 0; i < containers.length; i++) {
for (int j = 0; j < containers[i].length; j++) {
if (containers[i][j] == c) {
containers[i][j] = 0;
}
}
}
}
private void removeWithForklift(char[][] containers, char c) {
boolean[][] isVisited = new boolean[containers.length][containers[0].length];
for (int i = 0; i < containers.length; i++) {
for (int j = 0; j < containers[i].length; j++) {
if ((i == 0 || j == 0 || i == containers.length - 1 || j == containers[i].length - 1)
&& !isVisited[i][j]) {
dfs(containers, i, j, c, isVisited);
}
}
}
for (int i = 0; i < containers.length; i++) {
for (int j = 0; j < containers[i].length; j++) {
if (containers[i][j] == 1) {
containers[i][j] = 0;
}
}
}
}
private void dfs(char[][] containers, int x, int y, char c, boolean[][] isVisited) {
if (x < 0 || y < 0 || x >= containers.length || y >= containers[x].length
|| isVisited[x][y]) {
return;
}
isVisited[x][y] = true;
if (containers[x][y] == c) {
containers[x][y] = 1;
return;
}
if(containers[x][y] != 0) return;
for (int d = 0; d < 4; d++) {
int nx = x + dx[d];
int ny = y + dy[d];
dfs(containers, nx, ny, c, isVisited);
}
}
}
'기타 > 코딩테스트' 카테고리의 다른 글
(코테) 프로그래머스_과제진행하기 (0) | 2025.06.15 |
---|---|
(코테) 프로그래머스_요격 시스템 *그레디 (0) | 2025.06.12 |
(코테) 백준_16236_아기 상어 *조건 기반 BFS + 시뮬레이션 + 우선순위 (1) | 2025.06.10 |
(코테) 백준_구간 합 구하기 4_1516 *누적합 (Prefix Sum) (1) | 2025.06.08 |
(코테) 백준_1516_게임개발 *위상정렬 (1) | 2025.06.04 |