Skip to content

Conversation

@3veryDay
Copy link
Contributor

@3veryDay 3veryDay commented Jan 8, 2026

🚀 이슈 번호

Resolve: {#2284}

🧩 문제 해결

스스로 해결:

🔎 접근 과정

문제 해결을 위한 접근 방식을 설명해주세요.

  • 🔹 어떤 알고리즘을 사용했는지 : bfs
  • 🔹 어떤 방식으로 접근했는지 : 모든 점에서 bfs 진행
    • bfs 출발점 = 벽높이 이라고 가정하고, 이후 만나는 모든 점에 대해서, 물이 될 것인지, 벽이 될 것인지 판단 ( 벽높이보다 크면 벽, 벽높이보다 작으면 물)
    • 모든 좌표에 대해서 다 돌면, 모든 물의 높이를 (벽 최소 값 - 물)로 구함.
  • 모든 점에 대해서 bfs로 구하고, answer 출력
이 문제는 내가 약 4번째 만나는 건데, 만날 때마다 회피했던 문제..ㅎㅎ 그래서 이번에는 각 잡고 풀어봤는데, 못 풀었다.

결론적으로 모든 좌표에서 bfs 를 시작해서 그 좌표가 벽이라고 가정했을 때, 얼마만큼의 물을 모을 수 있을까! 를 생각해서 풀었는데, 접근 방법은 어느정도 맞았으나 코드로 구현을 하지 못해서 아쉬워, 다음주에 다시 풀어보려고 한다. 

⏱️ 시간 복잡도

시간 복잡도 분석을 작성해주세요.
최악의 경우 수행 시간은 어느 정도인지 분석합니다.

  • Big-O 표기법: O(?)
  • 이유:

💻 구현 코드

from collections import deque
import sys
input = sys.stdin.readline

def bfs(i,j):
    global answer
    visited = [[0] * (M) for _ in range(N)]
    height = pool[i][j]
    min_height = 10
    q = deque([(i,j)])
    mini_pool = [(i,j)]
    visited[i][j] = 1
    
    while q:
        x, y = q.popleft()

        for k in range(4):
            nx = x + dx[k]
            ny = y + dy[k]

            if nx in (-1,N) or ny in (-1,M):
                return 0,0

            if height >= pool[nx][ny] and not visited[nx][ny]:
                q.append((nx, ny))
                mini_pool.append((nx,ny))
                visited[nx][ny] = 1
            elif height < pool[nx][ny]:
                min_height = min(min_height, pool[nx][ny])

    for ar in mini_pool:
        x, y = ar
        answer += (min_height - pool[x][y])
        pool[x][y] = min_height



N, M = map(int, input().split())
pool = [list(map(int, input().rstrip())) for _ in range(N)]

dx = [-1,1,0,0]
dy = [0,0,-1,1]
answer = 0


for i in range(1, N-1):
    for j in range(1, M-1):
        bfs(i,j)

print(answer)

@3veryDay 3veryDay linked an issue Jan 8, 2026 that may be closed by this pull request
@3veryDay 3veryDay merged commit 1365778 into main Jan 13, 2026
1 check passed
@3veryDay 3veryDay deleted the 현서/2284/2 branch January 13, 2026 01:07
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

260108 : 코딩테스트

2 participants