반응형
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 |
Tags
- 미분방정식
- Advanced Engineering Mathematics
- Problem set 1.5
- 비제차 상미분 방정식
- Python
- vocabulary
- 공수1
- 공학수학
- homogeneous
- 영어회화
- 공업수학
- speech
- Problem Set 1.4
- 공수
- 스피치 연습
- Ode
- English
- Problem set 2.7
- Nonhomogeneous ODEs
- kreyszig
- 백준
- Homogeneous ODEs
- SW역량테스트
- Conversation
- 삼성SW역량테스트
- ODEs
- 코딩테스트
- 미방
- 공수 문제풀이
- 문제풀이
Archives
- Today
- Total
한걸음
백준 4963 : 섬의 개수 본문
반응형
https://www.acmicpc.net/problem/4963
4963번: 섬의 개수
입력은 여러 개의 테스트 케이스로 이루어져 있다. 각 테스트 케이스의 첫째 줄에는 지도의 너비 w와 높이 h가 주어진다. w와 h는 50보다 작거나 같은 양의 정수이다. 둘째 줄부터 h개 줄에는 지도
www.acmicpc.net
1. 기본 중의 기본
BFS, DFS로 탐색을 하거나 그래프 연결관계를 만들어서 풀거나 가장 기본적인 지식을 적용해 볼 수 있는 문제. 이번에는 BFS로 풀었다. 다음엔 DFS와 그래프 이론으로 풀어봐야겠다.
2. 전체코드
메모리 : 115968 KB, 시간 : 180 ms, 풀이 시간 : 10 min
# 상, 하, 좌, 우, 상좌, 상우, 하좌, 하우
dx = [-1, 1, 0, 0, -1, -1, 1, 1]
dy = [0, 0, -1, 1, -1, 1, -1, 1]
def bfs():
visited = [[False for _ in range(w)] for _ in range(h)]
result = 0
for i in range(h):
for j in range(w):
if board[i][j] != 0 and not visited[i][j] :
q = [[i, j]]
visited[i][j] = True
result += 1
while q :
x, y = q[0]
del q[0]
for d in range(8):
nx = x + dx[d]
ny = y + dy[d]
if 0 <= nx < h and 0 <= ny < w and not visited[nx][ny] :
if board[nx][ny] == 1 :
visited[nx][ny] = True
q.append([nx, ny])
return result
res = []
while True :
w, h = map(int, input().split())
if [w, h] == [0, 0] : break
board = [list(map(int, input().split())) for _ in range(h)]
res.append(bfs())
for i in range(len(res)):
print(res[i])
반응형
'Coding Test' 카테고리의 다른 글
백준 2636 : 치즈 (1) | 2023.11.22 |
---|---|
백준 2536 : 버스 갈아타기 (4) | 2023.11.21 |
백준 23290 : 마법사 상어와 복제 (2) | 2023.11.19 |
백준 2638 : 치즈 (0) | 2023.11.18 |
백준 3085 : 사탕 게임 (0) | 2023.11.16 |