자료구조알고리즘/문제풀이
[프로그래머스][Lv.0] 가까운 수
포시
2023. 1. 7. 05:55
728x90
문제
https://school.programmers.co.kr/learn/courses/30/lessons/120890
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
내 풀이
def solution(array, n):
array.sort()
answer = array[0]
x = abs(n - array[0])
for e in array:
if x > abs(n - e):
x = abs(n - e)
answer = e
return answer
answer = array[0]
x = abs(n - array[0])
위 두 값에 대해 초기값 세팅하고 들어가는게 중요하다.
다른 풀이
def solution(array, n):
array.sort(key=lambda x: (abs(x-n), x-n))
return array[0]
sort()의 인자로 전달할 수 있는 key=lambda를 사용해 푼 방법이다.
또한 정렬함수의 key=lambda의 계산식에서 두 번째 인자가 있으면
첫 번째 인자로 정렬한 값들에 대해 추가로 정렬해준다.
이로인해 가장 가까운 수가 여러 개일 때 더 작은 수를 리턴 할 수 있게 된다.
sorted()로 나타내면 아래와 같다.
def solution(array, n):
return sorted(array, key=lambda x: (abs(x-n), x-n))[0]
728x90