[백준/파이썬] 11665번 풀이

업데이트:



문제 정보


풀이

문제

3차원 공간 위에 직육면체가 N개 있다. 직육면체 N개의 교집합의 부피를 구하는 프로그램을 작성하시오.

입력 요약
첫째 줄에 직육면체의 개수 N (1 ≤ N ≤ 1,000)이 주어진다. 둘째 줄부터 N개의 줄에는 직육면체의 한 꼭짓점 좌표 (x1, y1, z1)과 반대편 꼭짓점 좌표 (x2, y2, z2)가 주어진다. (1 ≤ x1, y1, z1, x2, y2, z2 ≤ 1,000, x1 < x2, y1 < y2, z1 < z2)

출력 요약
첫째 줄에 직육면체 N개의 교집합의 부피를 출력한다.

코드

import sys;read=sys.stdin.readline
l=[list(map(int,read().split()))for i in range(int(input()))]
p=[]
for i in range(3):p.append(max(l,key=lambda x:x[i])[i])
for i in range(3,6):p.append(min(l,key=lambda x:x[i])[i])
r=(p[3]-p[0])*(p[4]-p[1])*(p[5]-p[2])
print(r if r>0 else 0)

설명

핵심은 구현 관점에서 3차원 공간 위에 직육면체가 N개 있다. 직육면체 N개의 교집합의 부피를 구하는 프로그램을 작성하시오.를 만족하도록 로직을 구성하는 것입니다.

코드는 입력을 파싱한 뒤 조건 분기와 계산을 순서대로 수행하고, 문제에서 요구한 형식으로 결과를 출력합니다.

경계값과 예외 케이스도 함께 고려해 오답이 나기 쉬운 상황을 방지합니다.



댓글남기기