💡Problem Solving/BOJ 108

[BOJ 2609] 최대공약수와 최소공배수 (Java)

#문제 https://www.acmicpc.net/problem/2609 2609번: 최대공약수와 최소공배수 첫째 줄에는 입력으로 주어진 두 수의 최대공약수를, 둘째 줄에는 입력으로 주어진 두 수의 최소 공배수를 출력한다. www.acmicpc.net #풀이 유클리드 호제법을 사용한다. 2개의 자연수의 최대공약수(GCD)를 구하는 알고리즘 이다. 자연수 a와 b (a > b)에서 a를 b로 나눈 나머지를 r이라고 했을 때 GCD(a, b) = GCD(b, r) 이며, r이 0이 되는 순간 b가 최대 공약수가 된다. 최소 공배수는 두 수를 곱한 후 최대 공약수로 나눠주면 구할 수 있다. #소스코드 package math; import java.io.BufferedReader; import java.io.I..

[BOJ18870] 좌표 압축 (Java)

#문제 https://www.acmicpc.net/problem/18870 18870번: 좌표 압축 수직선 위에 N개의 좌표 X1, X2, ..., XN이 있다. 이 좌표에 좌표 압축을 적용하려고 한다. Xi를 좌표 압축한 결과 X'i의 값은 Xi > Xj를 만족하는 서로 다른 좌표의 개수와 같아야 한다. X1, X2, ..., XN에 좌 www.acmicpc.net #풀이 정렬한 배열을 순회하면서 각 원소와 매핑되는 새로운 인덱스를 Map에 저장한 후 초기 배열을 순회하면서 해당 Map에 매핑된 Index를 출력해줬다. #소스코드 import java.io.BufferedReader; import java.io.InputStreamReader; import java.util.*; public class..

[BOJ 15900] 나무 탈출 (Java)

#문제 https://www.acmicpc.net/problem/15900 15900번: 나무 탈출 평소에 사이가 좋지 않던 성원이와 형석이가 드디어 제대로 한 판 붙으려고 한다. 성원이와 형석이 둘과 모두 똑같이 친한 인섭이가 대결 종목을 정해 가져왔다. 바로 '나무 탈출' 이라는 보드게 www.acmicpc.net #풀이 Leaf Node의 모든 Depth를 더했을 때 짝수인지 홀수인지에 따라 승패가 결정된다. Node정보를 인접 리스트로 저장한다. (방향성이 없으므로 양쪽에 모두 저장) 현재 Node의 Parent Node는 인접 리스트에서 제거한 후 dfs 탐색을 한다. 인접 노드가 없는 경우 해당 노드는 Leaf Node이므로 현재까지 구한 depth를 count에 더한다. count의 짝/홀 ..

[BOJ 2056] 작업 (Java)

#문제 https://www.acmicpc.net/problem/2056 2056번: 작업 수행해야 할 작업 N개 (3 ≤ N ≤ 10000)가 있다. 각각의 작업마다 걸리는 시간(1 ≤ 시간 ≤ 100)이 정수로 주어진다. 몇몇 작업들 사이에는 선행 관계라는 게 있어서, 어떤 작업을 수행하기 위해 www.acmicpc.net #풀이 위상정렬 알고리즘을 이용해서 푼다. #소스코드 import java.io.BufferedReader; import java.io.InputStreamReader; import java.util.*; public class BOJ2056 { public static int N; public static ArrayList[] adjs; public static int[] ind..

[BOJ 21773] 가희와 프로세스 1 (Java)

#문제 https://www.acmicpc.net/problem/21773 21773번: 가희와 프로세스 1 1초일 때 부터 4초일 때 상황을 그림으로 나타내면 아래와 같습니다. 아래 그림에서 주황색은 특정 시점에 스케쥴러가 선택한 프로세스를 의미합니다. www.acmicpc.net #소스코드 import java.io.BufferedReader; import java.io.InputStreamReader; import java.util.PriorityQueue; import java.util.StringTokenizer; public class BOJ21773 { public static class Work implements Comparable{ int id; int time; int priority..

[BOJ 21772] 가희의 고구마 먹방 (Java)

#문제 https://www.acmicpc.net/problem/21772 21772번: 가희의 고구마 먹방 첫 번째 줄에 맵의 세로 크기 R, 가로 크기 C, 가희가 이동하는 시간 T가 주어집니다. 두 번째 줄부터 R+1번째 줄까지 길이가 C인 문자열이 주어집니다. 주어지는 문자열에 있는 문자는 가희를 www.acmicpc.net #소스코드 import java.io.BufferedReader; import java.io.InputStreamReader; import java.util.HashSet; import java.util.StringTokenizer; public class BOJ21772 { public static int R, C, T, x, y; public static int max =..

[BOJ 22232] 가희와 파일 탐색기 (Java)

#문제 https://www.acmicpc.net/problem/22232 22232번: 가희와 파일 탐색기 첫 번째 줄에 jo_test 폴더에 있는 파일 개수 N과 가희가 설치한 OS에서 인식하는 파일 확장자의 개수 M이 공백으로 구분되어 주어집니다. 2번째 줄부터 N+1번째 줄까지 FILENAME.EXTENSION 형식의 문자열 www.acmicpc.net #소스코드 import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.InputStreamReader; import java.io.OutputStreamWriter; import java.util.*; public class BOJ22232 { public static ..

[BOJ 1874] 스택 수열 (Java)

#문제 https://www.acmicpc.net/problem/1874 1874번: 스택 수열 1부터 n까지에 수에 대해 차례로 [push, push, push, push, pop, pop, push, push, pop, push, push, pop, pop, pop, pop, pop] 연산을 수행하면 수열 [4, 3, 6, 8, 7, 5, 2, 1]을 얻을 수 있다. www.acmicpc.net #소스코드 package stack; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.InputStreamReader; import java.io.OutputStreamWriter; import java.util.Link..