본문 바로가기

전체 글

(19)
백준 별 찍기10-2447 www.acmicpc.net/problem/2447 2447번: 별 찍기 - 10 재귀적인 패턴으로 별을 찍어 보자. N이 3의 거듭제곱(3, 9, 27, ...)이라고 할 때, 크기 N의 패턴은 N×N 정사각형 모양이다. 크기 3의 패턴은 가운데에 공백이 있고, 가운데를 제외한 모든 칸에 별이 www.acmicpc.net 분할 정복 알고리즘ㅇ르 사용하고 시작 할 때 ' ' 으로 초기화 시켜주고 StringBuffer를 사용해준다. 일일히 조건식 비교해가면서 넣으면 시간이 더 소모된다. package BAEKJOON; import java.util.Scanner; public class SquareStar_2447 { public static void partition(char arr[][], int n..
백준 쿼드트리-1992 www.acmicpc.net/problem/1992 1992번: 쿼드트리 첫째 줄에는 영상의 크기를 나타내는 숫자 N 이 주어진다. N 은 언제나 2의 제곱수로 주어지며, 1≤N ≤64의 범위를 가진다. 두 번째 줄부터는 길이 N 의 문자열이 N 개 들어온다. 각 문자열은 0 또는 www.acmicpc.net 분할 정복 알고리즘을 사용하면 된다. package BAEKJOON; import java.util.Scanner; public class QuadTree_1992 { static int[][] page; public static int isSame(int n, int x, int y) { int result = page[x][y]; for (int i = 0; i < n; i++) { for (i..
백준 회의실배정-1931 www.acmicpc.net/problem/1931 1931번: 회의실배정 (1,4), (5,7), (8,11), (12,14) 를 이용할 수 있다. www.acmicpc.net 입력 순서가 정해지지 않았으므로 순서를 정렬해 준 뒤 그리디 알고리즘을 사용해서 제일 빨리 끝나는 시간을 선택해주면 된다. package BAEKJOON; import java.util.Scanner; public class MeetingRoomAssignment_1931 { public static int compare(int[][] arr, int i, int j) { if (arr[i][1] arr[j][1]) { return 1; } ..
백준 미로탐색-2178 www.acmicpc.net/problem/2178 2178번: 미로 탐색 첫째 줄에 두 정수 N, M(2 ≤ N, M ≤ 100)이 주어진다. 다음 N개의 줄에는 M개의 정수로 미로가 주어진다. 각각의 수들은 붙어서 입력으로 주어진다. www.acmicpc.net 미로 내에서는 상하좌우 모두 움직일 수 있다는 점을 기억해야한다. BFS 등 탐색 알고리즘으로 해결 가능하다. package BAEKJOON; import java.awt.Point; import java.util.ArrayList; import java.util.LinkedList; import java.util.Scanner; public class MazeNavigation_2178 { public static void findPath(..
백준 DFSBFS-1260 www.acmicpc.net/problem/1260 1260번: DFS와 BFS 첫째 줄에 정점의 개수 N(1 ≤ N ≤ 1,000), 간선의 개수 M(1 ≤ M ≤ 10,000), 탐색을 시작할 정점의 번호 V가 주어진다. 다음 M개의 줄에는 간선이 연결하는 두 정점의 번호가 주어진다. 어떤 두 정점 사 www.acmicpc.net DFS 알고리즘과 BFS 알고리즘을 구현할 수 있는지 점검해 볼 수 있는 좋은 문제이다. package BAEKJOON; import java.util.ArrayList; import java.util.Collections; import java.util.LinkedList; import java.util.Scanner; import java.util.Stack; publi..
백준 종이의 개수-1780 www.acmicpc.net/problem/1780 1780번: 종이의 개수 N×N크기의 행렬로 표현되는 종이가 있다. 종이의 각 칸에는 -1, 0, 1의 세 값 중 하나가 저장되어 있다. 우리는 이 행렬을 적절한 크기로 자르려고 하는데, 이때 다음의 규칙에 따라 자르려고 한다. www.acmicpc.net 분할정복 알고리즘을 사용했다. 전체 영역을 검사한 뒤 전체가 같지 않으면 영역을 1/9로 나누면서 전체가 같으면 빠져나가고 다르면 그 내부를 9개로 나눠서 다시 검사하고... 를 반복했다. package BAEKJOON; import java.util.Scanner; public class CountOfPaper_1780 { static int[][] paper = null; static int[] ..
백준 단지번호붙히기-2667 www.acmicpc.net/problem/2667 2667번: 단지번호붙이기 과 같이 정사각형 모양의 지도가 있다. 1은 집이 있는 곳을, 0은 집이 없는 곳을 나타낸다. 철수는 이 지도를 가지고 연결된 집들의 모임인 단지를 정의하고, 단지에 번호를 붙이려 한다. www.acmicpc.net DFS든 BFS든 문제는 해결 된다. 지나온 점들은 0으로 만들어주면서 다음 시작점을 찾도록 했다. package BAEKJOON; import java.awt.Point; import java.util.ArrayList; import java.util.Collections; import java.util.LinkedList; import java.util.Scanner; public class ComplexNum..
백준 동전0-11047 www.acmicpc.net/problem/11047 11047번: 동전 0 첫째 줄에 N과 K가 주어진다. (1 ≤ N ≤ 10, 1 ≤ K ≤ 100,000,000) 둘째 줄부터 N개의 줄에 동전의 가치 Ai가 오름차순으로 주어진다. (1 ≤ Ai ≤ 1,000,000, A1 = 1, i ≥ 2인 경우에 Ai는 Ai-1의 배수) www.acmicpc.net 그리디 알고리즘으로 쉽게 해결된다. package BAEKJOON; import java.util.Scanner; public class Coin0_11047 { static int[] coins; public static int getCoinCount(int k) { int r = 0; // 이분탐색 써서 시작점 잡아도 좋겠다. for (int ..