알고리즘

[구름톤 챌린지] Day 13 - 발전기2(DFS)

motti 2023. 9. 3. 17:17
반응형

https://level.goorm.io/exam/195695/%EB%B0%9C%EC%A0%84%EA%B8%B0-2/quiz/1

 

구름LEVEL

난이도별 다양한 문제를 해결함으로써 SW 역량을 향상시킬 수 있습니다.

level.goorm.io


문제


풀이

from collections import deque

n,k = map(int,input().split())

arr = [list(map(int,input().split())) for _ in range(n)]

ans = [0]*(max(set(sum(arr,[])))+1)


dx = [-1,1,0,0]
dy = [0,0,-1,1]

dq = deque()


for i in range(n):
	for j in range(n):
		if arr[i][j] > 0: 
			num = arr[i][j]
			dq.append((i,j))
			arr[i][j] = 0
			cnt = 1
			while dq:
				x,y = dq.pop()
				for h in range(len(dx)):
					nx = x+dx[h]
					ny = y+dy[h]
					if 0<=nx<n and 0<=ny<n:
						if arr[nx][ny] == num:
							dq.append((nx,ny))
							arr[nx][ny] = 0
							cnt +=1
			if cnt >= k :
				ans[num] += 1  

res = 0
start = ans[0]
for i in range(1,len(ans)):
	num = ans[i]
	if num >= start:
		start = num
		res = i
print(res)

1. 전날 문제처럼 DFS로 풀되 ans이란 리스트를 만들어서 해당 단지 번호가 k 개수 이상이면 단지를 카운트하는 방법

반응형