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에 저장! 아니면 패스!
'AI SCHOOL > Python' 카테고리의 다른 글
[Python] 비즈니스 데이터 분석(RFM) (0) | 2023.03.08 |
---|---|
[Python] 비즈니스 데이터 분석(Online Retail Data Set) (0) | 2023.03.07 |
[Python] 전국 신규 민간 아파트 분양가격 동향 (0) | 2023.02.09 |
[Python] Plotly / FinanceDataReader (1) | 2023.02.02 |
[Python] FinanceDataReader - 2 (0) | 2023.02.01 |