본문 바로가기
Algorithm/Programers

가까운 수

by 꼬부기가우는소리 2023. 6. 8.
728x90

 

- 관련 사이트: https://school.programmers.co.kr/learn/courses/30/lessons/120890

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

정수 배열에 있는 숫자들 중 임의 수 n과 가장 가까운 수를 구하는 문제이다.

입력된 배열의 숫자들을 정렬 후 앞뒤로 n과 차이값을 비교하여 풀어주었다.

 

#include <string>
#include <vector>
#include <algorithm>

using namespace std;

int solution(vector<int> array, int n) {
    sort(array.begin(), array.end());
    int answer = array.at(0);
    
    for (int idx = 1; idx < array.size(); idx++)
    {
        if (abs(answer - n) <= abs(array.at(idx) - n))
            return answer;
        
        answer = array.at(idx);
    }
    return answer;
}

 

하지만, 23.3.29일자 추가된 테스트 케이스로 인해 채점 실패되어 다시 풀어주었다.

두 코드의 차이점은 위의 코드는 정렬된 배열에서 현재의 차이보다 큰 차이가 발견될 경우 탐색을 종료하지만,

아래의 코드는 정렬된 배열에서 모든 차이를 비교한다는 점이다.

 

#include <string>
#include <vector>
#include <algorithm>

using namespace std;

int solution(vector<int> array, int n) {
    sort(array.begin(), array.end());
    int answer = array.at(0);
    
    for (int idx = 1; idx < array.size(); idx++)
    {
        if (abs(answer - n) > abs(array.at(idx) - n))
            answer = array.at(idx);
    }
    return answer;
}

 

728x90

'Algorithm > Programers' 카테고리의 다른 글

N개의 최소공배수  (0) 2023.06.12
배열 회전시키기  (0) 2023.06.08
정수 부분  (0) 2023.06.07
피자 나눠 먹기 (3)  (0) 2023.06.06
피자 나눠 먹기 (2)  (0) 2023.06.06

댓글