2024. 5. 2. 10:57, ๐กAlgorithm
๋ฐ์ํ
๋ฌธ์
https://school.programmers.co.kr/learn/courses/30/lessons/86491


์ ๊ทผ
- 1. ๋ฐฐ์ด ์ ์์๋ฐฐ์ด์ ์์๋ฅผ ๊ณฑํ๋ค ์ ์ผ ํฐ ๊ฐ์ ์ฐพ์
2. ๊ฐ ์์์ ์์ ๊ฐ๋ก๊ธธ์ด, ์์ ์ธ๋ก๊ธธ์ด๋ถํฐ ์๋ก ๊ณฑํด์ 1์ ๊ฐ์ ์ถฉ์กฑํ๋ ๊ฒ์ ์ฐพ์ (์ด์ค ์กฐ๊ฑด๋ฌธ) - ์์ ๊ฐ์ ๋ฐฉ๋ฒ์ผ๋ก ํ๋ฉด ๋์ง ์์๊น ์๊ฐํ๋ค. ์๋๋ ํด๋น ์๊ฐ์ ๋ํ ์๋์ฝ๋๋ค.
class Solution {
fun solution(sizes: Array<IntArray>): Int {
val sizes = sizes
sizes.map {it.first * it.second} . maxOrNull๊ฐ์ฐพ๊ธฐ
minwidth =
minheight =
for(minwidth ~){
for(maxwidth ~)
}
}
}
- ๊ทธ๋ฌ๋ map์ ๊ธฐ์กด ์ปฌ๋ ์ ์ ๊ฐ ์์์ ๋ํด ์ฃผ์ด์ง ๋๋ค ํจ์๊ฐ ์ ์ฉ๋ ๊ฒฐ๊ณผ๋ฅผ ๋ด์ ์๋ก์ด ์ปฌ๋ ์ ์ ๋ฐํํ๋ ๊ฒ์ด๋ฏ๋ก ๋ด๊ฐ ์๊ฐํ ์ฝ๋์ ์ ์ ํ์ง ์๋ค.
- ๋ํ 2๋ฒ์ฒ๋ผ ์ด์ค ์กฐ๊ฑด๋ฌธ์ ์ด์ฉํด์ ํธ๋ ๊ฑด, ๋ชจ๋ ๊ฐ๋ฅํ ์กฐ๊ฑด์ ๋ฐ๋ณตํ์ฌ ํธ๋ ๊ฒ์ด๋ฏ๋ก ๊ตฌํํ๋๋ผ๋ ํจ์จ์ ์ด์ง ์๋ค.
์ฑ๊ณต ์ฝ๋
class Solution {
fun solution(sizes: Array<IntArray>): Int {
// ์ต๋ ๊ฐ๋ก ๊ธธ์ด์ ์ต๋ ์ธ๋ก ๊ธธ์ด๋ฅผ ์ ์ฅํ ๋ณ์ ์ ์ธ
var maxWidth = 0
var maxHeight = 0
// ๊ฐ ๋ช
ํจ์ ๊ฐ๋ก ๊ธธ์ด์ ์ธ๋ก ๊ธธ์ด๋ฅผ ๋น๊ตํ์ฌ ์ต๋๊ฐ ๊ฐฑ์
for (size in sizes) {
maxWidth = maxOf(maxWidth, maxOf(size[0], size[1]))
maxHeight = maxOf(maxHeight, minOf(size[0], size[1]))
}
// ์ต๋ ๊ฐ๋ก ๊ธธ์ด์ ์ต๋ ์ธ๋ก ๊ธธ์ด๋ฅผ ๊ณฑํ์ฌ ์ต์ข
๊ฒฐ๊ณผ ๋ฐํ
return maxWidth * maxHeight
}
}
์ค๋ช
- var maxWidth = 0
var maxHeight = 0
์ต๋ ๊ธธ์ด์ ์ต์ ๊ธธ์ด๋ฅผ ์ง์ ํ ๋ณ์๋ฅผ ์ ์ธํ๋ค.
์ฌ๊ธฐ์ ์์๋ก ์ต๋๊ธธ์ด๋ฅผ maxWidth, ์ต์๊ธธ์ด๋ฅผ maxHeight๋ผ๋ ๋ณ์์ ์ ์ฅํ ์์ ์ด๋ค.
๊ฐ๋ก์ ์ธ๋ก์ ์ง์ฐฉํ์ง ์๊ณ , ๊ทธ๋ฅ ์ต์๊ฐ * ์ต๋๊ฐ์ ๊ตฌํ๋ฉด ๋ชจ๋ ๋ช ํจ์ ๋ฃ์ ์ ์๋ ์ง๊ฐ ์ฌ์ด์ฆ๋ฅผ ๊ตฌํ ์ ์๋ค. - for (size in sizes) {
maxWidth = maxOf(maxWidth, maxOf(size[0], size[1]))
maxHeight = maxOf(maxHeight, minOf(size[0], size[1]))
}
sizes์ ์๋ ๊ฐ ์์๋ฅผ ๊บผ๋ด๋ฉด์, ๊ทธ ์์์ ์ฒซ๋ฒ์งธ ์์์ ๋๋ฒ์งธ ์์ ์ค ํฐ ๊ฐ์ maxWidth, ์์ ๊ฐ์ maxHeight์ ์ ์ฅํ๋ค. ์ด์จ๋ ๋ชจ๋ ๋ช ํจ์ ์ฐพ์ ์ ์๋ ์ฌ์ด์ฆ๋ฅผ ๊ตฌํด์ผ ํ๋ฏ๋ก, sizes์ ๊ฐ ์์๋ฅผ ๊บผ๋ด๋ฉด์ ๊ธฐ์กด ๊ฐ๊ณผ ๋น๊ตํ์ฌ ๋ ํฐ ๊ฐ์ ์ ์ฅํ๊ธฐ ์ํด maxOf(๋น๊ต๊ฐ, ๋น๊ต๊ฐ)์ ์ฌ์ฉํ๋ค. - return maxWidth * maxHeight
์๊น for๋ฌธ์ผ๋ก ๊ตฌํ maxWidth์ maxHeight๋ฅผ ๊ณฑํด์ฃผ์ด ๋ฆฌํดํ๋ค.
๐กmax๋ฅผ ์ฐ์ง ์๊ณ maxOf๋ฅผ ์ด ์ด์
val result = a.max(b) // ๋ฌด์กฐ๊ฑด 2๊ฐ๋ง ๋น๊ต ๊ฐ๋ฅ, Null ์ฒ๋ฆฌ ๋ถ๊ฐ
val result = maxOf(a, b, c) // Null์ฒ๋ฆฌ, ์ฌ๋ฌ ๊ฐ์ ๊ฐ
- ๋ ๋ค ์ฃผ์ด์ง ๊ฐ์ ๋น๊ตํ์ฌ ๋ ํฐ ๊ฐ์ ๋ฐํํ์ง๋ง, ์ฌ์ฉ ๋ฐฉ๋ฒ์ด ์ฝ๊ฐ ๋ค๋ฅด๋ค.
- max ํจ์๋ ๋ ๊ฐ ์ค ํ๋๊ฐ null์ผ ๊ฒฝ์ฐ์๋ ์๋ํ์ง๋ง,
maxOf ํจ์๋ null ๊ฐ์ ํฌํจํ์ง ์๊ณ ๋ ๊ฐ ์ด์์ ๊ฐ์ ๋น๊ตํ ์ ์๋ค. - max๋ Null ๊ฐ๋ฅ์ฑ์ ์ฒ๋ฆฌํ์ง ๋ชปํ๊ธฐ ๋๋ฌธ์, Null๊ฐ์ด ๋ค์ด๊ฐ๋ฉด ๋ฐํ์ ์ค๋ฅ๊ฐ ์๊ธธ ์ ์๋ค.
maxOf๋ Null์ ์ ์ธํ๊ณ ์ฒ๋ฆฌํ๊ธฐ ๋๋ฌธ์ ์ค๋ฅ๊ฐ ๋ฐ์ํ์ง ์๋๋ค.
๋ค๋ฅธ ๋ฐฉ๋ฒ
import kotlin.math.max
import kotlin.math.min
class Solution {
fun solution(sizes: Array<IntArray>): Int {
val widths = mutableListOf<Int>()
val heights = mutableListOf<Int>()
sizes.forEach {
widths.add(max(it[0], it[1]))
heights.add(min(it[0], it[1]))
}
return widths.max()!! * heights.max()!!
}
}
- width์ height๋ฅผ ๊ฐ๊ฐ ๋ฐฐ์ด๋ก ์ ์ธํ๊ณ ๊ทธ ๋ฐฐ์ด์ค ์ต๋๊ฐ์ ์๋ก ๊ณฑํ ๊ฒ์ด๋ค. ๊ฐ์ธ์ ์ผ๋ก ๋ด๊ฐ ๊ตฌํํ ๋ฐฉ๋ฒ์ด ๋์๋ณด์ด๋, ๋ฐฐ์ด์ด ํ์ํ ๊ฒฝ์ฐ ์ธ ์ ์๋ค๊ณ ์๊ฐํ๋ค.
class Solution {
fun solution(sizes: Array<IntArray>): Int
= sizes.map{it.maxOrNull()!!}.maxOrNull()!!*sizes.map{it.minOrNull()!!}.maxOrNull()!!
}
- ๋ด๊ฐ ๊ตฌํํ๋ ๋ฐฉ๋ฒ์ map์ ์ด์ฉํ์ฌ ๊ฐ๋จํ ๊ตฌํํ ๋ฐฉ์์ด๋ค.
- ์ฝ๋์ ๊ธธ์ด๋ ์งง์ง๋ง, ์ค์ ํ๋ก์ ํธ๋ฅผ ๊ตฌํํ ๋ ๊ฐ๋ ์ฑ์ด ์ข์ ์ฝ๋์ธ์ง๋ ์๊ฐํด๋ด์ผ ํ ๊ฒ ๊ฐ๋ค.
๋ฐ์ํ
๐ฌ C O M M E N T