나의풀이
def solution(numlist, n):
a=[]
answer=[]
for i in numlist:
tmp= abs(i-n)
a.append([tmp, i])
sorted_a = sorted(a, key=lambda x: (x[0], -x[1]))
for i in sorted_a:
answer.append(i[1])
return answer
▶ append의 요소로 리스트를 통째로 넣을 수 있다. → a.append([tmp, i])
▶ a리스트의 요소가 [tmp, i]로 2개씩 추가 되므로 x[0], -x[1]은 각각의 요소에 접근한다.
▶ 즉 tmp = x[0] 으로 tmp를 오름차순으로 정렬 하되, tmp의 값이 중복되는 경우에는
▶ i = x[1] 인데 -가 x[1]에 붙었으므로 i는 내림차순으로 정렬한다.
▶ (x[0], -x[1]) → 여기에서 소괄호(튜플), 대괄호(리스트) 모두 사용가능하다.
▶ (x[0], -x[1]) → answer의 각 행의 요소가 2개라는 사실이 중요하다.
모범답안
def solution(numlist, n):
return sorted(numlist,key = lambda x: [abs(x-n),-x])
▶ sorted(numlist,key = lambda x: [abs(x-n),-x])
key에 요소를 "리스트" 혹은 "튜플"로 두개 이상 줄수 있다. 이경우 앞에 값이 같을 때 뒤의 값을
이용해서 나열한다.
요소가 하나이고, 값이 같을 때는 먼저 처리된 수 즉 인덱스가 작은 것이 먼저 나열된다.
▶ numblist를 key로 정렬하되 첫번째는 abs(x-n)을 기준으로
▶ 그 값이 작은 값부터 "오름차순"으로 정렬하고
▶ 동일한 값이 있는 경우에는 두번째 요소 -x를 "내림차순"으로 정렬한다. [앞에 -가 붙었으므로]
▶ [abs(x-n),-x] → 여기에서 대괄호(리스트), 소괄호(튜플) 모두 사용가능하다.
▶ [abs(x-n),-x] → answer의 각 행의 요소가 2개라는 사실이 중요하다.
'프로그래머스(파이썬) > LV.0(파이썬)' 카테고리의 다른 글
외계행성의 나이 - chr, join 메서드 (0) | 2022.11.15 |
---|---|
치킨 쿠폰★ 갱신의 논리 (0) | 2022.11.15 |
저주의 숫자3 (0) | 2022.11.14 |
문자 반복 출력 - 빈 문자열 이용 (0) | 2022.11.14 |
배열 뒤집기 (0) | 2022.11.14 |