https://school.programmers.co.kr/learn/courses/30/lessons/86491
더보기
그림을 보자.
(대충 그린거지만)
명함을 단순히 놓으면 (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 함수를 인식하지 못하는걸로 봐선 프로그래머스에 내장된 코틀린 컴파일러 버전이 낮아보임.. ^-^
반응형
'스터디(programmers)' 카테고리의 다른 글
Kotlin] 프로그래머스 lv.1, 체육복 (0) | 2023.02.01 |
---|---|
Java] 프로그래머스 lv.1, 2016년 (0) | 2023.02.01 |
Java] 프로그래머스 lv.1, 하샤드 수 (0) | 2023.01.27 |
Java] 프로그래머스 lv.1, 소수 찾기 (0) | 2023.01.11 |
Java] 프로그래머스 lv.1, 피자 나눠 먹기 (1) (0) | 2023.01.11 |