(코딩테스트) 최소직사각형
2024. 3. 28. 17:43ㆍ개발자 과정/Kotlin
https://school.programmers.co.kr/learn/courses/30/lessons/86491
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
풀이의 선택과정
1. 카드를 눕히면 더 효율적인 크기가 된다고 한다.
2. 그럼 배열을 정렬한다.
3. 이제 큰 값들끼리 곱한다.
정답풀이
class Solution {
fun solution(sizes: Array<IntArray>): Int {
var w=0; var h=0;
sizes.forEach {
it.sort()
w= max(w, it[0])
h= max(h, it[1])
}
return w*h
}
}
핵심로직
it.sort()
정렬을 통해 가로,세로를 정리하고, 큰 값만 뽑아오면 최소 직사각형을 만들 수 있다.
여담으로 딱히 좋은 로직은 아니다.
생각하기 귀찮으니까 정렬해서 꿀빨아야지! 하고 만든 로직이라 양질의 코드는 아니다.
정렬을 할 바엔 작은 원소들 중에 큰 값, 큰 원소들 중에 큰 값을 구하면 되기 때문이다.
해당 방법으로 만든 코드도 올리려고 한다.
class Solution {
fun solution(sizes: Array<IntArray>): Int {
var w = 0;
var h = 0;
sizes.forEach {
val maxEle = max(it[0], it[1])
val minEle = min(it[0], it[1])
//배열중 큰 원소와 작은 원소를 구분
w = max(w, maxEle)
h = max(h, minEle)
//구분된 원소들 중 가장 큰 값을 갱신
}
return w * h
}
}
'개발자 과정 > Kotlin' 카테고리의 다른 글
(코딩테스트) 문자열 내 마음대로 정렬하기 (sortedWith) (0) | 2024.03.29 |
---|---|
(코딩테스트)숫자 문자열과 영단어(replace) (1) | 2024.03.29 |
(코딩테스트)3진법 뒤집기(진법 변환) (0) | 2024.03.26 |
(코딩테스트)최대공약수와 최소공배수(꼬리재귀) (0) | 2024.03.26 |
(코딩테스트) 문자열 다루기 기본(.all{}) (3) | 2024.03.21 |