https://www.acmicpc.net/problem/2667
입력
지도의 크기 N
줄마다 N개의 자료
→ N x N
출력
총 단지수, 각 단지내 집의 수 오름차순
import sys
from collections import deque
input = sys.stdin.readline
n = int(input())
g = [list(map(int, input().rstrip())) for _ in range(n)]
# 상하좌우
dx = [-1, 1, 0, 0]
dy = [0, 0, -1, 1]
def bfs(g, x, y):
cnt = 1
q = deque()
q.append((x, y))
g[x][y] = 0
while q:
x, y = q.popleft()
for i in range(4):
nx = x + dx[i]
ny = y + dy[i]
# 벗어나지 않게 범위 처리
if nx < 0 or nx >= n or ny < 0 or ny >= n:
continue
if g[nx][ny] == 1:
cnt += 1
g[nx][ny] = 0 # 갔던곳은 다시 못가게 0으로
q.append((nx, ny))
return cnt
result = []
# 1의 처음 좌표를 찾아주어야 함
for i in range(n):
for j in range(n):
if g[i][j] == 1:
result.append(bfs(g, i, j))
result.sort()
print(len(result))
for i in range(len(result)):
print(result[i])
처음에 예제에서 원하는 값이 나와서 제출했더니 틀렸다고 나왔다.
생각해보니 오름차순으로 출력해야하는데 정렬을 안했었다,,