-- 예전 기록/[완료] 구름톤 챌린지

[ 구름톤 챌린지 ] 13일차 미션 - 발전기 (2)

rejo 2023. 8. 30. 12:09

구름톤 챌린지 13일차입니다. 챌린지를 통해 문제 풀이 실력을 향상시킬 수 있으며, 블로그에 학습 일기도 작성하면 추가 보상도 주어지니 관심 있으시면 참여해보시는 것을 추천드립니다.

https://level.goorm.io/l/challenge/goormthon-challenge

 

구름LEVEL

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

level.goorm.io

 

문제

입력 / 출력

풀이 과정

BFS를 이용해 단지의 개수를 센 후, 가장 많은 단지가 있는 건물 유형의 번호를 출력했다.

import sys
from collections import deque
input = sys.stdin.readline

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

danji = [0 for _ in range(31)]
visited = [[0 for _ in range(n)] for _ in range(n)]

row = [-1, 1, 0, 0]
col = [0, 0, -1, 1]

for i in range(n):
	for j in range(n):
		if visited[i][j] == 0:
			visited[i][j] = 1
			now = maps[i][j]
			cnt = 1
			
			queue = deque()
			queue.append((i, j))
			
			while queue:
				y, x = queue.popleft()
				
				for d in range(4):
					ny = y + row[d]
					nx = x + col[d]
					
					if 0 <= ny < n and 0 <= nx < n and visited[ny][nx] == 0 and maps[ny][nx] == now:
						visited[ny][nx] = 1
						queue.append((ny, nx))
						cnt += 1
			
			if cnt >= k:
				danji[now] += 1

result = 0
for i in range(1, 31):
	if danji[result] <= danji[i]:
		result = i

print(result)