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
- 문제풀이
- 공업수학
- kreyszig
- 비제차 상미분 방정식
- 공수 문제풀이
- 미분방정식
- 공수1
- English
- Problem set 2.7
- ODEs
- 공학수학
- Problem set 1.5
- SW역량테스트
- Advanced Engineering Mathematics
- 삼성SW역량테스트
- 공수
- vocabulary
- Python
- 미방
- 영어회화
- Nonhomogeneous ODEs
- 대학
- 코딩테스트
- Homogeneous ODEs
- 맛집
- homogeneous
- 백준
- Ode
- Conversation
- Problem Set 1.4
Archives
- Today
- Total
한걸음
백준 2589 : 보물섬 본문
반응형
https://www.acmicpc.net/problem/2589
https://github.com/HPYoo/swcodingtest/commit/62118e398922bb9aac5c97340c4c44f14f86ed08
1. 단순하게 생각하자.
처음엔 땅 덩어리 파악 후 조합 함수 활용하여 거리를 전부 확인해주려고 했는데, 이렇게 하면 시간초과 날게 분명해보였다. 그냥 땅 위치 정보만 따온다음에 하나씩 BFS 로 최대 거리 측정하는 것이 단순하면서도 빠르게 접근 가능할 것 같았음.(내 생각엔) 내 면도날은 여기까지인가? 그래도 암튼 통과했으니 다행. 다른 코드들 찾아보면서 가속화 시킬 수 있는 방법 찾아보자.
-1) 보드 내용 받아온다음에 땅 정보 전부 파악
-2) 하나씩 빼보면서 BFS 탐색 : 어차피 W로 되어있는 곳은 못가니까 큐에 많은 데이터가 들어가지는 않을 것
-3) 계산한 BFS를 토대로 거리함수 계속 최신화
2. 전체코드
1차 풀이 - 메모리 : 121952 KB, 시간 : 1056 ms (순수 파이썬 내장 함수 활용)
2차 수정 - 메모리 : 129724 KB, 시간 : 976 ms (deque 사용) // 풀이시간 : 30 min
! 조심할 것 : 코드 짤 때 방문함수 처리 등 자잘한 실수, 인덱싱 실수 하지 않을 것!
from collections import deque
N, M = map(int, input().split())
board = [list(map(str, input())) for _ in range(N)]
land_info = deque()
for i in range(N):
for j in range(M):
if board[i][j] == 'L' :
land_info.append([i, j])
# 상, 하, 좌, 우
dx = [-1, 1, 0, 0]
dy = [0, 0, -1, 1]
# Find Continent
def solve():
maxValue = 0
while land_info :
x, y = land_info.popleft()
q = deque([[x, y, 0]])
visited = [[False for _ in range(M)] for _ in range(N)]
visited[x][y] = True
while q :
x, y, cnt = q.popleft()
maxValue = max(maxValue, cnt)
for d in range(4):
nx = x + dx[d]
ny = y + dy[d]
if 0 <= nx < N and 0 <= ny < M and not visited[nx][ny] :
if board[nx][ny] == "L" :
visited[nx][ny] = True
q.append([nx, ny, cnt + 1])
print(maxValue)
solve()
반응형
'Coding Test' 카테고리의 다른 글
백준 2234 : 성곽 (3) | 2023.11.29 |
---|---|
백준 2468 : 안전영역 (2) | 2023.11.25 |
백준 2784 : 가로 세로 퍼즐 (1) | 2023.11.23 |
백준 2636 : 치즈 (1) | 2023.11.22 |
백준 2536 : 버스 갈아타기 (4) | 2023.11.21 |