본문 바로가기

Algorithm/Implementation

(C++) - 백준(BOJ) 18414 : X に最も近い値 (The Nearest Value)

반응형

https://www.acmicpc.net/problem/18414

 

18414번: X に最も近い値 (The Nearest Value)

整数 X, L, R が与えられる. L 以上 R 以下の整数のうち,X との差の絶対値が最も小さいものを出力せよ.そのような整数はちょうど 1 つだけ存在することが証明できる.

www.acmicpc.net

표준입출력, for, if문을 사용해보는 문제였습니다.

 

📕 풀이방법

📔 입력 및 초기화

x, l, r, 최소 차이를 저장할 minDiff, 최소 차이를 가졌을 때 값을 출력할 ans를 선언 후 x, l, r을 입력해줍니다.

 

📔 풀이과정

 1. i = l ~ r범위까지 for문을 돕니다. 2. 절댓값의 차이 minDiff보다 작은 값이 존재한다면 해당 차이를 저장해주고 그 때의 수 i를 ans에 저장해줍니다.

 

📔 정답출력

 ans를 출력해줍니다.


📕 Code

#include <bits/stdc++.h>
#define MAX 0x3f3f3f3f
using namespace std;
int x, l, r, minDiff = MAX, ans = MAX;
int main(){
    cin >> x >> l >> r;
    for(int i = l; i <= r; i++){
        int diff = abs(i - x);
        if(minDiff > diff) {
            ans = i;
            minDiff = diff;
        }
    }
    cout << ans;
}