본문 바로가기

Algorithm/BOJ

(101)
[BOJ-2839][DP] 설탕 배달 - Java 문제 바로가기 2839번: 설탕 배달 상근이는 요즘 설탕공장에서 설탕을 배달하고 있다. 상근이는 지금 사탕가게에 설탕을 정확하게 N킬로그램을 배달해야 한다. 설탕공장에서 만드는 설탕은 봉지에 담겨져 있다. 봉지는 3킬로그 www.acmicpc.net 간단한 DP 문제입니다.. 하지만 간단히는 못 풀었습니다 DP 할줄 모르니깐 import java.io.*; import java.util.*; public class Main { static int N; public static void main(String[] args) throws Exception { input(); solve(); } static int solve() { int[] dp = new int[N + 1]; Arrays.fill(dp, 1..
[BOJ-10868][세그먼트 트리] 최솟값 - Java 문제 바로가기 10868번: 최솟값 N(1 ≤ N ≤ 100,000)개의 정수들이 있을 때, a번째 정수부터 b번째 정수까지 중에서 제일 작은 정수를 찾는 것은 어려운 일이 아니다. 하지만 이와 같은 a, b의 쌍이 M(1 ≤ M ≤ 100,000)개 주어졌을 때는 www.acmicpc.net 또 오랜만입니다... 입사하고 바빠서 못한건 사실 핑계고 좀 놀았습니다. 미드도 보고 게임도 하고... 그럴수도 있져 뭐 ㅎ.ㅎ 이 문제도 세그먼트 트리를 이용해서 푸는 문제입니다. 먼젓번에 푼 문제처럼 구간합이 아니라 최솟값을 각 노드에 저장하면 됩니다. 사실 걍 저번에 푼거 열심히 보고 풀었습니다 ;; import java.io.BufferedReader; import java.io.IOException; im..
[BOJ-17609][그리디] 회문 - Java 문제 바로가기 17609번: 회문 각 문자열이 회문인지, 유사 회문인지, 둘 모두 해당되지 않는지를 판단하여 회문이면 0, 유사 회문이면 1, 둘 모두 아니면 2를 순서대로 한 줄에 하나씩 출력한다. www.acmicpc.net 오랜만입니다!! 합격 연락받고 방 구하고 짐싸고 이사하고 출근하고 한다고 정신없는 연말연초를 보내고 오랜만에 노트북 앞에 앉아 보았습니다. 실버1이길래 스근할 줄 알았는데 생각보다 쪼끔 까다로웠습니다 ^^;;;; import java.io.*; import java.util.*; public class Main { public static void main(String[] args) throws Exception { input(); } public static int check(..
[BOJ-17141][시뮬레이션/BFS/조합] 연구소 2 - Java 문제 바로가기 17141번: 연구소 2 인체에 치명적인 바이러스를 연구하던 연구소에 승원이가 침입했고, 바이러스를 유출하려고 한다. 승원이는 연구소의 특정 위치에 바이러스 M개를 놓을 것이고, 승원이의 신호와 동시에 바이 www.acmicpc.net 예전에 풀었던 연구소 시리즈 문제입니다. 왜 3을 먼저 풀었지 ;;; 3보다 조건이 덜 까다로운 문제임니다 ^^;; import java.io.*; import java.util.*; public class Main { static class Dir{ int y, x; Dir(int y, int x){ this.y = y; this.x = x; } } static int N, M, answer = Integer.MAX_VALUE; static int[][] ..
[BOJ-1254][완전 탐색] 팰린드롬 만들기 - Java 문제 바로가기 1254번: 팰린드롬 만들기 동호와 규완이는 212호에서 문자열에 대해 공부하고 있다. 규완이는 팰린드롬을 엄청나게 좋아한다. 팰린드롬이란 앞에서부터 읽으나 뒤에서부터 읽으나 같게 읽히는 문자열을 말한다. 동호는 www.acmicpc.net 입력받은 문자열 뒤에 문자열을 추가해서 팰린드롬을 만드는 문제입니다. 맨 뒤에만 붙이면 되기 때문에 그리 어렵지 않게 풀 수 있습니다. import java.io.*; import java.util.*; public class Main { public static void main(String[] args) throws Exception { System.out.println(solve(input())); } public static int solve(S..
[BOJ-2357][세그먼트 트리] 최솟값과 최댓값 - Java 문제 바로가기 2357번: 최솟값과 최댓값 N(1 ≤ N ≤ 100,000)개의 정수들이 있을 때, a번째 정수부터 b번째 정수까지 중에서 제일 작은 정수, 또는 제일 큰 정수를 찾는 것은 어려운 일이 아니다. 하지만 이와 같은 a, b의 쌍이 M(1 ≤ M ≤ 100 www.acmicpc.net 세그먼트 트리를 활용해서 풀 수 있는 문제입니다. 아직 혼자 다 짜는건 어렵네유 ㅜ 여러 번 짜봐야겠슴니다 import java.io.*; import java.util.*; public class Main { static int N, M; static int[] list, maxTree, minTree; public static void main(String[] args) throws Exception { i..
[BOJ-1057][구현/완전 탐색] 토너먼트 - Java 문제 바로가기 1057번: 토너먼트 김지민은 N명이 참가하는 스타 토너먼트에 진출했다. 토너먼트는 다음과 같이 진행된다. 일단 N명의 참가자는 번호가 1번부터 N번까지 배정받는다. 그러고 난 후에 서로 인접한 번호끼리 스타를 www.acmicpc.net 아주 간단한 구현 문제입니다. 인풋 사이즈가 그리 크지 않으므로 완전 탐색으로 답을 구할 수 있습니다. import java.io.*; import java.util.*; public class Main { static int N, K, L; public static void main(String[] args) throws Exception { input(); System.out.println(solve()); } public static int solv..
[BOJ-2042][세그먼트 트리] 구간 합 구하기 - Java 문제 바로가기 2042번: 구간 합 구하기 첫째 줄에 수의 개수 N(1 ≤ N ≤ 1,000,000)과 M(1 ≤ M ≤ 10,000), K(1 ≤ K ≤ 10,000) 가 주어진다. M은 수의 변경이 일어나는 횟수이고, K는 구간의 합을 구하는 횟수이다. 그리고 둘째 줄부터 N+1번째 줄 www.acmicpc.net 세그먼트 트리를 공부하고 풀기 좋은 첫 문제입니다. 그래도 아직 어렵네여 ㅜ import java.io.*; import java.util.*; class SegmentTree { long[] tree; SegmentTree(int N, long[] list) { tree = new long[N*4]; init(0, N-1, 1, list); } /** * @param start - 시작 ..