본문 바로가기
Problem Solving

[Swift] 프로그래머스 최소직사각형(lv. 1)

by DuncanKim 2023. 1. 16.
728x90

[Swift] 프로그래머스 최소직사각형(lv. 1)

 

1. 문제

https://school.programmers.co.kr/learn/courses/30/lessons/86491

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

 

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

댓글