📜 접근 방법
- 개미와 진드기의 위치를 저장한다.
- 개미의 갯수를 저장한다.
- 개미의 저장 위치와 진드기의 저장 위치를 기준으로 맨해튼 거리로 m이하인지 확인한다. (개미 한마리를 기준으로 전체 진드기의 위치 중 가장 가까운 것만 변수에 넣어둔다.)
- 맨해튼 거리로 m 초과라면 개미의 갯수 - 1 을 한다.
❌ 실패 코드
리스트 전체를 받아서 맨해튼 거리를 계산하려니까 너무 많은 시간을 소요했다.
✅ 정답 코드
import sys
input = sys.stdin.readline
n, m = map(int, input().split())
ants, aphids = [], []
for i in range(n):
ground = list(map(int, input().split()))
for j in range(n):
if ground[j] == 1:
ants.append([i, j])
elif ground[j] == 2:
aphids.append([i, j])
ants_len = len(ants)
for y1, x1 in ants:
min_dist = 9 ** 9
for y2, x2 in aphids:
dist = abs(y2 - y1) + abs(x2 - x1)
min_dist = min(min_dist, dist)
if min_dist > m:
ants_len -= 1
print(ants_len)
💡알게 된점
지도로 된 좌표같은 경우 내가 자동적으로 리스트로 입력받아서 저장하는 것을 알았다. 지도 전체를 저장해서 풀려고 하지 않고 문제를 해결하는 방법을 잘 생각해봐야겠다.
'코딩테스트 > Python' 카테고리의 다른 글
[python 구름] 체크 카드 (0) | 2023.05.15 |
---|---|
[python 구름] Stack (0) | 2023.05.15 |
[python 구름] 제곱 암호 (0) | 2023.05.13 |
[python 구름] 폭탄 구현하기 (2) | 2023.05.11 |
[python 구름] 0커플 (0) | 2023.05.10 |