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

YH J·2023년 4월 18일
0

프로그래머스

목록 보기
23/168

문제 링크

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

내 풀이

각각 원소에서 n을 뺀 값이 0에 가까울수록 n과 가장 가까운수 이므로 절대값이 가장 작은원소가 가장 가까운숫자이다. 대신 여러개일경우 더 작은수를 리턴하므로 삼항연산자로 판별하였다.

내 코드

#include <string>
#include <vector>

using namespace std;

int solution(vector<int> array, int n) {
    int answer = 101;
    
    for(const auto& a : array)
    {
        if(abs(a - n) < abs(answer - n))
            answer = a;
        else if(abs(a - n) == abs(answer - n))
            answer = a > answer ? answer : a;
    }
    
    return answer;
}

다른 사람의 풀이

#include <string>
#include <vector>
#include <algorithm>
using namespace std;

int solution(vector<int> array, int n) {
    sort(array.begin(), array.end());
    int closest = abs(array[0] - n);
    int pos = 0;
    for(int i = 1; i<array.size(); i++)
    {
        if(closest > abs(array[i] - n)) {
            closest = abs(array[i] - n);
            pos = i;
        }
    }
    return array[pos];
}

다른 사람의 풀이 해석

sort를 사용해서 미리 정렬해두고 판별하는 것 같다.

profile
게임 개발자 지망생

0개의 댓글