알고리즘/백준 62

[BaekJoon] 백준 2178번 _ 미로탐색 for JAVA _ BFS 알고리즘

https://www.acmicpc.net/problem/2178 2178번: 미로 탐색 첫째 줄에 두 정수 N, M(2 ≤ N, M ≤ 100)이 주어진다. 다음 N개의 줄에는 M개의 정수로 미로가 주어진다. 각각의 수들은 붙어서 입력으로 주어진다. www.acmicpc.net BFS를 공부할 때 살펴본 문제와 같은 문제였다. (https://www.youtube.com/watch?v=7C9RgOcvkvo) 코드 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.LinkedList; import java.util.Queue; import java.util.S..

알고리즘/백준 2022.01.21

[BaekJoon] 백준 1012번 _ 유기농 배추 for JAVA _ DFS 알고리즘

https://www.acmicpc.net/problem/1012 1012번: 유기농 배추 차세대 영농인 한나는 강원도 고랭지에서 유기농 배추를 재배하기로 하였다. 농약을 쓰지 않고 배추를 재배하려면 배추를 해충으로부터 보호하는 것이 중요하기 때문에, 한나는 해충 방지에 www.acmicpc.net 얘도 그냥 전형적인 DFS/BFS 문제이다. DFS 연습중이라 DFS로 풀음 코드 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.StringTokenizer; public class Baek1012 { // DFS public static int count[] ..

알고리즘/백준 2022.01.21

[BaekJoon] 백준 2667번 _ 단지 번호 붙이기 for JAVA _ DFS 알고리즘

https://www.acmicpc.net/problem/2667 2667번: 단지번호붙이기 과 같이 정사각형 모양의 지도가 있다. 1은 집이 있는 곳을, 0은 집이 없는 곳을 나타낸다. 철수는 이 지도를 가지고 연결된 집의 모임인 단지를 정의하고, 단지에 번호를 붙이려 한다. 여 www.acmicpc.net DFS로 풀었다. 딴건 몰라도 자바는 null때매 넘 짜증남... 특히 배열...... 코드 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.ArrayList; import java.util.Arrays; public class Baek2667 { pu..

알고리즘/백준 2022.01.20

[BaekJoon] 백준 2606번 _ 바이러스 for JAVA _ DFS 알고리즘

https://www.acmicpc.net/problem/2606 2606번: 바이러스 첫째 줄에는 컴퓨터의 수가 주어진다. 컴퓨터의 수는 100 이하이고 각 컴퓨터에는 1번 부터 차례대로 번호가 매겨진다. 둘째 줄에는 네트워크 상에서 직접 연결되어 있는 컴퓨터 쌍의 수가 주어 www.acmicpc.net 위의 문제는 DFS, BFS 모두 사용할 수 있을 것 같다. 나는 DFS를 먼저 연습할 거라서 DFS로 풀었다. DFS를 사용하면 순서는 1 - 2 - 3 - 5 - 6 이 되어 4가 return될 것이다. (1은 포함x) 이전에 풀었던 1260번과 아주 유사한 문제이다 (https://ticssfm.tistory.com/67) 코드 import java.io.BufferedReader; import ..

알고리즘/백준 2022.01.20

[BaekJoon] 백준 1260번 _DFS와 BFS for JAVA _ DFS, BFS 알고리즘

https://www.acmicpc.net/problem/1260 1260번: DFS와 BFS 첫째 줄에 정점의 개수 N(1 ≤ N ≤ 1,000), 간선의 개수 M(1 ≤ M ≤ 10,000), 탐색을 시작할 정점의 번호 V가 주어진다. 다음 M개의 줄에는 간선이 연결하는 두 정점의 번호가 주어진다. 어떤 두 정점 사 www.acmicpc.net DFS, BFS 알고리즘을 구현하는 문제이다. 여기서 주의해야할 것은 정점 번호가 작은 것을 먼저 방문 한다는 것과 예를 들어 예제 입력이 3 5 라면 5 3 으로도 넣어줘야 한다는 점이다. 2중 ArrayList를 사용할 것인데 행 번호가 노드 번호이므로 3번째 행에 5를 넣고, 5번째 행에 3을 넣어줘야 한다. 코드 import java.io.Buffere..

알고리즘/백준 2022.01.20

[BaekJoon] 백준 10610번 _ 30 for JAVA _ 그리디 알고리즘

