728x90
- 관련 사이트: https://school.programmers.co.kr/learn/courses/30/lessons/120890
정수 배열에 있는 숫자들 중 임의 수 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 |
댓글