프로그래머스 문제 링크 : https://school.programmers.co.kr/learn/courses/30/lessons/86491
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
💡 내가 제출한 풀이
import Foundation
func solution(_ sizes:[[Int]]) -> Int {
var width: [Int] = []
var height: [Int] = []
var maxWallet = 0
for size in sizes {
if size[0] > size[1] {
width.append(size[0])
height.append(size[1])
} else {
width.append(size[1])
height.append(size[0])
}
}
maxWallet = width.max()! * height.max()!
return maxWallet
}
💡 풀이 과정
모든 명함을 수납할 수 있는 가장 작은 사이즈의 지갑을 만드는 문제이다.
세로를 돌려서 가로로 사용할 수 있다는 내용이 포함되었다.
따라서 가로길이와 세로길이를 비교하여 더 긴 쪽을 무조건 가로로 사용하는 방식으로 풀었다.
var width: [Int] = []
var height: [Int] = []
for size in sizes {
if size[0] > size[1] {
width.append(size[0])
height.append(size[1])
} else {
width.append(size[1])
height.append(size[0])
}
}
반복문과 조건문을 사용해서 0번 인덱스의 숫자(가로길이)가 1번 인덱스의 숫자(세로길이)보다 크다면 0번을 새로운 가로길이 배열에 담고, 1번은 새로운 세로길이 배열에 담는다.
반대의 경우에는 1번을 새로운 가로길이 배열에 담고, 0번은 새로운 세로길이 배열에 담는다.
새롭게 가로, 세로 길이를 담은 배열을 만들어서, 각 배열의 최대값을 구하여 곱하면 모든 명함을 수납할 수 있는 가장 작은 사이즈의 지갑을 만들 수 있다.
배열의 최대값을 구하는 메소드는 max()를 사용한다.
max()는 옵셔널로 반환되기 때문에 강제 추출을 해 주었다.
var maxWallet = 0
maxWallet = width.max()! * height.max()!
https://developer.apple.com/documentation/swift/array/max()
max() | Apple Developer Documentation
Returns the maximum element in the sequence.
developer.apple.com
'알고리즘 > Programmers' 카테고리의 다른 글
[Swift_Programmes] 문자열 내 마음대로 정렬하기 (0) | 2024.01.03 |
---|---|
[Swift_Programmes] 숫자문자열과 영단어 (1) | 2023.12.28 |
[Swift_Programmes] 크기가 작은 부분 문자열 (0) | 2023.12.26 |
[Swift_Programmes] 삼총사 (0) | 2023.12.11 |
[Swift_Programmes] 이상한 문자 만들기 (components와 split의 차이점 / enumerated() ) (1) | 2023.12.05 |