https://www.acmicpc.net/problem/11399- 각 사람들이 자기 차례까지 걸리는 시간의 합이 최소가 되어야 하므로, SJF(최단 작업 우선 스케줄링)이 되도록 정렬하여야 한다.import java.io.BufferedReader;import java.io.InputStreamReader;import java.util.Arrays;public class Main { public void solution() throws Exception{ BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); int n = Integer.parseInt(br.readLine()); ..
https://www.acmicpc.net/problem/9012- 괄호가 정상적으로 닫혔는지(VPS인지) 확인하는데는 스택을 활용할 수 있다. 스택에서 대응되는 반대 방향의 괄호를 찾지 못하면 VPS가 아닌 것으로 판단하고 NO를 반환하는 과정으로 작성하면 된다.- 그보다 더 간단한 방법이 생각나 해 보았다! check변수를 사용해 '('가 나오면 check++, ')'가 나오면 check--; 하여 괄호의 짝을 맞추는 방법을 사용하였는데 맞았다! 안 되는 케이스가 있을 줄 알았는데 되었다import java.io.BufferedReader;import java.io.InputStreamReader;public class Main { public void solution() throws Excep..
https://www.acmicpc.net/problem/2839- 무게의 총합을 맞추면서 5킬로그램 봉지의 수를 늘리는 것이 관건이므로, 5킬로그램으로 채울 수 있는 최대의 개수부터 줄여나가면서 총 무게를 맞춘다.- bag5kgCnt가 -1이 되면, 어떻게 해서도 무게를 맞출 수 없이 반복문이 끝났다는 뜻이므로 -1을 출력한다.import java.io.BufferedReader;import java.io.InputStreamReader;public class Main { public void solution() throws Exception{ BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); ..
https://www.acmicpc.net/problem/2751- 출력에서 모든 줄을 System.out.println한 게 문제였다. StringBuilder를 사용하여 모든 줄을 저장한 후, 한 번에 출력하니 시간초과되지 않고 돌아갈 수 있었다. 많은 수의 줄을 출력할 때는 꼭 StringBuilder를 사용하자!import java.io.BufferedReader;import java.io.InputStreamReader;import java.util.Arrays;public class Main { public void solution() throws Exception{ BufferedReader br = new BufferedReader(new InputStreamReader(..
https://www.acmicpc.net/problem/1094- 그냥 문제에서 제공한 로직대로 수행해보면서 횟수를 계산하면 될 것 같다.- 잘린 막대들은 구분이 없고, 길이의 차이만 존재하기 때문에 몇cm 막대가 몇 개인지만 체크하면 될 것 같다.- 가장 짧은 막대를 pop해야 하기 때문에, HashMap보다는 TreeMap을 사용하며 총합은 따로 값을 저장하고 있다가 버리는 막대기의 길이를 빼는 것이 좋을 듯 하다.import java.io.BufferedReader;import java.io.InputStreamReader;import java.util.*;public class Main { public void solution() throws Exception{ Buffered..
https://www.acmicpc.net/problem/1010- 강의 동쪽에 있는 사이트에서 강 서쪽의 사이트 개수만큼(n개) 사이트를 고른 후, 강의 서쪽 사이트들과 연결- 즉, 경우의 수는 mCn이 된다- mCn은 재귀형식의 팩토리얼 함수를 구현하여 사용하였다.- StringBuilder에 출력할 값들을 모두 저장한 후, 한 번에 출력하는 방식으로 최적화하였다.import java.io.BufferedReader;import java.io.InputStreamReader;import java.util.StringTokenizer;public class Main { public void solution() throws Exception{ BufferedReader br = new ..
https://www.acmicpc.net/problem/10773 값이 틀릴 경우 직전의 값들을 제거해야 하므로 LIFO 방식이 필요하다.따라서 stack에 입력된 값을 넣으면서, 0일 경우 pop을 진행한다.반복문을 두 번 돌리기 싫으므로, stack에 값을 저장하면서 합에 더하고,pop을 진행할 때 합에서 값을 빼면 될 것 같다. deque의 기능까지는 필요하지는 않고, 한 쪽에서만 데이터를 빼낼 것이기 떄문에 Stack 타입을 쓰려고 하였으나,성능은 ArrayDeque를 쓰는 게 좋다고 하여 해당 타입으로 스택을 생성하여 사용하였다!import java.io.BufferedReader;import java.io.InputStreamReader;import java.util.ArrayDeque;im..
https://www.acmicpc.net/problem/3190import java.io.BufferedReader;import java.io.InputStreamReader;import java.util.ArrayDeque;import java.util.Deque;import java.util.StringTokenizer;public class Main { public void solution() throws Exception{ BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); int n = Integer.parseInt(br.readLine()); // 보드의 크기 int k..
https://www.acmicpc.net/problem/13458처음 제출할 때 틀렸다고 떠서 확인해보니, 개수를 셀 때 int의 범위를 벗어날 수 있을 것 같아 answer의 타입을 long으로 변경해주었더니 되었다! import java.io.BufferedReader;import java.io.InputStreamReader;import java.util.StringTokenizer;public class Main { public void solution() throws Exception{ BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); int n = Integer.parseInt(b..
https://www.acmicpc.net/problem/2210순서가 중요하긴 하나 숫자가 겹친다면 같은 숫자가 가능함중복 불가능한 배열에 나올 수 있는 거 dfs로 다 때려박고 개수 리턴할까이게 경우의 수를 따지려면 계산으로 해결할 게 아니라 실제로 방문해보면서 나오는 결과를 저장해야 할 것 같음중복 불가능한 배열의 타입은 Set으로, HashSet을 사용하면 될 것 같다 import java.io.BufferedReader;import java.io.InputStreamReader;import java.util.HashSet;import java.util.Iterator;import java.util.Set;import java.util.StringTokenizer;public class Main ..