백준
[백준, BOJ 12605] 단어순서 뒤집기 (java)
https://www.acmicpc.net/problem/12605메모리: 14,168KB , 시간: 96 ms사용 알고리즘: 자료 구조, 파싱, 스택, 문자열import java.io.BufferedReader;import java.io.InputStreamReader;import java.util.Stack;import java.util.StringTokenizer;public class Main { public static void main(String[] args) throws Exception{ BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); StringTokenizer st; ..
[백준, BOJ 27434] 팩토리얼 3 (java)
https://www.acmicpc.net/problem/27434메모리: 393,188 KB , 시간: 2,960 ms사용 알고리즘: 큰 수 연산, 사칙연산, 수학Java에서는 long 타입으로도 오버 플로우가 발생하기 때문에, 기본 자료형을 사용할 수 없다.때문에 BigInteger라는 것을 사용해야 한다. BigInteger에서 곱셈 연산을 하기 위해서는 BigInteger 객체의 multiply라는 메소드를 사용해야 하고,이 메소드는 파라미터로 곱하고자 하는 수를 나타내는 BigInteger 객체를 받는다. 때문에 $N!$을 계산하기 위해 N번의 BigInteger 객체를 생성하고 곱하는 과정에서 시간초과가 난다.시간초과를 해결하기 위해서는 BigInteger 생성 횟수를 줄여야 하고,분할 정복을..
[백준, BOJ 7795] 먹을 것인가 먹힐 것인가 (java)
https://www.acmicpc.net/problem/7795메모리: 38740 KB , 시간: 384 ms사용 알고리즘: 정렬import java.io.BufferedReader;import java.io.InputStreamReader;import java.util.Arrays;import java.util.StringTokenizer;public class Main { public static void main(String[] args) throws Exception{ BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); StringTokenizer st; StringBuil..
[백준, BOJ 10773] 제로 (java)
https://www.acmicpc.net/problem/10773메모리: 23,064 KB , 시간: 200 ms사용 알고리즘: 자료 구조, 구현, 스택import java.io.BufferedReader;import java.io.InputStreamReader;import java.util.Stack;public class Main { public static void main(String[] args) throws Exception{ BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); int K = Integer.parseInt(br.readLine()); // 재민이가 부르..
[백준, BOJ 2607] 비슷한 단어 (java)
https://www.acmicpc.net/problem/2607메모리: 14,132 KB , 시간: 100 ms사용 알고리즘: 구현, 문자열import java.io.BufferedReader;import java.io.InputStreamReader;public class Main { public static void main(String[] args) throws Exception{ BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); int n = Integer.parseInt(br.readLine()); // 기준이 되는 문자열 char[] first = br.r..
[백준, BOJ 13414] 수강신청 (java)
https://www.acmicpc.net/problem/13414메모리: 72,148 KB , 시간: 712 ms사용 알고리즘: 자료 구조, 해시를 사용한 집합과 맵, 구현수강신청을 한 순서대로 입력을 받으며학번을 key 값으로 같은 학번이 나온 횟수를 value로 Map에 넣어준다. 다시 한번 수강신청을 한 순서대로 학번을 보며map에서 학번에 해당하는 key값을 가진 value를 1씩 줄여준다.만약 value가 이미 1이라면, 해당 학번이 마지막으로 수강신청 버튼을 누른 것이므로답으로 출력해준다.import java.io.BufferedReader;import java.io.InputStreamReader;import java.util.*;public class Main { public sta..
[백준, BOJ 14950] 정복자 (java)
https://www.acmicpc.net/problem/14950메모리: 26,704 KB , 시간: 376 ms사용 알고리즘: 그래프 이론, 최소 스패닝 트리처음에 다익스트라로 풀었다가, 알고리즘 분류를 보고 크루스칼 알고리즘으로도 풀 수 있겠다고 알게 돼서 다시 크루스칼로 풀었다...알고리즘 며칠 안 했다고 이전에는 당연히 크루스칼로 풀었을 문제를 다익스트라로 풀었네,,import java.io.BufferedReader;import java.io.InputStreamReader;import java.util.PriorityQueue;import java.util.StringTokenizer;public class Main { static int[] parent; public static..
[백준, BOJ 9024] 두 수의 합 (java)
https://www.acmicpc.net/problem/9024메모리: 231,292 KB , 시간: 2,072 ms사용 알고리즘: 정렬, 이분 탐색, 두 포인터처음엔 TreeSet으로 K - arr[i]에 해당하는 수가 있는지(contains) 검사하고,없다면 큰 수 중 가장 작은 수(higher)와 작은 수 중 가장 큰 수(lower)를 검사해서 구했었다.-> 메모리 초과 그다음 이분 탐색으로 K - arr[i]보다 작은 수 중 가장 큰 수를 구하고, 이분 탐색으로 구한 수와 그 수보다 큰 수 중 가장 작은 수를 비교하여 구했다.정답은 뜨는데, 주석 쓰고 다시 돌렸더니 메모리 초과... 같은 코드 다시 돌렸는데 또 정답약간 불안 불안한 듯.. 문제 풀고 투 포인터로 풀 수 있다는 거 알고 투 포인터..
[백준, BOJ 2058] 원자의 에너지 (java)
https://www.acmicpc.net/problem/2058메모리: 16,212 KB , 시간: 140 ms사용 알고리즘: 다이나믹 프로그래밍, 트리에서의 다이나믹 프로그래밍, 트리이 문제는 구현보다 문제 자체를 이해하는 게 더 어려웠다. 문제를 간단히 정리하면,원자의 에너지 상태 = 노드라고 보고'어떤 에너지 상태(A)에서 다른 에너지 상태(B)로 변할 수 있는 방법은 한 가지뿐'이라는 문장으로어떤 노드(A)에서 다른 노드(B)로 갈 수 있는 방법이 하나뿐인 트리 문제라는 것을 알 수 있다. 어떤 노드(A) 값에서 어떤 양성자를 더하거나 빼서 다른 노드(B) 값이 나온다면 두 노드는 서로 연결되어 있다.A 노드에서 모든 양성자의 값을 더하거나 빼 본다.A 노드에서 양성자 값을 더하거나 뺀 값이 다..
[백준, BOJ 13424] 비밀 모임 (java)
https://www.acmicpc.net/problem/13424메모리: 38,680 KB , 시간: 444 ms사용 알고리즘: 플로이드-워셜, 그래프 이론, 최단 경로N의 최대가 500 이하인 100이기 때문에 플로이드 워셜을 이용해 풀었다.import java.io.BufferedReader;import java.io.InputStreamReader;import java.util.ArrayList;import java.util.Arrays;import java.util.StringTokenizer;public class Main { static final int MAX = 10_000_000; public static void main(String[] args) throws Excepti..