알고리즘

[구름톤 챌린지] Day 9 - 폭탄 구현하기(2)

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

https://level.goorm.io/exam/195691/%ED%8F%AD%ED%83%84-%EA%B5%AC%ED%98%84%ED%95%98%EA%B8%B0-2/quiz/1

 

구름LEVEL

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

level.goorm.io


문제


풀이

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

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

score = [ [0]*n for _ in range(n)]

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

for _ in range(k):
	y,x = map(int,input().split())
	y -= 1
	x -= 1
	for h in range(len(dx)):
		ny = y + dx[h]
		nx = x + dy[h]
		if 0<=ny<n and 0<=nx<n:
			if arr[ny][nx] == '0':
				score[ny][nx] += 1
			elif arr[ny][nx] == '@':
				score[ny][nx] += 2

print(max(map(max,score)))

1. BFS를 이용하여 상하좌우 자기자신까지 5자리를 탐색하고 조건에 맞을 경우 score를 갱신

2. score에서 최댓값을 구할때 max(map(max,score))를 사용하면 map이 제일 큰 값이 있는 행을 뽑고 다시 max를 통해 최댓값을 출력한다.

반응형