백준 알고리즘 - 아기상어
문제의 여러 조건들이 있는데 큰틀에서는 먹이를 먹을 수 없을 때 까지 BFS를 돌린다. 하지만 곤란했던 조건은 아래 조건이다. 1. 거리가 같은 먹이의 경우 y, x 값이 작은 먹이를 먹는다. ex) 3 * 3 1 0 1 0 9 0 1 0 1 의 경우 거리 2의 먹이는 (0,0), (0,2), (2,0) , (2,2) 총 4개 거리가 모두 2인 경우 y값과 제일 작은 먹이는 (0,0) , (0,2) 총 2개 이 경우 x값이 제일 작은 먹이를 먹는다. 바로 (0,0)을 먹는다. 내가 시도한 방법. 현재 아기상어 사이즈에서 먹을 수 있는 모든 먹이를 거리 순으로 우선순위 큐에 넣는다. 거리가 제일 가까운 먹이들을 우선순위큐에서 꺼내면서 다시 리스트에 담는다. 거기서 y, x축이 제일 작은 먹이를 골라서 먹인다. import java.util.*; public class Main { static int[] dy = {-1, 0, 0, 1}; static int[] dx = {0, -1, 1, 0}; static int N; static Queue<Graph> queue = new LinkedList<>(); static class Pair implements Comparable<Pair>{ int y; int x; int distance; public Pair(int y, int x, int distance) { ...