[BOJ 1085] 직사각형에서 탈출
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