프로그래머스_Lv0_가까운 수 _파이썬

Today Jeeho Learned·2022년 12월 19일
0

알고리즘

목록 보기
32/38
post-thumbnail

문제 출처

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

내 답안

def solution(array, n):
    answer = []

    dict = {}
    for i in array:
        dict[i] = abs(i-n)

    print(dict)

    dic_min = min(dict.values())
    print(dic_min)

    for key,value in dict.items():
        if value == dic_min:
            answer.append(key)
    return min(answer)

풀이 정리

  • 쉬운문제인줄 알고 가볍게 생각하다가 안풀려서 깊게 생각하게 되었다.
  • 어떻게 풀까를 고민하다가, 배열의 요소들과, n에서 요소를 뺀 값을 절대값으로 표시해주었다.
  • 풀다보니 dictionary를 활용하여 key value값으로 key를 배열의 요소, value에는 n에서 배열의 요소를 뺀값을 넣어주면 보기 편할 것 같다고 생각했다.
  • dict를 생성하여 절대값을 넣어주고, dict값을 순회하면서, value값이 가장 작은 값일때 key값들을 새로운 배열에 담아주고, 이 배열에서 가장 작은 key값을 리턴해준다.

다른풀이

def solution(array, n):
    array.sort()
    temp = []

    for i in array :
        temp.append( abs(n-i) )

    return array[temp.index(min(temp))]

  • 사실 이렇게 풀고 싶었는데 이 방법보다 dictionary를 활용해보고 싶었다!!
profile
기록해야 (살아)남는다 !

0개의 댓글