-
https://www.acmicpc.net/problem/1743
1743번: 음식물 피하기
첫째 줄에 통로의 세로 길이 N(1 ≤ N ≤ 100)과 가로 길이 M(1 ≤ M ≤ 100) 그리고 음식물 쓰레기의 개수 K(1 ≤ K ≤ N×M)이 주어진다. 그리고 다음 K개의 줄에 음식물이 떨어진 좌표 (r, c)가 주어진다
www.acmicpc.net
https://github.com/JUNGSOONIL/JAVA/blob/main/BAEKJOON%201743
GitHub - JUNGSOONIL/JAVA: JAVA 소스 코드
JAVA 소스 코드. Contribute to JUNGSOONIL/JAVA development by creating an account on GitHub.
github.com
해당 문제는 음식물 좌표가 주어졌을 때 가장 큰 음식물의 크기를 구하는 문제다.
해당 문제는 dfs를 이용해서 해결했으며, 먼저 입력 처리를 하면서
문제는 1,1부터 시작하지만 배열을 0,0부터 사용하므로
각 좌표값에 대해서 -1한 값을 넣어주고 이후 음실물 좌표에 해당하는 부분에는
1의 값을 넣어준 뒤 배열을 탐색하면서 아직 방문하지 않았고 음식물이 있는 곳에 대해서
bfs를 돌려준다.
이때 bfs를 돌리기전에 cnt변수를 초기화해주고 bfs가 끝나면 ans와 cnt 중 큰 값을 ans에 저장하는
방식으로 최대 크기를 구해주며, bfs에서는 재귀를 통해 반복하면서 방문할때마다
cnt 값을 증가시키고 상하좌우를 탐색하면서 배열 범위를 벗어나지 않고, 방문하지 않았으며, 음식물인 곳에
대해서만 재귀가 돌아가도록 하였다.
728x90'알고리즘 > Baekjoon' 카테고리의 다른 글
Baekjoon 1913 달팽이 JAVA (0) 2021.12.30 Baekjoon 2665 미로만들기 JAVA (0) 2021.12.29 Baekjoon 10972 다음 순열 JAVA (0) 2021.12.27 Baekjoon 5212 지구 온난화 JAVA (0) 2021.12.26 Baekjoon 14716 현수막 JAVA (0) 2021.12.25 댓글