오도원입니다.

건강과 행복을 위하여

컴퓨터공학/알고리즘

19년 9월 2주차 : 애틋한 친구

오도원공육사 2020. 7. 4. 12:06
반응형

1. 문제 - 난이도 ★

거리가 가장 먼 친구를 찾아보자.

 

2. 입력

첫번째 줄에는 사람 수 N이 주어진다.

두번째 줄부터 N + 1번째 줄까지 i번째 사람의 위치 정보가 좌표로 주어진다.

 

3. 출력

가장 애틋한 친구의 번호를 구분하여 낮은 번호부터 출력한다.

 

4. 알고리즘

이중 반복문을 이용하여 모든 친구들 사이의 거리를 비교하여 가장 거리가 먼 친구를 출력한다.

 

5. 코드

# 입력 처리
N = int(input())
friends = [list(map(int, input().split())) for _ in range(N)]

# 거리 구하는 함수
def dist(x, y):
    return (x[0] - y[0])**2 + (x[1]-y[1])**2 

max_list = [] # 가장 거리가 먼 친구 저장 변수
max_dist = float('-inf') # 가장 가까운 거리 음의 무한대로 초기화

# 이중 반복문을 돌면서 모든 친구간의 거리 비교
for x in range(N):	
    for y in range(x+1, N): # 다음 친구부터 비교
        if dist(friends[x], friends[y]) > max_dist:
            max_list = [x+1, y+1]
            max_dist = dist(friends[x], friends[y])
                            
print(max_list[0],max_list[1])

 

반응형