2024. 5. 17. 12:07ㆍ코드리뷰
공부하는허딩크 : https://www.youtube.com/live/d04PXaSTIlQ?feature=shared
중점적으로 생각해야 할 부분은 2가지로 생각했다.
첫번째는 주어진 n과의 차이.
두번째는 차이를 기본으로 한 기존 numlist의 숫자들의 크기이다.
이 2가지를 고려했을때 생각난 방법은 배열이다. 처음 빈 리스트를 만들고 그 안에 numlist의 숫자와 n과의 차이를
각각 추가하고, 2가지 모두 sort를 걸어주면 답이 나오겠다고 생각했다.
<첫번째 시도 : 통과>
이번에는 lambda를 이용해서 1번index에 접근해서 sort를 적용했다.
지난번 백준에서 풀었던 배열 문제중에 같은 배열에 기준이 다른 sort를 각각 걸어주면 첫번째 효과는 유지한채 두번째 효과가 적용되는걸 볼 수 있었다.
<다른사람 풀이 참고>
한줄코드 : 어차피 sorted안에 key로 차순 조건을 설정할 수 있음
즉, 눈에 보이지는 않아도 key에 함수를 abs(n-x)를 걸어주면 차이가 작은 순서대로 numlist가 오름차순으로 조정됨.
단, abs(n - x)가 값이 같을 경우 뒤에 기준을 적용해서 차순이 적용됨.
즉, n = 4일때 3과 5의 차이는 절대값 1임. 차이가 동일할 경우 큰수부터 나열하는 것이 기준임으로 5가 먼저 나와야 하는데 sort의 기본 배열은 오름 차순임으로 n - x를 해서 4 - 5 = -1, 4 - 3 = 1이라서 -1이 더 작은 수 임으로 5가 먼저 나오게됨.
ㄴ 내 머리속에도 아래의 함수는 있는데 실전에서 손가락이 이렇게 움직이지 않네.
추가로 (n - x)기준 말고 -x를 기준으로 해도 -5, -3 이렇게 비교가 됨으로 5부터 나옴.
numlist.sort(key = lambda x: (abs(n - x), -x))로도 가능함.
'코드리뷰' 카테고리의 다른 글
★[python_파이썬_소인수]프로그래머스_LV0_유한소수 판별하기_풀이 (0) | 2024.05.20 |
---|---|
[python_파이썬_pass_에라토스테네스의체 알고리즘]백준_4134번_다음 소수_풀이 (0) | 2024.05.19 |
[python_파이썬_pass]프로그래머스_LV1_명예의 전당(1)_풀이 (0) | 2024.05.16 |
[python_파이썬_pass]프로그래머스_LV1_콜라 문제_풀이 (0) | 2024.05.14 |
[python_파이썬_pass]프로그래머스_LV1_푸드 파이트 대회_풀이 (0) | 2024.05.14 |