package 운동; import java.util.*; public class Main { public static final int INF = (int) 1e9; public static int n, m; public static int[][] graph; public static void main(String[] args) { Scanner scan = new Scanner(System.in); n = scan.nextInt(); m = scan.nextInt(); graph = new int[n + 1][n + 1]; // 최단 거리 테이블 초기화 for (int i = 0; i < n + 1; i++) { Arrays.fill(graph[i], INF); } // 자기 자신에서 자기 자신으로 가..
풀이 int[100][2] 배열을 준비해서, int[i][0]에는 i구슬보다 가벼운 구슬, int[i][1]에는 i 구슬보다 무거운 구슬의 개수를 저장하도록 한다. n회 반복문을 돌며 현재 구슬의 무거운 구슬 또는 가벼운 구슬의 개수가 (n + 1) / 2개 이상일 때 그 구슬은 가운데의 구슬에 들어갈 수 없음! package 구슬찾기; import java.util.*; public class Main { static boolean[] visit; static int[][] dp = new int[100][2]; static ArrayList[] list; static void DFS(int current, int start) { visit[current] = true; for(int next : li..
풀이 출발 도시와 도착 도시를 연결하는 노선이 하나가 아닐 수도 있다. 이말은 즉슨 만약 1 4 1과 1 4 2 가 입력으로 들어오면 1 4 1 가 입력이 되야한다. 문제도 플로이드이기 때문에 플로이드 와샬 알고리즘을 고대로 사용 package 플로이드; import java.util.*; public class Main { public static final int INF = (int)1e9; //도시 : 노드의 개수 (N) //버스 : 간선의 개수 (M) public static int n, m; public static int[][] graph = new int[101][101]; public static void main(String[] args) { Scanner scan = new Scanne..
import java.util.*; class Main { private static int N; //수빈이 위치 private static int K; //동생 위치 private static boolean[] isVisited = new boolean[100001]; private static int answer = Integer.MAX_VALUE; public static void main(String[] args) { Scanner sc = new Scanner(System.in); N = sc.nextInt(); K = sc.nextInt(); bfs(); System.out.println(answer); sc.close(); } static void bfs() { PriorityQueue qu..