728x90
반응형
bfs나 dfs 등 ArrayList나 Queue에 x좌표, y좌표, 크기, 길이 등 여러 가지 값들을 한번에 넣을 때 보통
class Node{
int x, y, price;
}
이런 식으로 사용하게 됩니다.
그러나 매번 문제를 풀 때 적어두기 귀찮고, 입력할 값들의 수가 변경할 때, 또 선언해 줘야 하는 귀찮은 문제가 발생하게 됩니다.
그 때 이 방식을 이용하면 간단하게 문제를 풀 수 있습니다.
Queue<int[]> queue = new LinkedList<>();
queue.add(new int[] {x, y, 0});
이럴 경우
queue.poll()을 하게 되면
int[]의 형태로 나오게 되고
int[] now = queue.poll();
int nx = now[0];
int ny = now[1];
int price = now[2];
이런식으로 주어져서 문제를 풀 수 있습니다.
public static void bfs(){
Queue<int[]> queue = new LinkedList<>();
queue.add(new int[] {x, y, 0});
visited[x][y] = true;
while(!queue.isEmpty()){
int[] now = queue.poll():
for(int i = 0; i < 4; i++){
int nx = now[0] + dx[i];
int ny = now[1] + dy[i];
if(nx >= 0 && nx < n && ny >= 0 && ny < m){
if(!visited[nx][ny]){
queue.add(new int[] {nx, ny, now[2] + 1});
visited[nx][ny] = true;
}
}
}
}
}
이런식으로 작성 가능합니다.
728x90
반응형
'백준 > PS에서의 자바' 카테고리의 다른 글
메모리 제한 풀기 (0) | 2023.02.09 |
---|---|
[JAVA] PS에서의 Point (0) | 2021.11.01 |
[JAVA] 출력 관련(백준) (2) | 2021.10.28 |
댓글