[백준] 닭싸움 팀 정하기 - Java 1765
·
PS/백준
https://www.acmicpc.net/problem/1765  유니온 파인드를 사용하지 않고 친구의 친구도 반복문을 돌았을 때는 시간초과가 발생했다. 그래서, 원수의 원수의 경우에만 친구로 설정하고 친구의 경우는 유니온 파인드를 적용하여친구를 구별하기로 했고 그렇게 했을 때는 시간 초과가 발생하지 않았다. 전역 클래스에 `equals`와 `hashCode` 메소드를 직접 작성했는데 다른 분들의 코드를 보면굳이 이렇게 까지 작성하지 않아도 되는 거 같긴하다.import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.util.*;public class BOJ1765 { sta..
[백준] 트럭 - Java 13335
·
PS/백준
https://www.acmicpc.net/problem/13335  큐의 크기를 다리에 들어갈 수 있는 차의 개수로 설정하여,지속적으로 개수와 크기를 비교하며 큐에 트럭을 더한다. 만약, 트럭이 다리를 건널 수 없으면 큐와 `path`에 0을 추가하여 횟수를 카운팅한다.그리고 마지막에는 큐에 남아있는 값을 확인하여 남이있는 값이 있다면 다리의 길이만큼 더해준다. 하지만, 다리가 1인 경우 결국 전체 횟수는 N + 1만큼 걸리므로 바로 반환해준다.(엣지케이스) import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.util.*;public class Main { public..
[백준] 우주 탐사선 - Java 17182
·
PS/백준
https://www.acmicpc.net/problem/17182  플로이드-워샬 알고리즘과 백트래킹을 사용해서 풀었다. 우선, 모든 노드의 최단 거리를 `플로이드-워샬` 알고리즘을 사용해 구해준다. 그 후, 백트래킹으로 모든 경우의 수를 탐색하여 나올 수 있는 최대값을 계산한다. public class BOJ17182 { static int[][] grid; static int N; static int K; static boolean[] visited; static int result = Integer.MAX_VALUE; public static void main(String[] args) throws IOException { BufferedReader b..
[백준] 램프 - Java 1034
·
PS/백준
public class BOJ1034 { /** * 14 3 * 001 * 101 * 001 * 000 * 111 * 001 * 101 * 111 * 110 * 000 * 111 * 010 * 110 * 001 * 6 */ static String[] grid; static int N; static int M; static int K; static int max; static int result = 0; public static void main(String[] args) throws IOException { BufferedRea..
[백준] 센티와 마법의 뿅망치 - Java 19683
·
PS/백준
https://www.acmicpc.net/problem/19638 우선순위 큐를 사용해서 풀었다.  최소값이 1이거나 키보다 작은 값일 경우 반복문을 탈출 후 결과 출력한다  import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.util.PriorityQueue;import java.util.StringTokenizer;public class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamR..
[백준] 풍선 터트리기 - Java 32377
·
PS/백준
https://www.acmicpc.net/problem/32377   우선, 입력값인 x, y, z의 값이 굉장히 크기 때문에 `이분 탐색`으로 접근해야 된다는 생각이 들었다.(그리고 시간 제한이 0.5초이다) 그래서 내가 생각한 키 포인트는 x, y, z에 따른 N번째 풍선을 터트리는 순간을 이분 탐색으로 찾아야 된다고 생각했다. 그리고 동시에 두 명 이상이 풍선을 터트리는 경우 A, B, C 순서대로 터트리기 때문에N번째 풍선을 터트리는 순간의 `-1`초를 해주고 반복문을 돌며 나누어 떨어지는 값을 출력했다. import java.io.*;import java.util.StringTokenizer;public class BOJ32377 { public static void main(String..