명함을 단순히 놓으면 (1) 다음과 같이 특수하게 세로가 긴 경우 전체적인 넓이가 넓어진다.
하지만 저런 세로형태를 회전하여 놓게 된다면 전체적인 넓이가 좁아지는걸 볼수 있다.
즉, 배열을 받았을 때, 세로가 길다면 회전시키고 난 후, 가로와 세로를 비교하여 가장 큰 가로와 가장 큰 세로를 출력하면 된다.
이 말은 즉, 받은 배열을 오름차순으로 정리하면 된다는 뜻이 된다.
이를 코드로 정리해보자.
import java.util.Arrays
class Solution {
fun solution(sizes: Array<IntArray>): Int {
var width = 0
var height = 0
for (arrayItem in sizes) {
Arrays.sort(arrayItem)
if(width < arrayItem[1]) {
width = arrayItem[1]
}
if(height < arrayItem[0]) {
height = arrayItem[0]
}
}
println(width)
println(height)
return width * height
}
}
width에서 가장 큰 길이를 구하기 위해 전역변수로 width를 설정하고, 가장 큰 height를 구하기 위해 height를 설정한다.
++)
코틀린의 함수 컬렉션을 이용해보려고 해서. 다음과 같은 함수를 쓰면 시간이 줄여지지 않을까 했는데..
fun solution2(sizes: Array<IntArray>) : Int {
var widthArray = ArrayList<Int>()
var heightArray = ArrayList<Int>()
for (arrayItem in sizes) {
Arrays.sort(arrayItem)
widthArray.add(arrayItem[1])
heightArray.add(arrayItem[0])
}
println(widthArray.max())
println(heightArray.max())
return widthArray.max() * heightArray.max()
}
음.. max 함수를 인식하지 못하는걸로 봐선 프로그래머스에 내장된 코틀린 컴파일러 버전이 낮아보임.. ^-^