반응형
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
- Nonhomogeneous ODEs
- Conversation
- 삼성SW역량테스트
- 스피치 연습
- English
- 영어회화
- 미방
- 문제풀이
- Python
- ODEs
- speech
- Problem Set 1.4
- 공수 문제풀이
- 공업수학
- Advanced Engineering Mathematics
- Problem set 2.7
- 백준
- homogeneous
- Problem set 1.5
- Homogeneous ODEs
- Ode
- 공수1
- vocabulary
- SW역량테스트
- kreyszig
- 미분방정식
- 비제차 상미분 방정식
- 공학수학
- 코딩테스트
- 공수
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 |