728x90
✏️ 문제
https://www.acmicpc.net/problem/9063
9063번: 대지
첫째 줄에는 점의 개수 N (1 ≤ N ≤ 100,000) 이 주어진다. 이어지는 N 줄에는 각 점의 좌표가 두 개의 정수로 한 줄에 하나씩 주어진다. 각각의 좌표는 -10,000 이상 10,000 이하의 정수이다.
www.acmicpc.net
✏️ 풀이방법
1. 2차원리스트(point)에 옥구슬의 위치를 리스트형식으로 담고, 옥구슬이 하나도 없는 경우에는 0을 출력하도록 한다.
2. 최소 크기의 직사각형을 구하기 위해 점의 위치를 오름차순으로 정렬해야 하는 데 한 축에 같이 존재하는 경우가 있음을 유의해야하기 때문에 x와 y좌표를 각각의 리스트로 받았다.
3. x좌표 y 좌표 각각의 리스트에서 가장 큰 값에서 작은 값을 빼서 옥구슬이 있는 직사각형을 구한다.
📌 코드
n = int(input())
points = [(list(map(int,input().split()))) for _ in range(n)]
if len(points) == 0:
print(0)
x = sorted(points)
y = sorted(points, key=lambda x: x[1])
length = x[-1][0] - x[0][0]
height= y[-1][1] - y[0][1]
width = length*height
print(width)
📌 결과
#입력
3
20 24
40 21
10 12
#출력
360
#입력
1
15 13
#출력
0
#입력
4
2 1
3 2
5 2
3 4
#출력
9
🔎 다른풀이
n = int(input())
X, Y = [], []
for _ in range(n):
x, y = map(int, input().split())
X.append(x)
Y.append(y)
print((max(X) - min(X)) * (max(Y) - min(Y)))
- 굳이 정렬안하고 min,max를 활용해도 된다.
'Python > online judge' 카테고리의 다른 글
백준 [1934.최소공배수] | Python (0) | 2024.01.29 |
---|---|
백준 [2609.최대공약수와 최소공배수] | Python (0) | 2024.01.29 |
백준 [2798.블랙잭] | Python (0) | 2024.01.29 |
백준 [10814.나이순 정렬] | Python (0) | 2024.01.29 |
백준 [11651.좌표 정렬하기2] | Python (0) | 2024.01.29 |