본문 바로가기
What I Learned

[99클럽 5기] Day8 TIL - DFS

by ㅇ달빛천사ㅇ 2025. 1. 22.
728x90

99클럽 5기 | Java | Middler

 

🗝️ 오늘의 학습 키워드 : DFS

⌛ 회고

오늘은 비기너 문제 먼저 풀지 않고 미들러 문제부터 풀었다.
다행히 문제도 그렇게 어렵지 않아서 금새 푼 것 같다.
지도의 크기 N을 입력 받고 N x N 크기의 지도를 
한 행씩 집이 있는 곳은 1, 없는 곳은 0으로 입력 받은 후, 
1이 상하좌우로 연결되어 있는 곳을 하나의 단지로 단지 내 집 수를 각 구하고 
총 단지 수와 단지내 집 수를 오름차순으로 출력하는 문제였는데
이차원 배열과 재귀함수를 이용한 DFS로 문제를 쉽게 해결하였다.
저녁 먹고 코딩테스트를 해서 TIL 작성이 늦어질까 걱정했는데 생각보다 금새 해결할 수 있어서 다행이었다.
정답을 기록한 코드였지만 풀이를 작성하며 다시 보니
이미 탐색한 집 및 집이 없는 곳에 1을 할당한 이차원 boolean 배열 visited와
지도 상 (i, j) 위치에 집이 없는 곳, 즉 map[i][j] == 0인 조건을 사용할 때
초기에 visited값을 초기화 할 때, map[i][j] == 0인 곳에도 1을 할당해서
집이 없는 곳을 체크할 때는 visited와 map을 둘 다 체크할 필요 없이 
visited만 체크하면 되는데 두 조건을 각각 따로 체크하는 코드가 보였다.
이미 정답 제출을 하였지만 코드를 조금씩 정리하며 다시 제출을 하였고
그 결과 조금이나마 메모리와 시간이 줄어들었다.(거의 눈꼽만큼이긴 하지만..😉)
아마 제출만을 목표로 했다면 내 코드를 다시 볼 생각은 못했을 것 같은데 
TIL 작성을 위해 풀이를 정리하며 불필요한 코드를 더 깔끔히 정리할 수 있어서 좋았다.
비기너 문제는 저녁에 다 풀고 챌린저 문제는 다음날 아침에 다 풀었는데 기분 완전 최고!😁

❓ 오늘 만난 문제

 

💦 나의 시도 & 해결 방법👍

 

❗ 무엇을 새롭게 알았는지

  • DFS 이차원 배열 탐색
  • TIL 작성을 하며 내가 작성한 코드를 정리하는 것의 중요성!

 

📆 내일 학습할 것은 무엇인지

⏹️ 코딩테스트 문제 풀이
⏹️ TIL 작성

728x90