https://www.acmicpc.net/problem/10610 10610번: 30 어느 날, 미르코는 우연히 길거리에서 양수 N을 보았다. 미르코는 30이란 수를 존경하기 때문에, 그는 길거리에서 찾은 수에 포함된 숫자들을 섞어 30의 배수가 되는 가장 큰 수를 만들고 싶어한 www.acmicpc.net 문자열 문제는 증말 어렵다.. 30의 배수임을 알아볼 때의 조건 1. 1의 자리가 0으로 끝남 2. 10~n의 자리가 3의 배수임 3. 3의 배수라는 것은 모든 자리의 수를 더했을 때 값이 3의 배수임을 뜻한다. 여기서 3번이 제일 중요함. 1의 자리가 0이고 각 자리 숫자의 합이 3의 배수이면 입력받은 수를 내림차순으로 정리한게 가장 큰 수가 된다. 어차피 1의 자리가 0이어야 하므로... 걍 내..

알고리즘/백준 2022.01.19

[BaekJoon] 백준 10162번 _ 전자레인지 for JAVA _ 그리디 알고리즘

https://www.acmicpc.net/problem/10162 10162번: 전자레인지 3개의 시간조절용 버튼 A B C가 달린 전자레인지가 있다. 각 버튼마다 일정한 시간이 지정되어 있어 해당 버튼을 한번 누를 때마다 그 시간이 동작시간에 더해진다. 버튼 A, B, C에 지정된 시간은 www.acmicpc.net 위의 문제는 전에 풀었던 거스름돈과 비슷한 문제이다. 좀 더 깔끔하게 짜보려고 했는데 조건이 몇 번씩 누르는지 각자 출력이고, 나누어지지 않으면 -1 출력이기 때문에 또다시 노가다로 표현했다. 코드 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public class B..

알고리즘/백준 2022.01.19

[BaekJoon] 백준 2217번 _ 로프 for JAVA _ 그리디 알고리즘

https://www.acmicpc.net/problem/2217 2217번: 로프 N(1 ≤ N ≤ 100,000)개의 로프가 있다. 이 로프를 이용하여 이런 저런 물체를 들어올릴 수 있다. 각각의 로프는 그 굵기나 길이가 다르기 때문에 들 수 있는 물체의 중량이 서로 다를 수도 있다. 하 www.acmicpc.net 문제를 보면 로프의 개수를 마음대로 사용할 수 있고 최대 하중을 구하는 문제이다. 예를 들어 10 15 30 50 4개의 줄이 있으면 밧줄 1개를 사용하면 50 이 최대이고 2개를 사용하면 50 30을 사용하여 30 x 2 = 60이 최대 3개를 사용하면 50 30 15를 사용하여 15 x 3 = 45가 최대 4개를 모두 사용하면 10 x 4 = 40이 최대이므로 최대 하중은 60이 된다..

알고리즘/백준 2022.01.18

[BaekJoon] 백준 5585번 _ 거스름돈 for JAVA _ 그리디 알고리즘

https://www.acmicpc.net/problem/5585 5585번: 거스름돈 타로는 자주 JOI잡화점에서 물건을 산다. JOI잡화점에는 잔돈으로 500엔, 100엔, 50엔, 10엔, 5엔, 1엔이 충분히 있고, 언제나 거스름돈 개수가 가장 적게 잔돈을 준다. 타로가 JOI잡화점에서 물건을 사 www.acmicpc.net 아ㅠ 이거 여러번 풀어본건데 코드 너무 구데기로 짰다... 코드 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public class Baek5585{ public static void main(String[] args) throws IOException{ ..

알고리즘/백준 2022.01.18

[BaekJoon] 백준 1026번 _ 보물 for JAVA _ 그리디 알고리즘

https://www.acmicpc.net/problem/1026 1026번: 보물 첫째 줄에 N이 주어진다. 둘째 줄에는 A에 있는 N개의 수가 순서대로 주어지고, 셋째 줄에는 B에 있는 수가 순서대로 주어진다. N은 50보다 작거나 같은 자연수이고, A와 B의 각 원소는 100보다 작거 www.acmicpc.net A[0] x B[0] + A[1] x B[1] + ... A[N-1] x B[N-1] 의 값이 최소값이 되기 위해서는 A의 가장 작은 수 x B의 가장 큰 수 이런식으로 곱셈이 되어야 한다. 문제에서 A의 배열속 값만 움직일 수 있다고 했지만 B도 같이 움직여줘도 된다. 왜냐면 큰거 x 작은거가 되는 계산값..은 같으니까.... 순서가 중요하지 않으므로 A는 오름차순, B는 내림차순으로 정..

알고리즘/백준 2022.01.18