<jupyter_start><jupyter_text>코딩도장 408번 문제- 링크 (http://codingdojang.com/scode/408?answer_mode=hide)  문제 (다음 입사문제 중에서)1차원의 점들이 주어졌을 때, 그 중 가장 거리가 짧은 것의 쌍을 출력하는 함수를 작성하시오. (단 점들의 배열은 모두 정렬되어있다고 가정한다.)예를들어 S={1, 3, 4, 8, 13, 17, 20} 이 주어졌다면, 결과값은 (3, 4)가 될 것이다.  접근- 반복문으로 하면 너무 복잡해질 것- list를 받고 `list[1:]` 를 구해서 zip으로 묶고 그 쌍의 차이를 구하면 좋을 것 같음- list comprehension으로 길이를 list로 받기?     - 길이 짧은 것의 pair를 돌려주는 방법은? - 길이를 계산해서 정렬 / 길이를 key로 정렬  풀이 1- list comprehension을 이용해서 한번에 (거리, a, b)의 리스트를 만들고- 거리로 sorted하고 0번째 값의 (a, b)를 호출<jupyter_code>ls = [1, 3, 4, 8, 13, 17, 20]
sorted(list((- a + b, a, b) for a, b in zip(ls, ls[1:])))[0][1:]<jupyter_output><empty_output><jupyter_text>풀이 2- ls와 `ls[1:]`을 zip해서 (a, b)의 리스트 'pair'를 만들고- b-a를 key로 sort하고 0번째 pair를 호출<jupyter_code>ls = [1, 3, 4, 8, 13, 17, 20]
pair = list(zip(ls, ls[1:]))
pair.sort(key = lambda tup: tup[1] - tup[0])
print(pair[0])
ls = [1, 3, 4, 8, 13, 17, 20]
pair = list(zip(ls, ls[1:]))
sorted(pair, key=lambda tup: tup[1] - tup[0])[0]<jupyter_output><empty_output>
{'fraction_non_alphanumeric': 0.173828125, 'fraction_numerical': 0.064453125, 'mean_word_length': 4.0, 'pattern_counts': {'":': 0, '<': 9, '<?xml version=': 0, '>': 9, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'chain_length': '2', 'dir': 'jupyter-structured-clean-dedup', 'id': '270763', 'license': 'MIT', 'n_tokens_mistral': 722, 'n_tokens_neox': 782, 'n_words': 162, 'path': 'Algorithm Problems/cddj_408_shortest_distance_pair.ipynb', 'repo_name': 'hyeshinoh/Study_Algorithm', 'size': '1024'}