반응형
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])
반응형
'컴퓨터공학 > 알고리즘' 카테고리의 다른 글
하노이의 탑을 풀어보자. (1) | 2020.08.06 |
---|---|
19년 9월 2주차 : 신에게는 아직 12척의 배가 남았사옵니다 (1) | 2020.07.11 |
19년 9월 1주차 : 환상의 조합 (0) | 2020.07.04 |
투 포인터(two pointer) (0) | 2020.07.04 |
19년 9월 1주차 : 수의 비밀 (0) | 2020.06.17 |