문제 요약:
왼쪽 아래 꼭지점 (0, 0)
오른쪽 위 꼭지점 (w, h) 직사각형의 방 안에 재석이형이 있다.
재석이형의 위치가 (x ,y)일 때,
직사각형의 경계선까지 가는 거리의 최소값을 구하는 프로그램을 작성하시오.
입력으로 x, y, w, h가 순서대로 주어진다.
제약:
제한 시간 2초, 메모리 128MB
1 <= w, h <= 1000
1 <= x <= w-1
1 <= y <= h-1
x, y, w, h는 정수
예제 1 입력. | 예제 1 출력. |
6 2 10 3 | 1 |
예제 2 입력. | 예제 2 출력. |
1 1 5 5 | 1 |
예제 3 입력. | 예제 3 출력. |
653 375 1000 1000 | 347 |
정답 코드:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
|
#include <iostream>
#define INVALID_MAX (1001)
using namespace std;
int main()
{
int nTmp[2] = { INVALID_MAX, INVALID_MAX };
int nMinValue = INVALID_MAX;
int x, y, w, h;
// 최소 거리는 (y) (x) (h-y) (w-x) 중 최소값
// EX: (w,h) = (4, 6), (x, y) = (2, 3) 일때,
//y //h
/* * * * * */
//x /* * o * * */
/* * * * * */
//w /* * * * * */
// 입력값을 받는다.
cin >> x >> y >> w >> h;
// (h - y), (w - x) 중 최소값 선택.
nTmp[0] = (((h - y) < (w - x)) ? (h - y) : (w - x));
// x, y 중 최소값 선택
nTmp[1] = ((x < y) ? x : y);
// Tmp0와 Tmp1 중 최소값 선택.
nMinValue = (nTmp[0] < nTmp[1])? nTmp[0] : nTmp[1];
// 정답 출력.
cout << nMinValue << endl;
return 0;
}
|
cs |
'알고리즘 문제풀이' 카테고리의 다른 글
[알고리즘] 백준 1931번 "회의실 배정" (C/C++) - Don 임베디드 (14) | 2022.03.29 |
---|---|
[알고리즘] 백준 10872번 "팩토리얼" (C/C++) - Don 임베디드 (12) | 2022.03.28 |
[알고리즘] 백준 11653번 "소인수분해" (C/C++) - Don 임베디드 (4) | 2022.03.23 |
[알고리즘] 백준 2581번 "소수" (C/C++) - Don 임베디드 (8) | 2022.03.22 |
[알고리즘] 백준 1978번 "소수 찾기" (C/C++) - Don 임베디드 (2) | 2022.03.22 |