티스토리 뷰

https://school.programmers.co.kr/learn/courses/30/lessons/120890

 

프로그래머스

SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr

 

정수가 들어 있는 배열의 요소 중 N과 가장 가까운 요소를 고르는 문제입니다. 가장 가까운 수가 여러 개일 경우 가장 작은 수가 정답입니다.

 

Test Case 1.

array = [3, 10, 28] N = 20이면 N과 가장 가까운 수는 28

 

Test Case 2.

array = [3, 1] N = 2이면 N과 가장 가까운 수 중 가장 작은 수는 1

 

Solution.

가장 가까운 수를 구하기 위해서는 배열의 요소 값과 N과의 차이를 절댓값 한 것 중 그 값이 가장 작은 것을 구하기, 다만 가까운 수가 여러 개이면 그 값들을 대소 비교해야 하니깐 배열 요소 값과 차이의 절댓값, 총 2개의 데이터가 필요

=> Dictionary에 배열 요소 값과 차이의 절댓값을 넣고 먼저 차이의 절댓값으로 오름차순시키고, 이 값이 같으면 배열의 요소 값으로 오름차순시키기 (이 기준이면 맨 첫 번째 데이터의 key값이 가장 가까운 수가 됨)

def solution(array, n):
    answer = 0
    dic1 = {}
    
    for x in array:
        dic1[x] = abs(n-x)   #배열의 요소 값을 key, 차이의 절댓값을 value로 넣기
    dic1 = sorted(dic1.items(), key=lambda x : (x[1],x[0])
    answer = dic1[0][0]
    return answer

 

※ Sorted 함수 정리

딕셔너리의 정렬 : sorted(딕셔녀리.items(), key = lambda x : (x[1], x[0])), value로 먼저 오름차순 정렬시키고, 이 값이

                             같으면 key로 오름차순 시키기

 

cf) 내림차순시키고 싶은 조건에 - 붙이기 sorted( 딕셔녀리.items(), key = lambda x : (-x[1], x[0])), value 기준으로 먼저 내림차순 시키고, 이 값이 같으면 key로 오름차순 시키기

TAG more
글 보관함
최근에 올라온 글