Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- Problem Set 1.4
- 공수1
- kreyszig
- 비제차 상미분 방정식
- SW역량테스트
- Ode
- 공수 문제풀이
- 백준
- 맛집
- Conversation
- 미방
- homogeneous
- ODEs
- Nonhomogeneous ODEs
- 삼성SW역량테스트
- 대학
- Problem set 1.5
- Problem set 2.7
- 영어회화
- 공수
- 미분방정식
- Homogeneous ODEs
- vocabulary
- 공학수학
- Advanced Engineering Mathematics
- 문제풀이
- English
- 공업수학
- Python
- 코딩테스트
Archives
- Today
- Total
한걸음
[221003] 백준 2573 : 빙산 본문
반응형
https://www.acmicpc.net/problem/2573
1. 빙산 덩어리 개수 세는 것과 녹이는 것을 동시에 진행해야 함.
큐의 사용을 최소화 해야한다. 빙산 덩어리를 세면서 녹여야 한다. 한 덩어리 세고, 녹이고, 그 다음 덩어리 구간 파악하고, 녹이고, 이런식으로 진행해야한다. 큐를 사용하는 경우를 늘리면 바로 시간초과가 나버린다.
2. 전체 코드
메모리 : 164096 KB, 시간 : 564 ms, 풀이 시간 : 40 min
N, M = map(int, input().split())
board = [list(map(int, input().split())) for _ in range(N)]
dx = [-1, 1, 0, 0]
dy = [0, 0, -1, 1]
def bfs(x, y, visited) :
q = [[x, y]]
melt_q = []
visited[x][y] = True
while q :
x, y = q[0]
del q[0]
melt_cnt = 0
for i in range(4) :
nx = x + dx[i]
ny = y + dy[i]
if (0 <= nx < N) and (0 <= ny < M) and not visited[nx][ny] :
if board[nx][ny] != 0 :
visited[nx][ny] = True
q.append([nx, ny])
else :
melt_cnt += 1
if melt_cnt :
melt_q.append([x, y, melt_cnt])
return melt_q
year = 0
while True :
count = 0
visited = [[False for _ in range(M)] for _ in range(N)]
for i in range(N):
for j in range(M):
if board[i][j] != 0 and not visited[i][j] :
count += 1
# 처음부터 덩어리를 세고 시작함
melt = bfs(i, j, visited)
while melt :
mx, my, m = melt[0]
del melt[0]
board[mx][my] = max(board[mx][my] - m, 0)
# visited 함수가 방문처리를 할테니 덩어리 마다 계산 수행이 끝나면
# 종료 조건 확인 후 1년 추가
if count == 0 :
year = 0
break
if count >= 2 :
break
year += 1
print(year)
반응형
'Coding Test' 카테고리의 다른 글
[221005] 백준 17837 : 새로운 게임 2 (1) | 2022.10.05 |
---|---|
[221004] 백준 19327 : 어른 상어 (0) | 2022.10.04 |
[221003] 백준 17822 : 원판 돌리기 (0) | 2022.10.03 |
[221001] 백준 21608 : 상어 초등학교 (0) | 2022.10.01 |
[221001] 백준 20061 : 모노미노도미노 2 (0) | 2022.10.01 |