728x90
[Swift] 프로그래머스 최소직사각형(lv. 1)
1. 문제
https://school.programmers.co.kr/learn/courses/30/lessons/86491
2. 접근
전체를 비교해봐야 하나 잠시 머리가 아팠지만, 이차원 배열로 주어져있고 명함은 가로로 꽂으나 세로로 꽂으나 상관없는 것이라는 것을 캐치했다.
주어진 배열은 가로, 세로로 주어졌지만, 결과값 뽑아내는 입장에서는 그게 가로인지 세로인지 전혀 중요하지 않다.
이차원 배열 내부의 원소로 있는 배열이 내림차순으로 정렬되어 있다면, sizes[i][0]에서 최대값, sizes[i][1]에서 최대값을 뽑아내면 무엇이든 들어가는 가로 세로 길이를 찾을 수가 있기 때문이다.
따라서 주어진 sizes 배열 내부 원소들을 모두 내림차순 정렬로 해주었다. 그런 후 n행 1열의 원소를 가로로 가정하고, n행 2열의 원소를 세로로 정의하여 최대값을 구해주는 반복문을 돈 후, 각 최대값을 곱해 리턴하였다.
3. 코드
import Foundation
func solution(_ sizes:[[Int]]) -> Int {
var innerSizes = sizes
for i in 0 ... innerSizes.count - 1 {
innerSizes[i] = innerSizes[i].sorted(by: >)
}
var maxX = 0
var maxY = 0
for i in innerSizes {
if maxX < i[0] {
maxX = i[0]
}
if maxY < i[1] {
maxY = i[1]
}
}
return maxX * maxY
}
728x90
'Problem Solving' 카테고리의 다른 글
[Swift] 프로그래머스 삼총사(lv. 1) (0) | 2023.01.18 |
---|---|
[Swift] 프로그래머스 비밀지도(lv. 1) (0) | 2023.01.17 |
[Swift] 프로그래머스 시저 암호(lv. 1) (0) | 2023.01.13 |
[Swift] 프로그래머스 옹알이(1) (lv.0) (0) | 2023.01.12 |
[Swift] 프로그래머스 평행(lv. 0) (0) | 2023.01.11 |
댓글