프로그래머스/Level_0

[프로그래머스] Lv.0 - 가까운 수.py

ro-jun 2024. 9. 26. 22:57
728x90
반응형

문제

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

제한사항

  • 1 ≤ array의 길이 ≤ 100
  • 1 ≤ array의 원소 ≤ 100
  • 1 ≤ n ≤ 100
  • 가장 가까운 수가 여러 개일 경우 더 작은 수를 return 합니다.

입출력 예시

  • 입출력 예 1
    • 3, 10, 28 중 20과 가장 가까운 수는 28입니다.
  • 입출력 예 2
    • 10, 11, 12 중 13과 가장 가까운 수는 12입니다.

※ 공지 - 2023년 3월 29일 테스트 케이스가 추가되었습니다. 기존에 제출한 코드가 통과하지 못할 수도 있습니다.

코드 1

def solution(array, n):
    answer = 0
    less_num_list = []
    more_num_list = []
    for num in array:
        if num < n:
            less_num_list.append(num)
        else:
            more_num_list.append(num)
    try:
        if abs(max(less_num_list) - n) <= abs(min(more_num_list) - n):
            answer = max(less_num_list)
        else:
            answer = min(more_num_list)
    except:
        if len(less_num_list) > 0:
            answer = max(less_num_list)
        else:
            answer = min(more_num_list)
    return answer

코드 2

def solution(array, n):
    answer = 0
    array = sorted(array)
    max_num = 101
    for num in array:
        if abs(num - n) < max_num:
            max_num = abs(num-n)
            answer = num
    return answer

출처: 프로그래머스 코딩 테스트 연습, https://school.programmers.co.kr/learn/challenges

728x90
반응형