์ ๋ฌผ ๋ฐ๊ตด(32344๋ฒ)
Silver 5
#๊ตฌํ #๊ธฐํํ
https://www.acmicpc.net/problem/32344
๋ฌธ์ ๋ด์ฉ
๋ฌธ์ ์ ๊ทผ
์ด๋์ฅ์ a๋ฒ ์ ๋ฌผ์ด w, h ์์น์ ๋ฌปํ ์๋ค.
a๋ฒ ์ ๋ฌผ ์กฐ๊ฐ๋ค์ ์์น ์ ๋ณด๋ฅผ ์ด์ฉํด a๋ฒ ์ ๋ฌผ์ ์์ ํฌ๊ธฐ๋ฅผ ์ง์ฌ๊ฐํ์ผ๋ก ์ ์ํ๋ค.
์ง์ฌ๊ฐํ์ ๋์ด๊ฐ ๊ฐ์ฅ ํฐ ์ ๋ฌผ์ ๋ฒํธ์ ๊ทธ ๋์ด๋ฅผ ์ถ๋ ฅํ๋ค.
๋ง์ฝ ๋์ด๊ฐ ๋์ผํ๋ค๋ฉด ์ ๋ฌผ ๋ฒํธ๊ฐ ๋ ์์ ๊ฒ ๋ ์ฐ์ ์ด๋ค.
์ ๋ฌผ์ ์์ ํฌ๊ธฐ ์ง์ฌ๊ฐํ์ ๊ตฌํ๋ ๋ฐฉ๋ฒ์ ์๋์ ๊ฐ๋ค.
์๋ฅผ ๋ค์ด 4๊ฐ์ ์์น์ ์ ๋ฌผ์ด ์์ ๋
์ a, b, c, d๊ฐ ์ ๋ฌผ์ ์์น๋ผ๊ณ ํ๋ฉด ์ ๋ฌผ์ ์์ ํฌ๊ธฐ๋ ์ฌ๊ฐํ efgh์ ๊ฐ๋ค.
์ ์ฌ์ง์ผ๋ก ๊ฐ์ฅ ํฐ x์ถ(d)๊ณผ ๊ฐ์ฅ ์์ x์ถ(a), ๊ทธ๋ฆฌ๊ณ ๊ฐ์ฅ ํฐ y์ถ(c)๊ณผ ๊ฐ์ฅ ์์ y์ถ(b)์ ๊ฐ์ ์ด์ฉํด ์ ๋ํ์ ๋์ด๋ฅผ ๊ตฌํ ์ ์๊ฒ ๋๋ค.
๊ฒฐ๋ก ์ (x๊ฐ์ ์ต๋๊ฐ - x๊ฐ์ ์ต์๊ฐ + 1) * (y๊ฐ์ ์ต๋๊ฐ - y๊ฐ์ ์ต์๊ฐ + 1)์ ๊ณต์์ผ๋ก ์ ๋ฌผ์ ์์ ํฌ๊ธฐ๋ฅผ ๊ตฌํ ์ ์๋ค.
๋ฌธ์ ํด๊ฒฐ ์ฝ๋
import java.io.BufferedReader
import java.io.InputStreamReader
fun main() = with(BufferedReader(InputStreamReader(System.`in`))) {
val (r, c) = readLine().split(" ").map { it.toInt() }
val relicCnt = readLine().toInt()
val relics = mutableMapOf<Int, MutableList<List<Int>>>()
for (i in 0 until relicCnt) {
val (relicsNumber, w, h) = readLine().split(" ").map { it.toInt() }
if (!relics.containsKey(relicsNumber)) {
relics[relicsNumber] = mutableListOf(listOf(w, h))
} else {
relics[relicsNumber]?.add(listOf(w, h))
}
}
var answer = Pair(0, 0L)
for (relic in relics) {
val area = getArea(relic.value)
if (answer.second < area) {
answer = Pair(relic.key, area)
} else if (answer.second == area && answer.first > relic.key) {
answer = Pair(relic.key, area)
}
}
println("${answer.first} ${answer.second}")
}
private fun getArea(relicLocation: MutableList<List<Int>>): Long {
var wMax = 0
var wMin = Int.MAX_VALUE
var hMax = 0
var hMin = Int.MAX_VALUE
for (location in relicLocation) {
if (location[0] > wMax) wMax = location[0]
if (location[0] < wMin) wMin = location[0]
if (location[1] > hMax) hMax = location[1]
if (location[1] < hMin) hMin = location[1]
}
return (wMax - wMin + 1) * (hMax - hMin + 1).toLong()
}
๋ฌธ์ ํ์ด
์ ๋ฌผ ๋ฒํธ์ ๋ฐ๋ฅธ ์ ๋ฌผ ์กฐ๊ฐ์ ์์น๋ฅผ ์ ์ฅํ๊ธฐ ์ํด mutableMap์ ์ด์ฉํด ์ฃผ์๋ค.
map์ ๋ฐ์ดํฐ๋ฅผ ์ถ๊ฐํ๊ณ , map์ ๋ฐ์ดํฐ๋ค์ ์ด์ฉํด ๊ฐ ์ ๋ฌผ์ ์์ ํฌ๊ธฐ๋ฅผ ๊ตฌํด์ ๊ฐ์ฅ ํฐ ๊ฐ์ ์ถ๋ ฅํ๋ค.
๋ง์ฝ ๊ฐ์ด ๊ฐ๋ค๋ฉด ์ ๋ฌผ ๋ฒํธ๊ฐ ๋ ์์ ๊ฒ์ผ๋ก ๋ฐ๋๋ค.
๋ฌธ์ ํด๊ฒฐ ๊ณผ์
๊ท์ฐฎ์ ๊ตฌํ ๋ฌธ์ ์ด๋ค.
์ต์๊ฐ๊ณผ ์ต๋๊ฐ์ ์ด์ฉํด ์ ๋ฌผ์ ์์ ํฌ๊ธฐ๋ฅผ ๊ตฌํ๋ ์์ด๋์ด๋ฅผ ๋ ์ฌ๋ฆฌ๋ ๋ฐ ์๊ฐ์ด ์ข ํ์ํ๋ค.
๊ทธ๋ฆฌ๊ณ ์ ๋ฌผ์ ์์ ํฌ๊ธฐ๊ฐ Int ๋ฒ์๋ฅผ ๋์ด๊ฐ ์ ์๋ค. ์ด๋ฅผ ์ ์ํด์ผ ํ๋ค.
๋ํ ์ ๋ฌผ์ ์์ ํฌ๊ธฐ๊ฐ ๊ฐ์ ๊ฒฝ์ฐ์๋ ๋ ์์ ๋ฒํธ์ธ ์ ๋ฌผ์ด ๋ ์ฐ์ ์ผ๋ก ์ถ๋ ฅ๋ผ์ผ ํ๋ค.
์ด๋ฅผ ๊น๋จน์ง ๋ง์.
'๐ฏ | ๋ฐฑ์ค > ๐ | Silver' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Kotlin, S2] ๋ฐฑ์ค 14430๋ฒ ์์ ์บ๊ธฐ (0) | 2024.09.30 |
---|---|
[Kotlin, S4] ๋ฐฑ์ค 2358๋ฒ ํํ์ (0) | 2024.09.26 |
[Kotlin, S4] ๋ฐฑ์ค 9242๋ฒ ํญํ ํด์ฒด (0) | 2024.09.20 |
[Kotlin, S2] ๋ฐฑ์ค 18352๋ฒ ํน์ ๊ฑฐ๋ฆฌ์ ๋์ ์ฐพ๊ธฐ (0) | 2024.09.10 |
[Kotlin, S5] ๋ฐฑ์ค 2828๋ฒ ์ฌ๊ณผ ๋ด๊ธฐ ๊ฒ์ (0) | 2024.09.06 |