🪄내가 한 solution
- array의 인덱스와 값으로 부터 [인덱스, |값 - n|, 값] 리스트를 만든다
- 해당 리스트를 sorted()를 사용하여, 정렬 기준으로 x[1](|값 - n|) -> x[-1](값) 오름차순 정렬한다
- 가장 가까운 수가 여러개일 경우 작은 수를 리턴하기 위해 두번째 정렬 조건으로 값(x[-1]) 정해줌
- 정렬이 완료된 리스트에서 0번째 리스트의 0번째 값을 리턴한다
def solution(array, n):
return array[sorted([[index, abs(n-num), num] for index, num in enumerate(array)], key = lambda x: (x[1], x[-1]))[0][0]]
💡추가로 알아야 할 것
- sorted(iterable, key, reverse)
- iterable : 반복 가능한 iterable 자료형 입력
- key : 정렬을 목적으로 하는 함수를 넣음
- reverse : False(오름차순, default), True(내림차순)
'Python > 프로그래머스' 카테고리의 다른 글
[프로그래머스] 대문자와 소문자 (0) | 2023.01.06 |
---|---|
[프로그래머스] 최빈값 구하기 (0) | 2023.01.06 |
[프로그래머스] 분수의 덧셈 (0) | 2023.01.05 |
[프로그래머스 - 파이썬을 파이썬 답게] n진법으로 표기된 string을 10진법 숫자로 변환하기 - int 함수 (0) | 2022.08.02 |
[프로그래머스 - 파이썬을 파이썬답게] 몫과 나머지 - divmod (0) | 2022.08.02 |