알고리즘 143

[BaekJoon] 백준 1987번 _ 알파벳 for JAVA _ DFS 알고리즘

https://www.acmicpc.net/problem/1987 1987번: 알파벳 세로 R칸, 가로 C칸으로 된 표 모양의 보드가 있다. 보드의 각 칸에는 대문자 알파벳이 하나씩 적혀 있고, 좌측 상단 칸 (1행 1열) 에는 말이 놓여 있다. 말은 상하좌우로 인접한 네 칸 중의 한 칸으 www.acmicpc.net 참고 : https://settembre.tistory.com/377 ㅡㅡㅡㅡㅡㅡㅡㅡㅡ C ㅣ ㅣ ㅣ ㅣ ㅣ R 이런 느낌인건 탐색 써서 상하좌우 살펴봐야 한다는건 알겠는데 이 문제에서는 겹치지 않고 최대 움직일 수 있는걸 구하는 거여서 이 부분을 생각하는게 어려웠다. 그래서 다른분꺼 참고함 나는 상, 하, 우, 좌 순서로 보기 때문에 첫번째로 여기 4개를 살펴보고 더 이상 나아갈 수 없게..

알고리즘/백준 2022.01.27

[BaekJoon] 백준 10026번 _ 적록 색약 for JAVA _ DFS 알고리즘

https://www.acmicpc.net/problem/10026 10026번: 적록색약 적록색약은 빨간색과 초록색의 차이를 거의 느끼지 못한다. 따라서, 적록색약인 사람이 보는 그림은 아닌 사람이 보는 그림과는 좀 다를 수 있다. 크기가 N×N인 그리드의 각 칸에 R(빨강), G(초록) www.acmicpc.net DFS를 이용해서 풀었다. 위 문제에서 주의할 점은 매번 풀던 문제들은 배열이 0, 1 두 가지로 이루어져 1의 뭉탱이 개수를 구하거나... 하는 것이었는데 얘는 R, G, B 3가지의 뭉탱이 개수를 구하는 것이다... 그래서 dfs() 함수에 tmp 변수를 넣어 주변 값이 tmp와 같은 값일 때 재귀를 수행하는 방식으로 짜야했다. 코드 import java.io.BufferedReader..

알고리즘/백준 2022.01.25

[BaekJoon] 백준 2468번 _ 안전 영역 for JAVA _ DFS 알고리즘

https://www.acmicpc.net/problem/2468 2468번: 안전 영역 재난방재청에서는 많은 비가 내리는 장마철에 대비해서 다음과 같은 일을 계획하고 있다. 먼저 어떤 지역의 높이 정보를 파악한다. 그 다음에 그 지역에 많은 비가 내렸을 때 물에 잠기지 않는 www.acmicpc.net 위 문제도 DFS로 풀어보았다. 음... 안전 영역을 찾기 위해 0~ 지역의 높이가 가장 높은 곳까지 대입하며 안전 지역이 가장 많은 곳을 찾았다. 코드(수정함) import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.StringTokenizer; public cl..

알고리즘/백준 2022.01.24

[BaekJoon] 백준 4963번 _ 섬의 개수 for JAVA _ DFS 알고리즘

https://www.acmicpc.net/problem/4963 4963번: 섬의 개수 입력은 여러 개의 테스트 케이스로 이루어져 있다. 각 테스트 케이스의 첫째 줄에는 지도의 너비 w와 높이 h가 주어진다. w와 h는 50보다 작거나 같은 양의 정수이다. 둘째 줄부터 h개 줄에는 지도 www.acmicpc.net DFS 알고리즘을 이용하여 풀었다. 전형적인 DFS 문제로 이해할 수 있는데 무한 루프로 돌리다가 w h 값이 0 0 이 되었을 때 멈춰야한다는 것이 추가되었다. 코드 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.StringTokenizer;..

알고리즘/백준 2022.01.24

[BaekJoon] 백준 11724번 _ 연결 요소의 개수 for JAVA _ DFS 알고리즘

https://www.acmicpc.net/problem/11724 11724번: 연결 요소의 개수 첫째 줄에 정점의 개수 N과 간선의 개수 M이 주어진다. (1 ≤ N ≤ 1,000, 0 ≤ M ≤ N×(N-1)/2) 둘째 줄부터 M개의 줄에 간선의 양 끝점 u와 v가 주어진다. (1 ≤ u, v ≤ N, u ≠ v) 같은 간선은 한 번만 주 www.acmicpc.net DFS 알고리즘을 이용해 풀었다. 위의 문제는 연결 요소의 개수를 묻는 문제로 연결이 되어있는 요소의 개수를 출력하면 된다.. 첫 번째 예시를 그려서 살펴보면 위와 같이 나온다. 음....그래서 2중 ArrayList에 각 요소가 연결되어 있는 값을 넣고 visited[] 라는 배열을 만들어 방문했는지 확인하고 재귀하는 방식을 사용할 ..

알고리즘/백준 2022.01.24

[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

[Algorithm] BFS 알고리즘 (너비 우선 탐색)

BFS 알고리즘은 너비 우선 탐색 방법으로, 가까운 노드부터 우선적으로 탐색하는 알고리즘이다. 주로 Queue 자료구조를 이용하여 모든 노드를 탐색한다. 예시를 살펴보자 예시 그래프~~!! 방문 기준은 번호가 낮은 인접 노드부터, 시작 노드는 1이라고 하자. 큐에 1 넣음 큐에 있던 1을 꺼내주고 인접 노드 2 3 8 을 넣어준다. 2 3 8 에서 2를 꺼내주고 2와 인접한 노드 7을 넣어준다. 큐 : 3 8 7 3 8 7 에서 3을 빼주고 3과 인접한 노드 4, 5를 넣어준다. 큐 : 8 7 4 5 8 7 4 5에서 8을 빼주고 8과 인접한 노드는 모두 방문했으므로 추가x 큐 : 7 4 5 7 4 5에서 7을 빼고 인접 노드 6을 들르면 모든 노드를 탐색하게 된다. 따라서 노드를 탐색하는 순서는 1 -..

[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