KEEP GOING
[python] 백준 17086번 : 아기상어2 본문
반응형
https://www.acmicpc.net/problem/17086
1. 코드 구현
import sys
n,m = map(int, input().split())
sharks = []
for i in range(n):
# 한 행씩 받아오기
places = list(map(int, input().split()))
for j, place in enumerate(places):
if place == 1:
# 상어의 위치
sharks.append((i, j))
res = -1e9
for i in range(n):
for j in range(m):
minDist = 1e9
for x, y in sharks:
# 상어와의 최소거리 구하기
distance = max(abs(i-x), abs(j-y))
minDist = min(distance, minDist)
# 모든 최소 거리 중 최대 거리 구하기
res = max(minDist, res)
print(res)
여기에서 상어와의 거리를 구할 때 왜 거리 정보를 distance = max(abs(i-x), abs(j-y)) 와 같이 구하는지 의문일 수 있다. 그 이유를 설명하기 위해 예시를 가져왔다.
예를 들어, 상어가 있는 위치인 (1,4)와 (0,0)와의 거리를 구한다고 가정하자. 상어는 대각선으로도 이동할 수 있기 때문에 두 점 사이의 거리는 4이다. 이는 x좌표의 차이와 y좌표의 차이 중 더 큰 값을 통해 구할 수 있는 값이다. 따라서 distance = max(abs(i-x), abs(j-y)) 와 같은 방식으로 거리를 구할 수 있다.
반응형
'code review > greedy' 카테고리의 다른 글
[python] SWEA 5202 : 화물 도크 (0) | 2022.02.08 |
---|---|
[python] 백준 15486 번 : 퇴사2 (0) | 2022.01.26 |
[python] 백준 1244번 : 스위치 켜고 끄기 (0) | 2022.01.22 |
[python] 백준 2138번 : 전구와 스위치 (0) | 2022.01.21 |
[python] 백준 2885번 : 초콜릿 식사 (0) | 2022.01.20 |
Comments