## DFS BFS 알아둘 것
* DFS 문제든 BFS 문제든 방문 기록을 활용하는 방식으로,
"방문 기록"을 남기는 방향으로 문제를 푸는 유형이다 라고 생각하면 될거같다.
-----------------------------------------------------------------------------------------
## 항상 알아둘것
* DFS할 때 조건을 거는데, break조건은 특이사항 아니면 거의 없다!!!
* 이번 문제에서도 사방면으로 이동한 경우를 다 봐야 하니까 break말고 continue를 써야한다!
* if문 끝나면 알아서 재귀 끝날거임(0이나 visit=False 만 남은 경우에)
* **그리고 DFS BFS 코드의 큰 틀은 항상 똑같음!!! 나중에 내가 푼거 다시 볼 때 길다고 겁먹거나 대충보지 말기!!**
-----------------------------------------------------------------------------------------
## 다 필요없고 BFS 핵심
0. BFS는 재귀 X이다.
1. 따라서 BFS 안에 큐 생성한다
2. 시작 포인트 일단 넣는다
3. while queue
4. 현위치 = popleft()
5. for 다음위치(또는 다음 노드) 가져와
6. 다음 위치가 조건에 맞으면(또는 방문 안했으면) 이동시켜
7. queue.append(다음위치) <--- 개중요 (for안에 넣어서 다음위치/이웃노드 전부 넣어주는)
-----------------------------------------------------------------------------------------
* 그리고 DFS 문제든 BFS 문제든 방문 기록을 활용하는 방식으로,
* "방문 기록"을 남기는 방향으로 문제를 푸는 유형이다 라고 생각하면 될거같다.
## DFS 또는 BFS n x m 주의사항
* 항상 n x m 행렬 문제는 dy, dx 이거 써서 다음 위치일 때 dfs() 수행하는거다
* 큰 틀은 항상 똑같다!!!!!!!!!!!!!!!!!!!!!!!!!!!
* 시작점은 brute force로 전부 넣어주는거다!!!!!!!! => **단 방문하지 않은 노드만!!**
DFS BFS 문제적 접근으로 차이 한번 읽어보기 : https://foameraserblue.tistory.com/188?category=481823
DFS BFS 기본 문제추천 링크 : https://covenant.tistory.com/132
DFS BFS 거침없는 문제추천 링크 : https://covenant.tistory.com/147
갑자기 생각난거
민준 LG전자 3번째 문제 -> 빙산 구분하기에서
땅의 고도는 1 ~ 9까지임, 섬이 2개가 되는 경계를 찾아라
ex) 물이 1까지 차면 2~9는 땅, 1은 바다 경계
물이 3까지 차면 4~9는 땅(=섬이 될 수도), 1~2는 바다, 3은 경계
def dfs():
DFS 수행
def main():
빙산 개수 저장하는 변수 = 0
for _ in range(고도의 최고점(=9)): # 수면 아래서부터 하나씩 올라간다
for _ in range(len(graph)): # 땅은 전부 풀서치
if