Algorithm/코딩테스트 (Python)

[프로그래머스] 가까운 수

싱브이 2023. 12. 5. 22:32
728x90
반응형

문제

정수 배열 array와 정수 n이 매개변수로 주어질 때, array에 들어있는 정수 중 n과 가장 가까운 수를 return 하도록 solution 함수를 완성해주세요.

 

 

 

 

내 생각

정렬을 하면 가까운 수를 찾을 때 더 효율적으로 찾을 수 있다! (정렬 안하고 했다가 한번 실패했음 ㅠ)

초기화가 중요한 문제같다. 초기값 설정은 가장 가까운 수로 구하는 것, 그리고 절대값!

n과의 차이를 구하면서 최소 차이를 구하면 된다. 가장 최소 차이를 나타내는 원소가 가장 가까운 수이다!

abs()를 떠올리는 것도 중요한 부분이다. 왜냐하면 음수든, 양수든 그저 최소 차이만을 나타내면 가까운 것이기 때문이다. 

 

 

 

 

내 코드

def solution(array, n):
    array.sort()
    answer = array[0]
    tmp = abs(n - answer)
    for num in array:
        x = abs(n - num)
        if x < tmp:
            tmp = x
            answer = num
    return answer

 

 

 

다른 사람 코드

def solution(array, n):
    return sorted(array, key=lambda x: (abs(x-n), x-n))[0]

 

 

 

 

** sorted(iterable, key, reverse)

  • iterable : 반복 가능한 iterable 자료형 입력
  • key : 정렬을 목적으로 하는 함수를 넣음
  •  reverse : False(오름차순, default), True(내림차순)

 

** abs(x)

   : 절대값을 반환

728x90
반응형