[백준 1085 C++] 직사각형에서의 탈출
[백준 1085 C++] 직사각형에서의 탈출
https://www.acmicpc.net/problem/1085
해결전략
직사각형 중심을 기준으로 사분면을 나눈다고 가정한다. 사분면으로 나눈 상태에서 점(x,y)와 근접한 직사각형 변 2개과 길이를 비교하면 된다.
점(x,y)와 직사각형 변과 최단거리는 다음 4가지 중 하나이다.
- x
- w - x
- y
- h - y
코드
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
36
37
38
39
40
41
42
43
44
45
46
47
|
#include <iostream>
using namespace std;
int main() {
ios_base::sync_with_stdio(false);
cin.tie(nullptr);
int x, y, w, h;
cin >> x >> y >> w >> h;
if (x > w/2)
{
if (y > h/2)
{
if ((w - x) < (h - y))
cout << w - x;
else
cout << h - y;
}
else
{
if ((w - x) < y)
cout << w - x;
else
cout << y;
}
}
else
{
if (y > h/2)
{
if ( x < (h - y))
cout << x;
else
cout << h - y;
}
else
{
if (x < y)
cout << x;
else
cout << y;
}
}
return 0;
}
|
cs |
더 나은 해답
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
#include <iostream>
#include <algorithm>
using namespace std;
int main()
{
ios_base::sync_with_stdio(false);
cin.tie(nullptr);
int x,y,w,h;
int tmp1,tmp2;
cin >> x >> y >> w >> h;
tmp1 = min(x,y);
tmp2 = min(w-x,h-y);
cout << min(tmp1,tmp2);
}
|
cs |
#include <algorithm>에 내장된 min(), max() 메소드를 사용하면 더 쉽게 구할 수 있다.
min, max, sort 등 라이브러리를 활용할 수 있다는 사실을 자주 잊는다. 까먹지말고 활용해서 코딩시간을 줄이자.
'⭐ 코딩테스트 > 백준' 카테고리의 다른 글
[백준 10798 C/C++] 세로읽기 (0) | 2023.04.19 |
---|---|
[백준 2563 C/C++] 색종이 (0) | 2023.04.19 |
[백준 10815 C++] 숫자 카드 (0) | 2022.11.17 |
[백준 2566 C++] 최댓값 (0) | 2022.11.16 |
[백준 10870] 피보나치 수 5 (0) | 2022.07.23 |
댓글
이 글 공유하기
다른 글
-
[백준 10798 C/C++] 세로읽기
[백준 10798 C/C++] 세로읽기
2023.04.19 -
[백준 2563 C/C++] 색종이
[백준 2563 C/C++] 색종이
2023.04.19 -
[백준 10815 C++] 숫자 카드
[백준 10815 C++] 숫자 카드
2022.11.17 -
[백준 2566 C++] 최댓값
[백준 2566 C++] 최댓값
2022.11.16