heheh
히히
heheh
전체 방문자
오늘
어제
  • 히히 (75)
    • AI (14)
      • Model (Study) (3)
      • Model (Paper) (7)
      • Tip! (4)
    • Backend (3)
      • ASP.NET (1)
      • Spring (2)
      • program (0)
      • JAVA (0)
    • Program (11)
      • Docker (3)
      • Github (5)
      • AWS (3)
    • OS (1)
      • Window (1)
      • Linux (0)
    • Python (14)
      • Python Lib (11)
      • Pytorch (1)
      • Tensorflow (1)
      • 크롤링 (1)
    • Spark (3)
      • Scala (2)
      • Pyspark (0)
      • SQL (1)
    • IOS (Swift) (0)
      • 기본 개념 (0)
    • 프로젝트 (3)
      • [AI] GAN (0)
      • [IOS] Swift (3)
      • [AI] 추천시스템 (0)
    • 분석 (1)
    • 알고리즘 풀이 (22)
      • 백준 (22)
    • 기타 (3)
      • 장비세팅 (3)
      • 소개 (0)

인기 글

최근 글

최근 댓글

hELLO · Designed By 정상우.
heheh

히히

알고리즘 풀이/백준

백준 2667번 : 단지번호붙이기

2021. 2. 3. 12:18

문제 : www.acmicpc.net/problem/2667

 

2667번: 단지번호붙이기

<그림 1>과 같이 정사각형 모양의 지도가 있다. 1은 집이 있는 곳을, 0은 집이 없는 곳을 나타낸다. 철수는 이 지도를 가지고 연결된 집의 모임인 단지를 정의하고, 단지에 번호를 붙이려 한다. 여

www.acmicpc.net

 

풀이

너비 우선 탐색으로 해결하였다.

모든 위치를 한번씩 방문하고 해당 위치에 집이 있을 경우(==1) 큐에 추가한다.

while que에서 상하좌우 중 집이 있을 경우 큐에 추가한다.

큐에 추가를 할때 마다 k + 1을 해주고, 큐가 끝나면 num리스트에 k값(단지당 집의 개수)을 추가한다.

최종적으로 num리스트의 길이와 정렬된 num을 출력한다.

 

N = int(input())
house = []
for i in range(N):
    temp = list(map(int, input()))
    house.append(temp)

num = []
que = deque()
xx = [-1,1,0,0]
yy = [0,0,-1,1]

for x in range(N):
    for y in range(N):
        k = 0
        
        if house[x][y] == 1:
            que.append((x,y))
            house[x][y] = 0
            k += 1
            
        while que:
            i, j = que.popleft()
            for a in range(4):
                if 0<=i+xx[a]<N and 0<=j+yy[a]<N and house[i+xx[a]][j+yy[a]] == 1:
                    que.append((i+xx[a],j+yy[a]))
                    house[i+xx[a]][j+yy[a]] = 0
                    k += 1

        if k != 0:
            num.append(k)

print(len(num))
num.sort()
for i in num:
    print(i)

'알고리즘 풀이 > 백준' 카테고리의 다른 글

백준 1003번 : 피보나치 함수 (Python)  (0) 2021.02.04
백준 1541번 : 잃어버린 괄호 (Python)  (0) 2021.02.04
백준 11399번 : ATM  (0) 2021.02.01
백준 2579번 : 계단 오르기  (0) 2021.02.01
백준 9095번 : 1, 2, 3 더하기  (0) 2021.02.01
    heheh
    heheh

    티스토리툴바