각 1에서부터 dfs로 구현하면 시간초과가 뜹니다
예시: 6 6 101010 000000 101010 000000 101010 000000
이와 같은 형태로 들어오게 되면 O(M^2 N^2)이 되어 1000 by 1000이 되면 시간초과가 발생합니다
16946번 - 벽 부수고 이동하기 4
저도 같은 방법으로 접근했다가 시간초과를 겪고 수정했습니다 제가 사용한 방법은 1을 따로 0으로 변환하지 않고 각 0 묶음의 갯수를 dfs로 헤아렸습니다 그 후 각 1마다 상하좌우에 0이 있는 경우 각 묶음의 합을 모두 더한 후 +1하는 식으로 계산했습니다
그러니깐 지금의 방식은 0이 넓게 연결되어있으면 dfs나 bfs를 통해 중복해서 카운트를 하게 되는데, 0을 미리 한 번만 세서 각 1을 중심으로 더해서 중복으로 계산하는 것을 줄였습니다
다만 이 방법에서는 처음의 예시와 같이 하나의 1 주변에 한 묶음의 0이 상하좌우에 중복 될 경우 한 번만 더해지도록 구현해야합니다
댓글을 작성하려면 로그인해야 합니다.
sohnryang 5년 전
간단하게 dfs로 코딩했는데 시간초과 뜹니다. 한번 봐주시면 감사하겠습니다.