IT 프로그래밍/객체지향프로그래밍

[C++] N개의 정수 중 K와의 차이가 절대값이 작은 정수 출력 프로그램

기술1 2024. 3. 10. 23:31

풀이


#include <iostream>
#include <vector>
#include <cmath>

using namespace std;

int main() {

    int n;
    cin >> n;

    vector<int> integers(n);

    for (int i = 0; i < n; ++i)
    {
        cin >> integers[i];
    }

    int point;
    cin >> point;

    int variant = integers[0];
    int mindiff = abs(integers[0] - point);
    
    for (int i = 1; i < n; ++i)
    {
        int diff = abs(integers[i] - point);
        if (diff < mindiff)
        {
            mindiff = diff;
            variant = integers[i];
        }
    }
    cout << variant << endl;
   
    return 0;
}

#include <vector>를 사용했습니다. 먼저 vector는 동적 배열입니다. 정적 배열은 크기가 고정되어 있지만 정적배열은 변수를 넣을 수 있습니다. vector<int> integers(n); 식으로 쓰입니다. 

 

그리고 한가지 더 배웠던 것은 바로 abs( ) 입니다. abs()는 절대값을 찾아주는 함수입니다. 

 

풀이 방법은 

  1. 입력될 정수의 개수를 입력받을 것
  2. 입력된 정수들의 저장할 배열 작성 및 저장
  3. 찾을 정수 입력 후 가장 가까운 정수 저장하기
  4. for문을 통해 배열을 순회하면서 가장 가까운 정수 찾기

이런식으로 진행이 되었습니다. for문으로 풀었습니다. 코드를 보면 직관적으로 이해할 수 있도록 되어있습니다.