문제

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

설명

이문제는 if문 보다 삼항연산자를 잘 활용하면 더 깔끔s 하게 소스를 칠 수 있었다. 좌표값 범위(왼쪽 아래 시작 지점과 오른쪽 위 끝 지점을 알려주므로 직사각형 모양의 범위)에서 어떤 지점 좌표를 하나 주는데 여기서 이 범위의 경계선까지의 최단거리를 구하는 것이었다. 이런범위문제를 생각하면 제일 먼저 의심이 드는게 대각선 거리도 생각하냐는 건데 먼저 이 문제는 브론즈 난이도이므로 그렇게는 안했을 것 같다는 생각이 드는 동시에 그렇다고 실험을 해봐도 대각선 거리는 이런 직사각형 범위에서는 뭘해도 가로, 세로로 이동하는것보다도 경계선까지 거리가 멀다는 것을 확인할 수 있으므로 고려대상이 되지 않음을 확인 할 수 있다. 먼저 삼항 연산자 두개를 이용하여 가로기준으로 경계선이 좌측, 우측 어디가 더 가까운지, 세로기준으로 경계선이 윗쪽, 아랫쪽 어디가 가까운지 비교하고 더 가까운 쪽의 거리를 변수 cpw, cph 변수에다가 집어넣고 최종적으로 삼항연산자를 한번더 이용하여 최종적으로 제일 가까운 거리가 얼마인지 변수에 저장하고 최종적으로 출력하도록 하였다.

코드

#include <stdio.h>

int main() {
    int x,y,w,h,cpw,cph,res;
    scanf("%d %d %d %d",&x,&y,&w,&h);
    cpw = x<=w/2 ? x : w-x;
    cph = y<=h/2 ? y : h-y;
    res = cpw < cph ? cpw : cph;
    printf("%d",res);
    return 0;
}