문제
측면이 좌표축과 평행 한 두 직사각형의 좌표를 지정하여 이러한 직사각형의 교차 영역을 계산하는 프로그램을 작성하십시오.
입력
입력의 첫 번째 줄에는 4 개의 정수가 있습니다. x1, y1, x2, y2는 각각 왼쪽 상단 모서리의 x 및 y 좌표와 첫 번째 직사각형의 오른쪽 하단 모서리의 x 및 y 좌표를 나타냅니다.
입력의 두 번째 줄에는 4 개의 정수가 있습니다 : x3, y3, x4, y4, 각각 왼쪽 상단 모서리의 x 및 y 좌표와 두 번째 직사각형의 오른쪽 하단 모서리의 x 및 y 좌표를 나타냅니다.
모든 좌표는 0 이상 1,000,000 이하입니다.
출력
출력의 첫 번째 줄과 유일한 줄에는 두 직사각형의 교차 영역 값과 동일한 정수 하나가 포함되어야합니다.
풀이
import java.util.*
import java.lang.Math.*
import kotlin.system.exitProcess
import kotlin.math.max
fun main(args: Array<String>) = with(Scanner(System.`in`)) {
var a = Array(4) {_ -> 0L}
var b = Array(4) {_ -> 0L}
for(i in 0..3)
a[i] = nextLong()
for(i in 0..3)
b[i] = nextLong()
var x1 = a[0]
var y1 = a[1]
var x2 = a[2]
var y2 = a[3]
var x3 = b[0]
var y3 = b[1]
var x4 = b[2]
var y4 = b[3]
if(x2 < x3) {
print(0)
}
else if( x1 > x4){
print(0)
}
else if (y1 < y4){
print(0)
}
else if (y2 > y3){
print(0)
}
else {
var left_up_x = max(x1, x3)
var left_up_y = min(y1, y3)
var right_down_x = min(x2, x4)
var right_down_y = max(y2, y4)
var width = right_down_x - left_up_x
var height = right_down_y - left_up_y
print(abs(width * height))
}
}
'백준 > 브론즈' 카테고리의 다른 글
[5] 백준 13610 Volta (0) | 2020.11.16 |
---|---|
[4] 백준 13597 Tri-du (0) | 2020.11.16 |
[3] 백준 11466 Alex Origami Squares (0) | 2020.11.16 |
[1] 백준 8710 Koszykarz (0) | 2020.11.15 |
댓글