ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Kotlin 🍬 λ°±μ€€ 10단계 :: 9063 번
    2023. 5. 25. 05:43
    λ°˜μ‘ν˜•

    λŒ€μ§€

    문제   |

      μž„μ”¨λŠ” 1950 λ…„ ν•œκ΅­μ „μŸμœΌλ‘œ λ§Žμ€ 손해λ₯Ό λ³Έ μ‚¬λžŒλ“€ 쀑 ν•˜λ‚˜λ‹€. μ „μŸ 톡에 손해보지 μ•Šμ€ μ‚¬λžŒμ΄ μ–΄λ”” μžˆμ„κΉŒ λ§Œμ€ κ·ΈλŠ” 6.25 κ°€ μΌμ–΄λ‚˜κΈ° μ „λ§Œ 해도 좩청도 지방에 넓은 λŒ€μ§€λ₯Ό μ†Œμœ ν•œ 큰 λΆ€μžμ˜€λ‹€. μ „μŸμ΄ λ‚˜μž μž„μ”¨λŠ” λ•…λ¬Έμ„œμ™€ κ°’ λ‚˜κ°€λŠ” κ²ƒλ“€λ§Œ μ±™κ²¨μ„œ 일본으둜 ν”Όλ‚œμ„ κ°€μ§€λ§Œ ν”Όλ‚œ 쀑에 그만 λ•…λ¬Έμ„œλ₯Ό μžƒμ–΄λ²„λ¦¬κ³  λ§Œλ‹€. μ „μŸμ΄ λλ‚œ 후에 μž„μ”¨μ˜ 땅은 이미 λ‹€λ₯Έ μ‚¬λžŒλ“€μ˜ 논밭이 λ˜μ–΄ μžˆμ—ˆκ³ , μž„μ”¨λŠ” 땅을 되찾으렀 ν–ˆμ§€λ§Œ λ¬Έμ„œκ°€ μ—†μœΌλ‹ˆ 생떼 μ“°λŠ” 것과 λ‹€λ₯Ό λ°” μ—†μ—ˆλ‹€. μ΄λŸ¬λ‹€κ°€ μž„μ”¨λŠ” κΈΈλ°”λ‹₯에 λ‚˜μ•‰κ²Œ 생겼닀.

      μ΄λ•Œ, μž„μ”¨μ—κ²Œ 쒋은 생각이 λ– μ˜¬λžμœΌλ‹ˆ λ°”λ‘œ μžμ‹ μ΄ μŠ΅κ΄€μ²˜λŸΌ λ•… κΉŠμˆ™μ΄ λ­”κ°€ ν‘œμ‹μ„ ν•΄λ†“μ•˜λ˜ 사싀이닀. μž„μ”¨λŠ” ν•œμ ν•  λ•Œλ§ˆλ‹€ μžμ‹ μ˜ 논밭을 거닐닀가 땅속 κΉŠμ€ 곳에 μžμ‹ μ˜ 이름이 μ”Œμ–΄μ§„ μ˜₯κ΅¬μŠ¬μ„ λ¬»μ–΄λ†“μ•˜λ˜ 것이닀. 즉, μ–΄λ–€ μ§€μ μ—μ„œ 그의 이름이 적힌 μ˜₯ꡬ슬이 λ‚˜μ˜¨λ‹€λ©΄ κ·Έ 지점은 μ˜ˆμ „μ— μž„μ”¨μ˜ λ•…μ΄μ—ˆλ‹€λŠ” 것을 증λͺ…ν•˜λŠ” 것이닀.

      μž„μ”¨λŠ” μ¦‰μ‹œ λ―Όμ‚¬μ†Œμ†‘μ„ 톡해 μžμ‹ μ˜ 땅을 찾고자 ν–ˆκ³  논리적인 κ·Όκ±°λ₯Ό λ“€μ–΄ μ˜₯ꡬ슬이 λ‚˜μ˜€λŠ” 지점이 μ›λž˜ μžμ‹ μ˜ λ•…μ˜ ν•œ μ§€μ μ΄μ—ˆλ‹€λŠ” 것을 μ£Όμž₯ν•˜μ—¬ κ²°κ΅­ λ‹΄λ‹ΉνŒμ‚¬λ₯Ό μ„€λ“ν•˜λŠ” 데에 μ„±κ³΅ν•˜μ˜€λ‹€. λ‹΄λ‹ΉνŒμ‚¬λŠ” λ‹€μŒκ³Ό 같은 νŒκ²°μ„ λ‚΄λ Έλ‹€. “ 6.25 μ΄μ „μ˜ κ°œμΈμ†Œμœ  λŒ€μ§€λ“€μ€ 99%κ°€ 남뢁, λ™μ„œ λ°©ν–₯으둜 ν‰ν–‰ν•œ μ§μ‚¬κ°ν˜• λͺ¨μ–‘μ΄μ—ˆμœΌλ―€λ‘œ, μž„μ”¨μ˜ 이름이 μƒˆκ²¨μ§„ μ˜₯ꡬ슬이 λ‚˜μ˜€λŠ” λͺ¨λ“  지점을 ν¬ν•¨ν•˜λŠ” κ°€μž₯ μž‘μ€ 남뢁, λ™μ„œ λ°©ν–₯으둜 ν‰ν–‰ν•œ 변을 κ°–λŠ” μ§μ‚¬κ°ν˜•μ˜ λŒ€μ§€λ₯Ό μž„μ”¨μ˜ μ†Œμœ λ‘œ μΈμ •ν•œλ‹€.” μž„μ”¨λŠ” λ§Žμ€ 손해λ₯Ό λ³΄λŠ” μ…ˆμ΄μ§€λ§Œ 더 이상을 μš”κ΅¬ν•  λ§Œν•œ κ·Όκ±°κ°€ μ—†μ—ˆκΈ° λ•Œλ¬Έμ— 이 νŒκ²°μ„ λ”°λ₯΄κΈ°λ‘œ ν–ˆλ‹€.

      μž„μ”¨μ˜ 이름이 μƒˆκ²¨μ§„ μ˜₯ꡬ슬의 μœ„μΉ˜ N κ°œκ°€ μ£Όμ–΄μ§ˆ λ•Œμ—, μž„μ”¨μ—κ²Œ λŒμ•„κ°ˆ λŒ€μ§€μ˜ 넓이λ₯Ό κ³„μ‚°ν•˜λŠ” ν”„λ‘œκ·Έλž¨μ„ μž‘μ„±ν•˜μ‹œμ˜€. 단, μ˜₯ꡬ슬의 μœ„μΉ˜λŠ” 2 차원 μ •μˆ˜ μ’Œν‘œλ‘œ 주어지고 μ˜₯κ΅¬μŠ¬μ€ 같은 μœ„μΉ˜μ— μ—¬λŸ¬ κ°œκ°€ 발견될 μˆ˜λ„ 있으며, x μΆ•μ˜ μ–‘μ˜λ°©ν–₯을 동μͺ½, y μΆ•μ˜ μ–‘μ˜λ°©ν–₯을 뢁μͺ½μ΄λΌκ³  κ°€μ •ν•œλ‹€.

      예λ₯Ό λ“€μ–΄ μœ„μ™€ 같이 (2, 1), (3, 2), (5, 2), (3, 4) λ„€ μ μ—μ„œ μ˜₯κ΅¬μŠ¬μ„ λ°œκ²¬ν•˜μ˜€λ‹€λ©΄, μž„μ”¨μ—κ²Œ λŒμ•„κ°ˆ λŒ€μ§€λŠ” (2, 1), (5, 1), (2, 4), (5, 4)λ₯Ό λ„€ κΌ­μ§“μ μœΌλ‘œ ν•˜λŠ” μ§μ‚¬κ°ν˜•μ΄λ©°, λ„“μ΄λŠ” (5 - 2) × (4 - 1) = 9 κ°€ λœλ‹€. 

     

    μž…λ ₯   |

      μ²«μ§Έ μ€„μ—λŠ” 점의 개수 N (1 ≤ N ≤ 100,000) 이 주어진닀. μ΄μ–΄μ§€λŠ” N μ€„μ—λŠ” 각 점의 μ’Œν‘œκ°€ 두 개의 μ •μˆ˜λ‘œ ν•œ 쀄에 ν•˜λ‚˜μ”© 주어진닀. 각각의 μ’Œν‘œλŠ” -10,000 이상 10,000 μ΄ν•˜μ˜ μ •μˆ˜μ΄λ‹€. 

     

    좜λ ₯   |

      μ²«μ§Έ 쀄에 N 개의 점을 λ‘˜λŸ¬μ‹ΈλŠ” μ΅œμ†Œ 크기의 μ§μ‚¬κ°ν˜•μ˜ 넓이λ₯Ό 좜λ ₯ν•˜μ‹œμ˜€. 

     

     

    풀이  |

    • coerceAtLeast : 호좜된 κ°μ²΄κ°€ νŠΉμ • κ°μ²΄λ³΄λ‹€ ν° μ§€ ν™•μΈ. 호좜된 κ°μ²΄κ°€ λ” ν¬λ©΄ κ°μ²΄λ₯Ό λ°˜ν™˜μ•„λ‹ˆλ©΄ μ΅œμ†Œ κ°μ²΄λ₯Ό λ°˜ν™˜
    • coerceAtMost : 호좜된 κ°μ²΄κ°€ νŠΉμ • κ°μ²΄λ³΄λ‹€ μž‘은 μ§€ ν™•μΈ. 호좜된 κ°μ²΄κ°€ λ” μž‘μœΌλ©΄ κ°μ²΄λ₯Ό λ°˜ν™˜μ•„λ‹ˆλ©΄ μ΅œλŒ€ κ°μ²΄λ₯Ό λ°˜ν™˜

     

    λ‹΅μ•ˆ  |

    import java.util.Scanner
    
    fun main() = with(Scanner(System.`in`)) {
        val N = nextInt()
        var minX = -100001
        var maxX = 100001
        var minY = -100001
        var maxY = 100001
        
        repeat(N) {
            val x = nextInt()
            val y = nextInt()
            
            minX = minX.coerceAtLeast(x)
            maxX = maxX.coerceAtMost(x)
            minY = minY.coerceAtLeast(y)
            maxY = maxY.coerceAtMost(y)
        }
        
        print("${(maxX - minX) * (maxY - minY)}")
    }
    λ°˜μ‘ν˜•

    λŒ“κΈ€

Designed by Tistory.