Date:

1) 문제 링크

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

2) 접근

네 변과의 거리 중 최솟값을 고르면 된다.

3) 풀이

#include <iostream>
#include <algorithm>
using namespace std;

int main(void){
    ios::sync_with_stdio(false);
    cin.tie(NULL);

    int x, y, w, h;
    cin >> x >> y >> w >> h;
    cout << min(min(x, w-x), min(y, h-y));

    return 0;
}

4) 피드백

define 문으로 min 함수를 정의했을 때랑 <algorithm> 헤더 끌어와서 직접 min 함수를 썼을 때의 결과가 달랐다. define 문으로 했을 때 오답이 났는데, 이를 알아보기 위해 직접 전처리 후 코드를 써봤다.

#include <iostream>
using namespace std;

int main(void){
    ios::sync_with_stdio(false);
    cin.tie(NULL);

    int x, y, w, h;
    cin >> x >> y >> w >> h;
    cout << (x < w-x) ? x : w-x < (y < h-y) ? y : h-y ? (x < w-x) ? x : w-x : (y < h-y) ? y : h-y;

    return 0;
}

역시나… 여러 연산자들의 우선순위가 뒤엉켜 있다. 역시 define 문은 복잡한 상황에서 쓰지 않는 게 좋다. 아니면 전체를 괄호로 감싸주든가.

Leave a comment