• toc {:toc}

문제

ν•œμˆ˜λŠ” μ§€κΈˆ (x, y) 에 μžˆλ‹€. μ§μ‚¬κ°ν˜•μ€ 각 변이 μ’Œν‘œμΆ•μ— ν‰ν–‰ν•˜κ³ ,Β μ™Όμͺ½ μ•„λž˜ 꼭짓점은 (0, 0), 였λ₯Έμͺ½ μœ„ 꼭짓점은 (w, h) 에 μžˆλ‹€. μ§μ‚¬κ°ν˜•μ˜ κ²½κ³„μ„ κΉŒμ§€ κ°€λŠ” 거리의 μ΅œμ†Ÿκ°’μ„ κ΅¬ν•˜λŠ” ν”„λ‘œκ·Έλž¨μ„ μž‘μ„±ν•˜μ‹œμ˜€.

μž…λ ₯

첫째 쀄에 x, y, w, h κ°€ μ£Όμ–΄μ§„λ‹€.

좜λ ₯

첫째 쀄에 문제의 정닡을 좜λ ₯ν•œλ‹€.

μ œν•œ

  • 1 ≀ w, h ≀ 1,000
  • 1 ≀ x ≀ w-1
  • 1 ≀ y ≀ h-1
  • x, y, w, h λŠ” μ •μˆ˜

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

풀이

  1. μ‚Όν•­μ—°μ‚°μžλ₯Ό μ‚¬μš©ν•΄λ΄€λ‹€.
  2. 거리 β‡’ 수직으둜 λ‚΄λ €μ•Ό 함. β‡’ μΆ•κ³Ό ν‰ν–‰ν•œ 면으둜 수직으둜 λ‚΄λ €μ•Ό ν•˜κΈ° λ•Œλ¬Έμ— κ²°κ΅­ 폭같은 경우 x κ°€ 0, w λ‘˜ 쀑 μ–΄λ–€ 것과 κ°€κΉŒμš΄μ§€, 높이와 같은 경우 y κ°€ 0, h λ‘˜ 쀑 μ–΄λ–€ 것과 κ°€κΉŒμš΄μ§€λ₯Ό ν™•μΈν•˜λ©΄ λœλ‹€.
#include <iostream>
 
using namespace std;
 
int minDistance(int x, int y, int w, int h);
 
int main() 
{
  	int x, y, w, h;
	cin >> x >> y >> w >> h;
	cout << minDistance(x, y, w, h) << endl;
	
	return 0;
}
 
int minDistance(int x, int y, int w, int h)
{
	int mW, mH;
	(w/2<x)? mW=w-x:mW=x;
	(h/2<y)? mH=h-y:mH=y;
	return (mW<mH)? mW : mH;
}