AI SCHOOL/Python

[Python] 코딩도장

moru_xz 2023. 3. 31. 19:33

1 - 2 

1차원의 점들이 주어졌을 때, 그 중 가장 거리가 짧은 것의 쌍을 출력하는 함수를 작성하시오. (단 점들의 배열은 모두 정렬되어있다고 가정한다.)

예를들어 S={1, 3, 4, 8, 13, 17, 20} 이 주어졌다면, 결과값은 (3, 4)가 될 것이다.

문제 링크: https://codingdojang.com/scode/408

SS = [3, 4, 8, 13, 17, 20]

여도 (3, 4) 둘 사이 거리는 1 이니까 !

 

[답] 

s = [3, 4, 8, 13, 17, 20]
m = float('inf')
index = 0

for i in range(len(s) - 1): #1
    if (m > s[i+1] - s[i]) : # 우리가 쓴 가장 큰 수보다 작으면 인덱스를 기억 #2
        index = i #3
        m = s[i+1] - s[i] # 가장 큰 값은 m 이 갖고 있는거임 #4
        
s[index], s[index+1]

for문 돌아서 다 차이를 

 

for문을 돌려서 차이를 구할 것임

현재 m은 가장 큰값인 무한대(inf)를 갖고있음 그렇기 때문에 's[i+1] - s[i]'에 어떤 수가 들어와도 m보다 작음 = 3, 4 가 들어가도 작음

#1: range 는 6-1 이라 -> 5

#2: 처음 i는 range에서 0부터 들어가니까 -> 0 ->  s[0+1] - s[0]) = 4-3 = 1 

#3: 'inf'인 m보다 무조건 작기 때문에 index 저장

#4: m에 이제 두 수의 차를 저장 -> 앞으로 이것보다 더 작은 값이 나오면 그걸 m에 저장! 아니면 패스!