본문 바로가기
Computer Science/Algorithm

[구름톤 챌린지] Day9 : 폭탄 구현하기(2)

by 유우석 2023. 8. 27.

입력 및 출력

소스 코드

n, k = map(int, input().split())
a = [input().strip().split() for _ in range(n)]
bomb = [tuple(map(int, input().split())) for _ in range(k)]
ground = [[0 for _ in range(n)] for _ in range(n)]

dydx = [(1, 0), (0, 1), (-1, 0), (0, -1)]

for y, x in bomb:
	y -= 1
	x -= 1
	if a[y][x] == '0':
		ground[y][x] += 1
	elif a[y][x] == '@':
		ground[y][x] += 2
	for dy, dx in dydx:
		ny, nx = y + dy, x + dx
		if 0 <= ny < n and 0 <= nx < n:
			if a[ny][nx] == '0':
				ground[ny][nx] += 1
			elif a[ny][nx] == "@":
				ground[ny][nx] += 2

ans = -1
for i in ground:
	ans = max(ans, max(i))
print(ans)

문제 풀이

폭탄이 떨어지는 위치를 한 배열에 담아둔 다음, 좌표를 하나씩 이용해서 폭탄을 직접 투하시킨다.

폭탄이 떨어진 위치 값 변동 → 상 하 좌 우 위치 값 변동

직접 땅이 0인지 @인지 #인지에 따라 값을 변화시킨다.

모든 폭탄 투하를 다 끝낸 다음, 가장 큰 값을 찾아서 출력한다.

 

느낀 점

이차원 배열 위에서 상하좌우 탐색을 하는 것에 익숙하지 않았다면 꽤나 헤맸을 수도 있었을 것 같다.

배열 위에서 원하는대로 내가 작업하는 커서를 움직일 수 있다면 쉽게 해결할 수 있을 것이다!