일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- swift
- WeatherManager
- 러닝타이머
- font book
- UICollectionViewFlowLayout
- 러닝기록앱
- RunningTimer
- Xcode
- xcode로 날씨앱 만들기
- weatherKit
- Timer
- Required Reason API
- AnyObject
- addannotation
- App Store Connect
- MKMapViewDelegate
- weak var
- 영문 개인정보처리방침
- Startign Assignments
- 클로저의 캡슐화
- 서체관리자
- Protocol
- 단일 책임원칙
- CoreLocation
- UIAlertAction
- MKMapItem
- SwiftUI Boolean 값
- dispatchsource
- CLLocationManagerDelegate
- 한국어 개인정보처리방침
Archives
- Today
- Total
VesselWheel
최소직사각형 본문
문제
풀이
- 최초풀이
import Foundation
func solution(_ sizes:[[Int]]) -> Int {
var maxsize = 0
var minsize = 0
for i in sizes {
maxsize = max(maxsize, i.max()!)
minsize = min(minsize, i.min()!)
}
return maxsize * minsize
}
-> 상기의 코드로 풀 경우,
i.max()와 i.min()에서는 배열 i의 최대값과 최소값을 반환하는데, 이 값들은 Optional이므로 강제 언래핑(!)을 사용하고 있다. 이는 i가 비어있을 경우 런타임 오류를 발생시킬 수 있다.
따라서,
import Foundation
func solution(_ sizes:[[Int]]) -> Int {
var maxsize = 0
var minsize = 0
for i in sizes {
if let maxVal = i.max(), let minVal = i.min() {
maxsize = max(maxsize, maxVal)
minsize = max(minsize, minVal)
}
}
return maxsize * minsize
}
해석
더보기
i.max()와 i.min()의 결과를 각각 maxVal과 minVal에 할당하고, 이 값들이 nil이 아닐 경우에만 maxsize와 minsize를 업데이트합니다.
이렇게 하면 강제 언래핑을 사용하지 않아도 되므로 안전합니다.
또한, 'minsize'를 찾을 때 'min' 함수 대신 'max' 함수를 사용하였습니다.
이는 'minsize'가 명함을 가로로 눕혔을 때의 세로 길이를 나타내므로, 각 명함의 가로 세로 중 작은 값을 선택하는 것이 아니라 큰 값을 선택해야하기 때문입니다.
'Coding Test Practice in Swift' 카테고리의 다른 글
시저암호 (1) | 2024.02.28 |
---|---|
크기가 작은 부분문자열 (0) | 2024.02.22 |
삼총사 (considering 시간복잡도) / 시간복잡도를 고려하니 중복값 문제 발생 (0) | 2024.02.20 |
이상한 문자 만들기 (0) | 2024.02.19 |
3진법 뒤집기 (1) | 2024.02.02 |