https://school.programmers.co.kr/learn/courses/30/lessons/81302
import java.util.*;
/**
테스트 1 〉 통과 (8.41ms, 89.2MB)
테스트 2 〉 통과 (7.23ms, 86.9MB)
테스트 3 〉 통과 (8.58ms, 92.2MB)
테스트 4 〉 통과 (8.04ms, 86.9MB)
테스트 5 〉 통과 (9.12ms, 84.4MB)
테스트 6 〉 통과 (13.46ms, 76.7MB)
테스트 7 〉 통과 (7.15ms, 87.2MB)
테스트 8 〉 통과 (7.34ms, 81.1MB)
테스트 9 〉 통과 (10.70ms, 90.2MB)
테스트 10 〉 통과 (9.32ms, 84.1MB)
테스트 11 〉 통과 (8.33ms, 81.3MB)
테스트 12 〉 통과 (9.85ms, 72.7MB)
테스트 13 〉 통과 (10.36ms, 79.9MB)
테스트 14 〉 통과 (6.95ms, 79.9MB)
테스트 15 〉 통과 (9.31ms, 75.7MB)
테스트 16 〉 통과 (7.38ms, 81.3MB)
테스트 17 〉 통과 (8.24ms, 83.1MB)
테스트 18 〉 통과 (11.41ms, 90.3MB)
테스트 19 〉 통과 (12.52ms, 76.5MB)
테스트 20 〉 통과 (16.39ms, 92.8MB)
테스트 21 〉 통과 (9.73ms, 85.1MB)
테스트 22 〉 통과 (10.66ms, 72.7MB)
테스트 23 〉 통과 (0.08ms, 72.2MB)
테스트 24 〉 통과 (10.36ms, 94.8MB)
테스트 25 〉 통과 (0.05ms, 86.5MB)
테스트 26 〉 통과 (0.08ms, 84.2MB)
테스트 27 〉 통과 (10.00ms, 83.8MB)
테스트 28 〉 통과 (0.15ms, 73.7MB)
테스트 29 〉 통과 (10.99ms, 85.6MB)
테스트 30 〉 통과 (10.33ms, 73.8MB)
테스트 31 〉 통과 (8.54ms, 91.8MB)
**/
class Solution {
public static int[] dx = {-1, 0, 1, 0}, dy = {0, 1, 0, -1};
public char[][] arr = new char[5][5];
public static boolean isInRange(int x, int y) {
return 0 <= x && x< 5 && 0 <= y && y < 5;
}
public List<Integer> solution(String[][] places) {
List<Integer> ans = new ArrayList<>();
testcase : for(int t =0; t< places.length; t++) {
for(int i=0;i<5;i++) {
arr[i] = places[t][i].toCharArray();
}
for(int i=0;i<5;i++) {
for(int j=0;j<5;j++) {
if(arr[i][j] == 'P') {
// 거리 체크
Queue<int[]> check = new ArrayDeque<>();
for(int idx=0;idx<4;idx++) {
int x = i+dx[idx], y = j+dy[idx];
if(isInRange(x, y) && arr[x][y] == 'P') {
System.out.println(x+" "+y);
ans.add(0); continue testcase;
}
else if(isInRange(x, y) && arr[x][y] == 'O') {
check.add(new int[] {x, y, idx});
}
}
while(!check.isEmpty()) {
int[] loc = check.poll();
for(int idx=0;idx<4; idx++) {
if(idx == 0 && loc[2] == 2) {
continue;
}
if(idx == 2 && loc[2] == 0) {
continue;
}
if(idx == 1 && loc[2] == 3) {
continue;
}
if(idx == 3 && loc[2] == 1) {
continue;
}
int x = loc[0]+dx[idx], y = loc[1]+dy[idx];
if(isInRange(x, y) && arr[x][y] == 'P') {
System.out.println(x+" "+y);
ans.add(0); continue testcase;
}
}
}
}
}
}
ans.add(1);
}
return ans;
}
}
'Algorithm' 카테고리의 다른 글
P159993_미로탈출.java (0) | 2025.05.04 |
---|---|
P178870_연속된부분수열의합.java (0) | 2025.04.28 |
[programmers] 충돌위험찾기_340211 java (0) | 2025.04.07 |
[programmers] 호텔 대실_155651 java (0) | 2025.03.31 |
[boj] 로봇 조종하기_2169 java (0) | 2025.03.19 |