Algorithm with C/BFS

두더지 굴

DesignatedRoom 2020. 8. 30. 23:32

1. 문제

DFS에서 만든 두더지 굴을 BFS로 구현한 것이다.

문제는 아래의 글에서 보자.

https://designatedroom87.tistory.com/61

 

두더지 굴

1. 들어가기에 앞서 아래의 두더지 굴 문제에 들어가는 알고리즘을 Floud Fill 알고리즘이라 한다. 이 방식은 우리가 많이 한 "지뢰찾기"게임에서 쓰인다. 아래의 문제에서도 나왔다시피 "1이 상��

designatedroom87.tistory.com

 

2. 자료구조 정의

두더지 굴의 이차원 배열에서 행과 열을 표현할 구조체로

큐에 저장할 데이터는 위치 정보이다.

그리고 큐는 앞에서 만든 것을 이용할 것이다.

designatedroom87.tistory.com/29?category=869063

 

Queue 만들기

1. 개념 Queue는 먼저 들어온 데이터가 먼저 나가는 구조로 되어있다. 이러한 특성을 선입 선출 ( FIFO : First-In First-Out ) 이라고 한다. 큐는 뒤에서 새로운 데이터가 추가되고, 앞에서 데이터가 하나

designatedroom87.tistory.com

 

< point.h >

 

큐에 저장할 데이터는 위치 정보이므로 아래와 같이 변경한다.

< Queue.h >

 

3. 구현

 

<main.c >

 

프로그램 실행결과

 

4. 소스 파일 & 헤더 파일

common.h
0.00MB
main.c
0.00MB
point.h
0.00MB
Queue.c
0.00MB
Queue.h
0.00MB

 

 

5. 두더지 굴의 수와 굴의 크기를 추가

그런데, 문제에서 보면 두더지 굴의 수와 그리고, 각 두더지 굴의 크기를 내림차순으로 출력을 해야한다.

기본적인 정렬 알고리즘은 버블 정렬을 이용하겠다.

그리고 각 두더지 굴의 크기를 저장할 변수를 배열로 선언하고 이는 전역 변수로 두겠다.

DFS에서 만든 방식과 같다.

 

위의 함수를 호출하는 부분은 main함수에서 한다.

 

프로그램 실행결과

 

6. 소스 파일 & 헤더 파일

common.h
0.00MB
main.c
0.01MB
point.h
0.00MB
Queue.c
0.00MB
Queue.h
0.00MB