Problem Solving/BOJ
[백준, BOJ 2281] 데스노트 (java)
https://www.acmicpc.net/problem/2281 2281번: 데스노트 첫째 줄에 n(1 ≤ n ≤ 1,000), m(1 ≤ m ≤ 1,000)이 주어진다. m은 노트의 가로 칸의 개수(폭, 너비)이다. 다음 n개의 줄에는 각 사람의 이름의 길이가 노트에 적어야 할 순서대로 주어진다. 각 길이는 m www.acmicpc.net 메모리: 19,096 KB , 시간: 188 ms 사용 알고리즘: 다이나믹 프로그래밍 참고 https://velog.io/@bokiri409/BOJ-%EB%8D%B0%EC%8A%A4%EB%85%B8%ED%8A%B8-2281%EB%B2%88 [BOJ] 데스노트 - 2281번 🎃문제설명🧛사악한 라이토는 기발한 방법을 이용하여 L(애칭 섊)을 살해한 뒤 데스노트를 다시 ..
[백준, BOJ 19942] 다이어트 (java)
https://www.acmicpc.net/problem/19942 19942번: 다이어트 식재료 N개 중에서 몇 개를 선택해서 이들의 영양분(단백질, 탄수화물, 지방, 비타민)이 일정 이상이 되어야 한다. 아래 표에 제시된 6가지의 식재료 중에서 몇 개를 선택해서 이들의 영양분의 각 www.acmicpc.net 메모리: 37,444 KB , 시간: 368 ms 사용 알고리즘: 백트래킹, 브루트포스 알고리즘 import java.io.BufferedReader; import java.io.InputStreamReader; import java.util.ArrayList; import java.util.StringTokenizer; public class Main { static int N; // N :=..
[백준, BOJ 1720] 타일 코드 (java)
https://www.acmicpc.net/problem/1720 1720번: 타일 코드 2×N 크기의 넓은 판을 1×2 (또는 2×1) 크기와 2×2 크기의 타일로 채우려고 한다. 여러 가지 경우가 있을 수 있으므로, 각각을 하나의 코드로 대응시켜서 암호화에 이용하려고 한다. 그런데 문제가 www.acmicpc.net 메모리: 14,200 KB , 시간: 128 ms 사용 알고리즘: 다이나믹 프로그래밍 참고 https://lotuslee.tistory.com/129 [백준 1720번] 타일 코드 (java) 1720번: 타일 코드 2×N 크기의 넓은 판을 1×2 (또는 2×1) 크기와 2×2 크기의 타일로 채우려고 한다. 여러 가지 경우가 있을 수 있으므로, 각각을 하나의 코드로 대응시켜서 암호화에 이..
[백준, BOJ 27653] 최소 트리 분할 (java)
https://www.acmicpc.net/problem/27653 27653번: 최소 트리 분할 정점이 $N$개인 트리가 주어진다. 정점에는 $1$부터 $N$까지 번호가 붙어있다. 각 정점에는 가중치가 존재하는데, 초기에 모든 가중치는 $0$이다. 당신은 다음 연산을 트리에 반복하여 $1$ 이상 $N$ www.acmicpc.net 메모리: 69,668 KB , 시간: 732 ms 사용 알고리즘: 넓이 우선 탐색, 그래프 이론, 그래프 탐색 import java.io.BufferedReader; import java.io.InputStreamReader; import java.util.ArrayList; import java.util.LinkedList; import java.util.Queue; imp..
[백준, BOJ 2487] 섞기 수열 (java)
https://www.acmicpc.net/problem/2487 2487번: 섞기 수열 A1, A2, …, AN으로 표시된 N 개의 카드를 정해진 방법으로 섞고자 한다. 그 섞는 방법은 1에서 N까지의 숫자로 이루어진 수열로 표시된다. 이 수열을 섞기 수열이라 하자. 섞기는 현재 가지고 있는 www.acmicpc.net 메모리: 16,688 KB , 시간: 184 ms 사용 알고리즘: 순열 사이클 분할, 유클리드 호제법 import java.io.BufferedReader; import java.io.InputStreamReader; import java.util.HashSet; import java.util.Iterator; import java.util.StringTokenizer; public c..
[백준, BOJ 14499] 주사위 굴리기 (java)
https://www.acmicpc.net/problem/14499 14499번: 주사위 굴리기 첫째 줄에 지도의 세로 크기 N, 가로 크기 M (1 ≤ N, M ≤ 20), 주사위를 놓은 곳의 좌표 x, y(0 ≤ x ≤ N-1, 0 ≤ y ≤ M-1), 그리고 명령의 개수 K (1 ≤ K ≤ 1,000)가 주어진다. 둘째 줄부터 N개의 줄에 지 www.acmicpc.net 메모리: 16,308 KB , 시간: 172 ms 사용 알고리즘: 구현, 시뮬레이션 import java.io.BufferedReader; import java.io.InputStreamReader; import java.util.StringTokenizer; public class Main { public static void m..
[백준, BOJ 11265] 끝나지 않는 파티 (java)
https://www.acmicpc.net/problem/11265 11265번: 끝나지 않는 파티 입력의 첫 번째 줄에는 파티장의 크기 N(5 ≤ N ≤ 500)과 서비스를 요청한 손님의 수 M(1 ≤ M ≤ 10,000) 이 주어진다. 각각의 파티장은 1번부터 N번까지 번호가 붙여져 있다. 다음에는 N개의 줄에 걸 www.acmicpc.net 메모리: 26,508 KB , 시간: 456 ms 사용 알고리즘: 플로이드-워셜, 그래프 이론, 최단 경로 import java.io.BufferedReader; import java.io.InputStreamReader; import java.util.StringTokenizer; public class Main { public static void main(..
[백준, BOJ 1937] 욕심쟁이 판다 (java)
https://www.acmicpc.net/problem/1937 1937번: 욕심쟁이 판다 n × n의 크기의 대나무 숲이 있다. 욕심쟁이 판다는 어떤 지역에서 대나무를 먹기 시작한다. 그리고 그 곳의 대나무를 다 먹어 치우면 상, 하, 좌, 우 중 한 곳으로 이동을 한다. 그리고 또 그곳에 www.acmicpc.net 메모리: 50,636 KB , 시간: 812 ms 사용 알고리즘: 다이나믹 프로그래밍, 그래프 이론, 그래프 탐색 import java.io.BufferedReader; import java.io.InputStreamReader; import java.util.PriorityQueue; import java.util.StringTokenizer; public class Main { st..
[백준, BOJ 10986] 나머지 합 (java)
https://www.acmicpc.net/problem/10986 10986번: 나머지 합 수 N개 A1, A2, ..., AN이 주어진다. 이때, 연속된 부분 구간의 합이 M으로 나누어 떨어지는 구간의 개수를 구하는 프로그램을 작성하시오. 즉, Ai + ... + Aj (i ≤ j) 의 합이 M으로 나누어 떨어지는 (i, j) www.acmicpc.net 메모리: 120,568 KB , 시간: 516 ms 사용 알고리즘: 수학, 누적 합 import java.io.BufferedReader; import java.io.InputStreamReader; import java.util.StringTokenizer; public class Main { public static void main(String..
[백준, BOJ 20437] 문자열 게임 2 (java)
https://www.acmicpc.net/problem/20437 20437번: 문자열 게임 2 첫 번째 문자열에서 3번에서 구한 문자열은 aqua, 4번에서 구한 문자열은 raquator이다. 두 번째 문자열에서는 어떤 문자가 5개 포함된 문자열을 찾을 수 없으므로 -1을 출력한다. www.acmicpc.net 메모리: 46,080 KB , 시간: 672 ms 사용 알고리즘: 투 포인터 가장 짧은 문자열(3번)은 투 포인터로 풀고 가장 긴 문자열(4번)은 큐를 사용해 풀었다. 더 시간이 짧게 걸린 답을 보니 완탐으로 풀었다. 흠~ n이 10,000이라 완탐으로 풀어도 된다는 건 이해하겠는데(100,000,000이니까) 큐를 써서 풀었을 때 더 오래 걸리는 이유는 잘 모르겠다,,, 아마 완탐으로 풀면 ..