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://school.programmers.co.kr/learn/courses/30/lessons/43162# 틀린 풀이 방법def solution(n, computers): answer = 0 network_dict = {} for i in range(n): for j in range(i+1, n): if computers[i][j]==1: cnt = network_dict.get(i) if cnt is None: answer+=1 network_dict[i]=answer network_dict[..
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 ..
https://www.acmicpc.net/problem/2251bfs를 통해 a가 빌 때의 모든 경우의 수를 따져 볼 수 있다.bfs를 거쳐서 한 번의 시도가 끝나는 경우는 a에 담긴 물의 양이 0이 되는 경우이고, 이 경우의 c의 물 양을 중복되지 않게 저장하면 된다. visited를 사용해 현재 물통에 담겨있는 현황이 중복되지 않게 한다 - 중복 탐색하지 않게! import java.io.BufferedReader;import java.io.InputStreamReader;import java.util.*;public class Main { static boolean[][][] visited; static List answer = new ArrayList(); int[] contai..