본문 바로가기
코딩테스트/Python

[python 구름] 개미와 진딧물

by nahkim 2023. 5. 14.

📜 접근 방법

  1. 개미와 진드기의 위치를 저장한다.
  2. 개미의 갯수를 저장한다.
  3. 개미의 저장 위치와 진드기의 저장 위치를 기준으로 맨해튼 거리로 m이하인지 확인한다. (개미 한마리를 기준으로 전체 진드기의 위치 중 가장 가까운 것만 변수에 넣어둔다.)
    1. 맨해튼 거리로 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