파이썬에서 random 함수로 (x,y) 좌표를 추출하여 최소 거리를 구한후, 해당 좌표를 저장하기

조회수 2568회

제가 (x,y) 형태의 노드로 이뤄진 리스트 V에서, 특정 elements 2개를 random으로 추출하여 두 점 사이의 최소 거리를 반복적으로 구하려고 합니다. 이렇게 코드를 작성하였는데 dist를 설정할 때 오류가 납니다.... 왜 그런 것일까요? 참고로 while len(V) > 0이라는 조건을 붙인 것은 최소 거리를 나오게끔 하는 node를 추출하여 new_path라는 또 다른 리스트에 보관하기 위해서 입니다. V의 원소가 하나도 없는 경우 while을 탈출하기 위해서에요.

import random

import math

def pita(p1, p2):
    return math.sqrt( (p1[0] - p2[0]) **2 + (p1[1] - p2[1]) **2 )

new_path = [ ] # 빈 리스트 만들기

while len(V) > 0:

    min_dist = None
    min_index = None

    # min_index 찾기
    index= random.randint(0,len(V))

    for i in range(len(V)):
        dist = pita( V[i], V[index]) # V와 new_path 리스트로 dist를 구하기

        if min_dist == None or min_dist > dist:
            min_dist = dist
            min_index = i

     #원소 min_index를 V에서 빼고 new_path에 추가하기
            temp_V.pop(i)
            new_path.append(i)


     # new_path 반환
        return new_path
  • (•́ ✖ •̀)
    알 수 없는 사용자
  • dist를 설정할 때 오류가 난다면 calc_edge_dist 함수가 잘못된게 아닐까요? Demi 2018.6.8 19:00
  • 고맙습니다!! 제가 원래 사용하려 했던 함수명(def pita())을 똑같이 적은 게 아니었군요. 그런데 다시 수정했는데도 계속 에러가 납니다. 그렇다면 일단 인덱스를 잘못 설정해서 난 에러는 아닌 것이죠? 알 수 없는 사용자 2018.6.8 19:46
  • 어떤 에러가 발생하는지에 따라 다르겠지요? 정확한 코드를 알려주셔야 답변할 수 있을 것 같습니다. Demi 2018.6.11 13:59

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)