본문 바로가기
백준/브론즈

[2] 백준 8716 Pole

by Riverandeye 2020. 11. 15.

문제

 

측면이 좌표축과 평행 한 두 직사각형의 좌표를 지정하여 이러한 직사각형의 교차 영역을 계산하는 프로그램을 작성하십시오.

 

입력

 

입력의 첫 번째 줄에는 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

댓글