import java.io.*; import java.util.LinkedList; import java.util.Queue; import java.util.StringTokenizer; public class Main { static boolean[][] map; static boolean[] visited; static int N, M, V; static StringBuilder sb = new StringBuilder(); static Queue queue = new LinkedList(); public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamRea..
1012번: 유기농 배추 차세대 영농인 한나는 강원도 고랭지에서 유기농 배추를 재배하기로 하였다. 농약을 쓰지 않고 배추를 재배하려면 배추를 해충으로부터 보호하는 것이 중요하기 때문에, 한나는 해충 방지에 www.acmicpc.net import java.io.*; import java.util.StringTokenizer; public class Main { static boolean[][] field; //밭 static int X, Y; //밭의 가로, 세로 static int[] dirX = {-1, 1, 0, 0}; static int[] dirY = {0, 0, -1, 1}; public static void main(String[] args) throws IOException { Buffer..
1926번: 그림 어떤 큰 도화지에 그림이 그려져 있을 때, 그 그림의 개수와, 그 그림 중 넓이가 가장 넓은 것의 넓이를 출력하여라. 단, 그림이라는 것은 1로 연결된 것을 한 그림이라고 정의하자. 가로나 세로 www.acmicpc.net import java.io.*; import java.util.StringTokenizer; public class Main { static int[][] canvas; //그림 static int N, M; //노드 수, 간선 수 public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in));..
2606번: 바이러스 첫째 줄에는 컴퓨터의 수가 주어진다. 컴퓨터의 수는 100 이하인 양의 정수이고 각 컴퓨터에는 1번 부터 차례대로 번호가 매겨진다. 둘째 줄에는 네트워크 상에서 직접 연결되어 있는 컴퓨터 쌍 www.acmicpc.net import java.io.*; import java.util.StringTokenizer; public class Main { static boolean[][] graph; //그래프의 = 연결 상태를 알려줌 static boolean[] visited; //DFS로 탐색 할 때 이미 방문한 노드를 건너뛰기 위해 기록 static int N, M; // 노드 개수 & 간선 개수 static int count; //바이러스에 걸리는 컴퓨터의 수 = DFS로 접근한 노..
DB의 성능을 높이기 위한 핵심 메모리가 디스크보다 빠르기 때문에 데이터베이스에서는 디스크 접근 횟수를 최대한 줄이고 최대한 메모리에 있는 데이터로 요청을 처리하는 것이 좋다. 즉, 메모리 캐시 히트율을 높이는 것이다. 데이터베이스에서는 쓰기 작업 시에도 디스크에 바로 쓰는 것이 아닌 메모리에 써둔 후 일괄적으로 디스크에 저장한다. 이때 메모리에 데이터를 써둔 상태에서 서버가 다운되면 해당 데이터가 유실되는 것이 아닌가 걱정할 수 있다. 하지만 WAL(Write Ahead Log) 방식을 사용해서 디스크에 데이터를 쓰는 것이 아닌 쿼리 로그를 미리 저장해두고 데이터가 유실되면 해당 로그를 통해 쿼리를 실행시켜 데이터의 저장을 보장할 수 있다. 인덱스 인덱스는 정렬된 자료구조를 가지고 빠르게 탐색 범위를 ..
정규화란? 간단하게 표현하자면, 중복의 최소화를 통해 데이터의 일관성과 변경의 효율성을 높이는 것이다. 하나의 테이블에서 중복으로 존재하는 데이터를 별도의 테이블로 분리해서 한 곳에서 데이터를 관리하여 데이터의 변경이 일어났을 때 하나의 원본 데이터만 수정하면 되기 때문에 효율적이다. 반정규화 반정규화는 정규화와 반대로 중복을 허용하고 데이터의 정합성을 유지하기가 힘들지만 데이터를 참조 없이 읽을 수 있다. 즉, 데이터가 자주 변경된다면 정규화를 하는 것이 좋고, 변경할 일이 없는 데이터의 경우 반정규화가 더 좋을 수 있다. ** 예를 들어 히스토리성 데이터는 주로 읽기 작업을 많이 하고, 변경을 하지 않기 때문에 반정규화가 더 유리하다. 정규화 시 고려사항 조회 빈도와 데이터의 변경 빈도를 고려해보아야..