나의 풀이
def solution(array, n):
a=[]
answer=[]
for i in array:
tmp= abs(i-n)
a.append([tmp, i])
print(a)
sorted_a = sorted(a, key=lambda x: (x[0], x[1]))
for i in sorted_a:
answer.append(i[1])
return answer[0]
▶ tmp, i 를 리스트로 해서 리스트를 통째로 집어 넣음
▶ tmp(차)를 오름 차순으로 정렬하되, tmp가 동일한 값인 경우 i를 오름차순으로 정렬
다른 사람의 풀이
def solution(array, n):
array.sort(key = lambda x : (abs(x-n), x-n))
print(array)
answer = array[0]
return answer
▶ 정렬대상은 array의 요소인 x이며
▶ sort key 값에 2개 항목을 넣을 수 있다. → 첫번째 정렬, 두번째 정렬
▶ 첫번째 정렬방법은 abs(x-n) 의 오름차순이다.
▶ 두번째 정렬방법은 x-n의 오름차순이다. 이는 abs(x-n)이 같은 경우 작은 숫자를 좌측으로 배측하기 위함이다.
▶ n= 9 이고 array= [8, 10] 인 경우 abs(x-n)값이 동일하다.
그러나 x-n의 오름차순이므로
▶ 8의 경우 x-n 즉 8 - 9 = -1이고, 9의 경우 x-n = 10 - 9= +1이다.
▶ array에 8이 앞에 오고, 10이 뒤에 온다.
▶ 최종적으로 맨 앞에 array[0]을 추출하면 된다.
'프로그래머스(파이썬) > LV.0(파이썬)' 카테고리의 다른 글
암호해독★ - 인덱스 + step(점프) (0) | 2022.11.18 |
---|---|
369게임 - lambda★ (0) | 2022.11.18 |
삼각형의 완성조건(1) (0) | 2022.11.18 |
중복된 문자제거★ - not in 연산자 (0) | 2022.11.18 |
컨트롤 제트★★ (0) | 2022.11.18 |