[Java Algorithm] 백준 2178 _ 미로 탐색
·
Study/Algorithm Study
[문제]N×M크기의 배열로 표현되는 미로가 있다.미로에서 1은 이동할 수 있는 칸을 나타내고, 0은 이동할 수 없는 칸을 나타낸다. 이러한 미로가 주어졌을 때, (1, 1)에서 출발하여 (N, M)의 위치로 이동할 때 지나야 하는 최소의 칸 수를 구하는 프로그램을 작성하시오. 한 칸에서 다른 칸으로 이동할 때, 서로 인접한 칸으로만 이동할 수 있다.위의 예에서는 15칸을 지나야 (N, M)의 위치로 이동할 수 있다. 칸을 셀 때에는 시작 위치와 도착 위치도 포함한다.입력첫째 줄에 두 정수 N, M(2 ≤ N, M ≤ 100)이 주어진다. 다음 N개의 줄에는 M개의 정수로 미로가 주어진다. 각각의 수들은 붙어서 입력으로 주어진다.출력첫째 줄에 지나야 하는 최소의 칸 수를 출력한다. 항상 도착위치로 이동할 ..
[Java Algorithm] 백준 1962 _ 그림
·
Study/Algorithm Study
[문제]어떤 큰 도화지에 그림이 그려져 있을 때, 그 그림의 개수와, 그 그림 중 넓이가 가장 넓은 것의 넓이를 출력하여라. 단, 그림이라는 것은 1로 연결된 것을 한 그림이라고 정의하자. 가로나 세로로 연결된 것은 연결이 된 것이고 대각선으로 연결이 된 것은 떨어진 그림이다. 그림의 넓이란 그림에 포함된 1의 개수이다.입력첫째 줄에 도화지의 세로 크기 n(1 ≤ n ≤ 500)과 가로 크기 m(1 ≤ m ≤ 500)이 차례로 주어진다. 두 번째 줄부터 n+1 줄 까지 그림의 정보가 주어진다. (단 그림의 정보는 0과 1이 공백을 두고 주어지며, 0은 색칠이 안된 부분, 1은 색칠이 된 부분을 의미한다)출력첫째 줄에는 그림의 개수, 둘째 줄에는 그 중 가장 넓은 그림의 넓이를 출력하여라. 단, 그림이 하..
[코딩테스트 알고리즘] BFS 너비 우선 탐색
·
Study/Algorithm Study
개념BFS는 그래프 탐색의 한 가지 방법더보기* 그래프 탐색이란?어떤 것들이 연속해서 이어질 때, 모두 확인하는 방법Graph = Vertex(정점) + Edge(간선) 그래프 탐색 종류- BFS : Breadth-first search(너비 우선 탐색)- DFS : Depth-first search(깊이 우선 탐색) 아이디어1. 시작점에 연결된 Vertex 찾기2. 찾은 Vertex를 Queue에 저장3. Queue의 가장 먼저 것 뽑아서 반복💡 BFS - Queue / DFS - Stack 시간복잡도BFS = O(V+E)* 시간복잡도 = 알고리즘이 얼마나 오래 걸리는지 자료구조- 검색할 그래프- 방문 여부 확인(재방문 금지)- Queue : BFS 실행 출처 : 개발자 장고 [정리]BFS는 기본적..