안경잡이 구루루

백준 9063 (대지) [Python/파이썬] 본문

파이썬(Python)/문제풀이(백준,BaekJoon)

백준 9063 (대지) [Python/파이썬]

구루루(gururu) 2023. 9. 2. 10:02
반응형

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

 

9063번: 대지

첫째 줄에는 점의 개수 N (1 ≤ N ≤ 100,000) 이 주어진다. 이어지는 N 줄에는 각 점의 좌표가 두 개의 정수로 한 줄에 하나씩 주어진다. 각각의 좌표는 -10,000 이상 10,000 이하의 정수이다. 

www.acmicpc.net

 


나:

N = int(input())
X =[]
Y =[]
for i in range(N):
  x,y = map(int,input().split())
  X.append(x)
  Y.append(y)
print((max(X)-min(X))*(max(Y)-min(Y)))

완성된 코드는 위와 같다.

문제가 이전과 다르게 매우 길어 살짝 당황했으나 대부분의 내용이 그저 문제를 위한 스토리일 뿐 실제 문제를 풀기위한 부분은 일부분이니 겁먹을 필요가 없다.

 

(1)
N = int(input())
X =[]
Y =[]

받을 점의 개수를 의미하는 N 정수형 입력값을 받는다.

x, y 좌표계를 사용하고 있으니 입력받을 각 점마다 해당하는 x,y 좌표를 각각 X, Y에 넣어 분리 시키고자 함

 

(2)
for i in range(N):
  x,y = map(int,input().split())
  X.append(x)
  Y.append(y)
print((max(X)-min(X))*(max(Y)-min(Y)))

위에서 입력받은 N 만큼 반복하며 입력값 x,y 를 공백을 기준으로 분리하여 받는다.

받은 입력값의 각각 x,y 는  리스트 X,Y에 넣는다

문제에서 구해야 하는 '대지'는 각 점들을 기준으로 만든 평행한 직사각형을 만드는 것인데  모든 점이 포함되어야 하기 때문에 넓이가 최대 지점에서 만들어진 직사각형임을 알 수 있다.

그래서  파이썬에서 유용한 함수들 중 하나인 max, min 함수를 이용한 차를 통해 아주 간단히  넓이의 최대를 구할 수 있다.

 

 

반응형