
입력 및 출력


소스 코드
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인지 @인지 #인지에 따라 값을 변화시킨다.
모든 폭탄 투하를 다 끝낸 다음, 가장 큰 값을 찾아서 출력한다.
느낀 점
이차원 배열 위에서 상하좌우 탐색을 하는 것에 익숙하지 않았다면 꽤나 헤맸을 수도 있었을 것 같다.
배열 위에서 원하는대로 내가 작업하는 커서를 움직일 수 있다면 쉽게 해결할 수 있을 것이다!
'Computer Science > Algorithm' 카테고리의 다른 글
| [구름톤 챌린지] Day13 : 발전기(2) (0) | 2023.09.01 |
|---|---|
| [구름톤 챌린지] Day10 : GameJam (2) | 2023.08.27 |
| [구름톤 챌린지] Day5 : 이진수 정렬 (0) | 2023.08.20 |
| [구름톤 챌린지] Day4 : 완벽한 햄버거 만들기 (0) | 2023.08.20 |
| [백준] 7579번 : 앱 (Python) (0) | 2023.05.02 |