
1차원의 점들이 주어졌을 때, 그 중 가장 거리가 짧은 것의 쌍을 출력하는 함수를 작성하시오. (단 점들의 배열은 모두 정렬되어있다고 가정한다.)
예를들어 S={1, 3, 4, 8, 13, 17, 20} 이 주어졌다면, 결과값은 (3, 4)가 될 것이다.
가장 짧은 결과값만 출력했을때
# 점이 정렬이 되었다는 가정하에 리스트에서 n+1과 n번째를 뺀 값을 저장
# n 번째 위치를 저장하고 결과값을 출력시 n 번째과 n+1번째를 출력
print("리스트 배열을 값을 순차적으로 입력해주세요 예)1 3 4 8 13 17 20")
s=list(map(int, input(':').split()))
min_distance=max(s)
n = 0
for i in range(len(s)-1):
distance = s[i+1] - s[i]
if distance<min_distance:
min_distance=distance
n=i
print(f'({s[n]},{s[n+1]})')
리스트 배열을 값을 순차적으로 입력해주세요 예)1 3 4 8 13 17 20
:1 2 4 5 8 15 19
(1,2)
짧은 거리를 모두 찾기
# 각 값과 거리를 딕셔러리에 저장 후 min 값을 구한뒤 그것보다 같거나 작은 값으로 거리를 비교해 출력
print("리스트 배열을 값을 순차적으로 입력해주세요 예)1 3 4 8 13 17 20")
s=list(map(int, input(':').split()))
min_distance=max(s)
n = []
min_ = []
for i in range(len(s)-1):
distance = s[i+1] - s[i]
n.append({"num1": s[i],
"num2": s[i+1],
"dis": distance})
min_.append(distance)
for j in range(len(n)):
if n[j].get('dis') <= min(min_):
print(f"({n[j].get('num1')},{n[j].get('num2')})")
리스트 배열을 값을 순차적으로 입력해주세요 예)1 3 4 8 13 17 20
:1 2 4 5 8 15 19
(1,2)
(4,5)
딕셔너리에 각 값을 저장한뒤 for 문을 돌려 해당 딕셔너리 값으로 가장 작은 거리를 찾고, 값 두개를 써준다.