[TIL] 0326 알고리즘 풀이

한철희·2024년 3월 26일
0

TIL

목록 보기
21/57

오랜만에 풀이한 알고리즘이다.
그동안 과제나 UIKit에만 몰두한것 같아서 오랜만에 풀이

뭔가 문제가 기니까 처음부터 어려워보인다.
처음에 문제에 접근할 때는 가로와 세로라는 키워드에 꽂혀서
갈피를 못잡았는데
알고보니 가로나 세로가 중요한 문제가 아니다

큰수와 작은수를 보면 쉽게(?)풀 수있는 문제다'

[[10, 7], [12, 3], [8, 15], [14, 7], [5, 15]]

위와 같은 값을 입력받았다고 가정해보자
일단 이것을 정렬한다 그러면 아래처럼 나온다.

[[10, 7], [12, 3], [15, 8], [14, 7], [15, 5]]

여기서 0번째 요소에서 가장 큰 값 15와 1번째 요소에서 가장 큰 값 8을 고르고 둘을 곱해주면 끝이다.
120이라는 수가 답이다

실제로 테스트 항목으로 나와있는 예시값이다.

아래는 내가 풀이한 코드다

func solution(_ sizes:[[Int]]) -> Int {
    var maxWidth = 0 // 가로길이를 저장하는 변수
    var maxHeight = 0 // 세로길이를 저장하는 변수
    
    for i in sizes {
        let sortedSize = i.sorted(by: >)
        maxWidth = max(maxWidth, sortedSize[0])
        maxHeight = max(maxHeight, sortedSize[1])
    }  
    return maxWidth * maxHeight 
}

위에서 말한 풀이방법 처럼 각 요소에서 가장 큰 값을 골라서
그것을 가로, 길이에 대입하여 값을 구한다.

가로, 세로에만 몰두하지 않는다면 의외로 쉽게 풀 수 있는 문제였다!

profile
초보 개발자 살아남기

0개의 댓글