본문 바로가기

알고리즘

(12)
백준 별찍기-2448 www.acmicpc.net/problem/2448 2448번: 별 찍기 - 11 첫째 줄에 N이 주어진다. N은 항상 3×2k 수이다. (3, 6, 12, 24, 48, ...) (0 ≤ k ≤ 10, k는 정수) www.acmicpc.net 이런 구조라고 생각하고 분할 정복 알고리즘을 사용하면 답은 풀린다. arraylist를 사용했는데 2차원 배열을 사용해도 풀릴것 같다. package BAEKJOON; import java.util.ArrayList; import java.util.Scanner; public class TriangleStar_2448 { static int n; public static String makeSpace(int n) { String r = ""; for (int i ..
백준 토마토-7576 www.acmicpc.net/problem/7576 7576번: 토마토 첫 줄에는 상자의 크기를 나타내는 두 정수 M,N이 주어진다. M은 상자의 가로 칸의 수, N은 상자의 세로 칸의 수를 나타낸다. 단, 2 ≤ M,N ≤ 1,000 이다. 둘째 줄부터는 하나의 상자에 저장된 토마토 www.acmicpc.net 토마토를 익히는 문제인데 고등부 문제라고한다... 요즘 고등학생들은 똑똑하구나.. BFS 방식으로 queue에 넣는 것은 같은데 '회차'가 필요하므로 그 회차에 해당하는 것들을 arraylist로 옮겨 담아서 한번에 처리하고 arraylist가 비면 회차를 증가시키고 queue에 서 꺼내오는 방식을 사용했다. package BAEKJOON; import java.awt.Point; import ..
백준 Z-1074 www.acmicpc.net/problem/1074 1074번: Z 한수는 2차원 배열 (항상 2^N * 2^N 크기이다)을 Z모양으로 탐색하려고 한다. 예를 들어, 2*2배열을 왼쪽 위칸, 오른쪽 위칸, 왼쪽 아래칸, 오른쪽 아래칸 순서대로 방문하면 Z모양이다. 만약, 2차원 www.acmicpc.net 단순 분할 정복 알고리즘을 사용했다 package BAEKJOON; import java.util.Scanner; public class TheZ_1074 { static long r; static long c; public static int where(long k, long y, long x) { if ((k / 2 + y > r) && (k / 2 + x > c)) { return 0; } els..
백준 설탕 배달-2839 www.acmicpc.net/problem/2839 2839번: 설탕 배달 상근이는 요즘 설탕공장에서 설탕을 배달하고 있다. 상근이는 지금 사탕가게에 설탕을 정확하게 N킬로그램을 배달해야 한다. 설탕공장에서 만드는 설탕은 봉지에 담겨져 있다. 봉지는 3킬로그 www.acmicpc.net 그리디 알고리즘을 사용하면 되지만 거스름돈 문제처럼 사용하면 해결되지 않는 경우도 있다. 5kg 봉지의 개수를 최대로 설정해 주고 하나씩 줄여가면서 조건에 맞추어 답을 계산했다. /* * 문제: https://www.acmicpc.net/problem/2839 * 설탕을 배달하는데 정확하게 Nkg을 배달해야 한다. 그리고 최대한 적은 봉지를 배달한다. * 5kg, 3kg 단위가 있고 (3
백준 별 찍기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(..