본문 바로가기
백준/PS에서의 자바

int[] 활용하기

by lms0806 2022. 1. 7.
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

댓글