목록알고리즘 (266)
Dev.baelanche
그래프 컴포넌트 중 가장 큰 컴포넌트의 크기를 구하는 간단한 문제이다. public class Main { static int n; static int m; static int a[][]; public static void main(String[] args) { Scanner sc = new Scanner(System.in); n = sc.nextInt(); m = sc.nextInt(); a = new int[n+1][m+1]; int k = sc.nextInt(); int max = 0; while(k-->0) a[sc.nextInt()][sc.nextInt()] = 1; for(int i=1; i
DFS, BFS 를 이용하여 푸는 기본 문제이다. 풀이 1. n*m 의 배열을 만들어 0 또는 1을 대입한다. 2. 배열의 값이 1일때 상하좌우로 1이 있는지 탐색한다. 3. 탐색한 인덱스에 0을 대입한다. 4. 가로 n, 세로 m 은 배열에서 a[m][n] 이므로 실수하지 말자. public class Main { static int mx[] = {-1, 0, 1, 0}; static int my[] = {0, 1, 0, -1}; static int a[][]; static int m; static int n; public static void main(String[] args) { Scanner sc = new Scanner(System.in); int t = sc.nextInt(); while(t-..
public class Main { int adj[][]; boolean visited[]; int n; Main(int n) { this.n = n; adj = new int[n+1][n+1]; visited = new boolean[n+1]; visited[0] = true; } public void addEdge(int u, int v) { adj[u][v] = v; adj[v][u] = u; } public void dfs() { for(int i=1; i
박스의 가로, 세로 길이가 3, 4 일때 크기 5의 성냥도 들어가는걸로 봐서 성냥을 대각선으로 넣는것도 허용된다. 대각선의 길이가 박스내부의 길이 중 가장 크니 피타고라스 공식으로 풀면 된다. public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int n = sc.nextInt(); int w = sc.nextInt(); int h = sc.nextInt(); while(n-->0) { int t = sc.nextInt(); int box = (int)Math.sqrt(w*w + h*h); if(t
큐는 인덱스가 없기 때문에 문서를 담을 큐와 우선순위를 담을 배열을 만들어 풀었다. m 번째로 인쇄되는 문서는 this 라는 이름으로 지었다. 큐의 front 가 우선순위가 제일 높으면 pop 하고 그렇지 않으면 push, pop 을 한다. 동시에 동적배열에서도 우선순위가 제일 높으면 remove 하고 그렇지 않으면 add(get(0)), remove(0) 한다. 큐의 front 가 우선순위 최대값이어서 성공적으로 pop 되었을때만 카운트를 늘렸다. 직접 구현한 큐는 제외하고 올리겠다. (큐 소스는 여기에) public static void main(String[] args) { Scanner sc = new Scanner(System.in); Main q = new Main(); int t = sc.n..
큐로 구현하는 문제이다. 1부터 n 까지 큐에 담고 - 첫번째 케이스에 pop 한다. - 두번째 케이스에 pop 하고 pop 된 수를 push 한다. 위 두가지 케이스를 반복하여 큐에 노드가 1개 남을때 출력해주면 된다. 직접 구현한 큐를 썼다. public class Main { Node head; Node tail; int size = 0; class Node { Node prev; Object value; Node(Object value) { this.value = value; } } public void push(Object value) { Node node = new Node(value); if(size == 0) { head = node; tail = node; } tail.prev = nod..
자료구조 중 선입선출의 특징을 가진 큐 문제다. 큐를 문제에 맞게 직접 구현하여 풀었다. public class Main { Node head; Node tail; int size = 0; class Node { Node prev; Object value; Node(Object value) { this.value = value; } } public void push(Object value) { Node node = new Node(value); if(size == 0) { head = node; tail = node; } tail.prev = node; tail = node; size++; } public Object pop() { if(size == 0) return -1; Node temp = hea..