본문 바로가기
백준

백준 1085번[c언어] : 직사각형에서 탈출

by 핫동경 2022. 3. 21.
반응형

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

 

1085번: 직사각형에서 탈출

한수는 지금 (x, y)에 있다. 직사각형은 각 변이 좌표축에 평행하고, 왼쪽 아래 꼭짓점은 (0, 0), 오른쪽 위 꼭짓점은 (w, h)에 있다. 직사각형의 경계선까지 가는 거리의 최솟값을 구하는 프로그램

www.acmicpc.net


○ 한수라는 아이가 있는 좌표에서 경계선까지의 최소거리를 구해야한다.

 

○ 오른쪽 모서리의 좌표가 주어졌으니 우리는 밑변과 높이의 값을 알 수 있는 사각형을 상상할 수 있다.

 

○ 예제 1을 보자 6 2 10 3

    한수의 위치는(6,2) 오른쪽 모서리끝(10,3)이다. 한수가 경계선까지 가려면 y좌표 1만 증가시켜주면

    된다.

 

○ 예제 2를 보자 1 1 5 5

    한수의 위치는(1,1)이고 오른쪽 모서리끝(5,5)이다. 한수가 경계선까지 가려면 x좌표나 y좌표 -1만큼만      가주면 된다.

 

w-x 와 h-y와 x와 y의 값중 가장 작은 것이 답이된다.

 

○ w-x,h-y,x,y의 값을 배열에 저장해주고 최솟값을 찾는 방식을 선택했다.

#include<stdio.h>

int main() {
	int distance[4];
	int x, y, w, h;
	scanf("%d %d %d %d", &x, &y, &w, &h);
	int x1, y1;
	x1 = w - x;
	y1 = h - y;
	
	distance[0] = x;
	distance[1] = y;
	distance[2] = x1;
	distance[3] = y1;
	int min = distance[0];
	for (int i = 1; i < 4; i++) {
		if (min > distance[i])
			min = distance[i];
	}
	printf("%d", min);
}
반응형

댓글