본문 바로가기

인프런 DFS 자바

(3)
[인프런 자바/java] 3. 최대점수 구하기(DFS) _디버깅의 눈물 체크 포인트 1. DFS(깊이 우선 탐색)을 이용하는 문제 -제한 시간 안에 얻을 수 있는 '최대 점수'를 구하는 문제 -배열에 존재하는 0번째 문제부터 (1)해당 문제를 풀이한 경우와 (2)해당 문제를 풀이하지 않은 경우로 나누어 -'모든 경우의 수를 탐색'한 후, 얻을 수 있는 최대 점수를 구해야 한다. 2. '문제를 푼 경우'와 '풀지 않은 경우'를 DFS로 표현 // 해당 문제를 풀이한 경우, 문제풀이 시간 및 총합 점수 증가 DFS(L+1, timeSum+map[L][1], sum+map[L][0]); // 해당 문제를 풀이하지 않은 경우, DFS(L+1, timeSum, sum); 3. 문제 풀이 제한시간에 도달한 경우와 마지막 문제에 도달한 경우의 처리 (1)문제 풀이 제한시간에 도달한 경우..
[인프런 자바/java] 10. 미로탐색(DFS) _디버깅의 눈물 체크 포인트 1. DFS(깊이 우선 탐색)을 이용하는 문제 -출발지에서 도착지까지 갈 수 있는 '모든 경우의 수'를 탐색하는 문제 2. 도착지까지 방문 후 또 다른 경로로의 탐색을 이어가게 하는 것 // 새로운 nx, ny가 지도 배열 내 위치하고, if(nx>=1 && ny>=1 && nx
[인프런 자바/java] 13. 섬나라 아일랜드 _디버깅의 눈물 체크 포인트 1. DFS(깊이 우선 탐색)을 이용하는 문제 -섬나라 아일랜드 상에 존재하는 '전체 섬의 개수'를 구하는 문제 -DFS를 이용한 완전 탐색으로 해결하도록 하였다. 2.상,하,좌,우 + 대각선 탐색 -일반적인 DFS를 이용해 푸는 문제라 딱히 특별한 점은 없었다. // 상,하,좌,우,대각선 방향 탐색을 위한 x,y static int[] dx = {0,0,-1,1,-1,-1,1,1}; static int[] dy = {1,-1,0,0,-1,1,-1,1}; -다른 문제와 차이점은 섬 탐색 시 기준점을 기준으로 상,하,좌,우뿐만 아니라, 대각선 부분도 탐색하는 부분이 존재했다. 풀이 import java.io.BufferedReader; import java.io.IOException; impo..