Algorithm 25

[완전 탐색, BFS] 백준-14502 연구소 골드4 (Java)

백준-14502 : 연구소 https://www.acmicpc.net/problem/14502 14502번: 연구소 인체에 치명적인 바이러스를 연구하던 연구소에서 바이러스가 유출되었다. 다행히 바이러스는 아직 퍼지지 않았고, 바이러스의 확산을 막기 위해서 연구소에 벽을 세우려고 한다. 연구소는 크 www.acmicpc.net 아이디어 최대 8*8 matrix에 기둥을 3개 세우는 거니 64*64*64 백만번이 안돼서 완전 탐색해도 괜찮다고 생각함 풀이 입력받은 matrix에 0(빈곳)에 벽을 세우는 모든 경우의 수를 확인한다. 벽을 세운 이후 BFS를 통해서 바이러스를 확장시킨다. 모든 경우의수를 확인하면 안전지대의 수가 가장 많은 값을 반환한다. 코드 (java) import java.util.*; c..

Algorithm 2023.04.05

[Stack] 백준-10773 제로 실버4 (Java)

백준-10773 제로 https://www.acmicpc.net/problem/10773 10773번: 제로 첫 번째 줄에 정수 K가 주어진다. (1 ≤ K ≤ 100,000) 이후 K개의 줄에 정수가 1개씩 주어진다. 정수는 0에서 1,000,000 사이의 값을 가지며, 정수가 "0" 일 경우에는 가장 최근에 쓴 수를 지우고, 아닐 경 www.acmicpc.net 풀이 Stack에 0이 아니면 넣어주고 0일 경우에 Stack에서 꺼내준다. 코드(JAVA) import java.util.*; public class Baejoon10773 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int n = sc.nex..

Algorithm 2023.04.05

[그리디] 백준-1744 수 묶기 골드4 (Java)

백준-1744 : 수 묶기 https://www.acmicpc.net/problem/1744 1744번: 수 묶기 길이가 N인 수열이 주어졌을 때, 그 수열의 합을 구하려고 한다. 하지만, 그냥 그 수열의 합을 모두 더해서 구하는 것이 아니라, 수열의 두 수를 묶으려고 한다. 어떤 수를 묶으려고 할 때, 위치에 www.acmicpc.net 아이디어 1을 제외한 양수는 큰수끼리 곱하면 커진다. 1은 더 해준다. 음수 * 음수는 양수이고 작은 음수끼리 곱하면 커진다. 풀이 아래 조건에 따라 우선순위 큐에 넣어준다. 1은 결과에 더해준다. 1보다큰 값끼리 우선순위큐에 넣어준다. 1보다 작은값 끼리 우선순위 큐에 넣어준다. 우선순위 큐에 2개 이상 존재할때 곱하여 결과에 더해주고 1개의 경우에는 꺼내서 더해준다..

Algorithm 2023.04.04

[그리디] 백준-1715 카드 정렬하기 골드4 (Java)

백준 1715번 : 카드 정렬하기 https://www.acmicpc.net/problem/1715 1715번: 카드 정렬하기 정렬된 두 묶음의 숫자 카드가 있다고 하자. 각 묶음의 카드의 수를 A, B라 하면 보통 두 묶음을 합쳐서 하나로 만드는 데에는 A+B 번의 비교를 해야 한다. 이를테면, 20장의 숫자 카드 묶음과 30장 www.acmicpc.net 풀이 입력받은 값을 우선 순위 큐에 넣는다. (정렬을 하기 위해) 우선 순위 큐에 2개 이상 존재할 때 두개를 꺼내서 합한 이후에 다시 우선순위 큐에 넣는 것을 반복한다. 코드 (java) import java.util.*; public class Baejoon1715 { public static void main(String[] args) { Sc..

Algorithm 2023.04.02

[그리디] 백준-1439 뒤집기 실버5 (Java)

백준 1439번 : 뒤집기 https://www.acmicpc.net/problem/1439 1439번: 뒤집기 다솜이는 0과 1로만 이루어진 문자열 S를 가지고 있다. 다솜이는 이 문자열 S에 있는 모든 숫자를 전부 같게 만들려고 한다. 다솜이가 할 수 있는 행동은 S에서 연속된 하나 이상의 숫자를 잡고 모 www.acmicpc.net 풀이 앞 숫자와 비교하여 변화한 수 체크 변화 한 수의 절반의 올림 값 만큼 변화가 필요함 코드 (java) import java.util.*; public class BaeJoon1439 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); String num = sc.nextLi..

Algorithm 2023.04.02