목차
백준 단계별로 풀어보기
25.09.24
10단계: 기하 1: 직사각형과 삼각형
9063번: 대지
문제 링크 : https://www.acmicpc.net/problem/9063
문제 풀이
>> 문제를 풀기 위해 알아야 할 개념
- N개의 점의 좌표로 직사각형을 구하는 방법
: 입력 받은 N개의 점 중, x좌표의 최솟값과 최댓값 그리고 y좌표의 최솟값과 최댓값으로 네 꼭짓점을 삼으면 직사각형이 나온다.
--> 아래 사진은 문제에 나와있는 예시이며, 예시에 나온 좌표는 각각 (2, 1), (3, 2), (5, 2), (3, 4)이다.
- x좌표의 최솟값 : 2
- x좌표의 최댓값 : 5
- y좌표의 최솟값 : 1
- y좌표의 최댓값 : 4
>> 직사각형의 네 꼭짓점 : (2, 1), (5, 1), (2, 4), (5, 4)
▶ 따라서 직사각형의 넓이는 (x최댓값 - x최솟값) × (y최댓값 - y최솟값) 이다.
>> 풀이
- 주어질 점의 개수를 입력받아 int값으로 변환하고, x의 최댓값과 최솟값, y의 최댓값과 최솟값을 변수로 선언한다. 이때, 각각의 좌표는 -10,000 이상 10,000 이하의 정수임을 감안하여 값을 초기화한다.
- for 반복문을 통해 점의 개수만큼 반복하여 점의 좌표를 입력받아 각각 int값 x와 y로 변환하고 변환한 x와 y를 각각 x의 최댓값과 최솟값, y의 최댓값과 최솟값과 비교하여 대입해준다.
- 모든 좌표를 비교하여 x의 최댓값과 최솟값, y의 최댓값과 최솟값을 구했다면 공식을 통해 직사각형의 넓이를 출력한다.
정답 코드
class Backjoon
{
static void Main(string[] args)
{
int count = int.Parse(Console.ReadLine());
int minX = 10001;
int minY = 10001;
int maxX = -10001;
int maxY = -10001;
for (int i = 0; i < count; i++)
{
string[] input = Console.ReadLine().Split();
int x = int.Parse(input[0]);
int y = int.Parse(input[1]);
if (x < minX) minX = x;
if (y < minY) minY = y;
if (x > maxX) maxX = x;
if (y > maxY) maxY = y;
}
Console.Write((maxX - minX) * (maxY - minY));
}
}
'Development > Baekjoon' 카테고리의 다른 글
[C#] 5073번: 삼각형과 세 변 (0) | 2025.09.26 |
---|---|
[C#] 10101번: 삼각형 외우기 (0) | 2025.09.25 |
[C#] 15894번: 수학은 체육과목 입니다 (0) | 2025.09.23 |
[C#] 3009번: 네 번째 점 (0) | 2025.09.22 |
[C#] 1085번: 직사각형에서 탈출 (0) | 2025.09.20 |