import Foundation
func solution(metrics: [[Int]]) -> Int {
var array: [Int] = [] // 빈 배열에다가
for met in metrics { // 배열안에 있는 [원소]들이 하나씩 돌면서 met [3,1,2]이렇게 쌓임
array.append(met.min()!) // met에 [3,1,2]가 쌓이면 여기서 min()을 통해 최솟값을 추출한다 array = [ 1, ... ]
// append이기 떄문에 하나씩 쌓이면서 반복문으로 계속 돌면서 최종적으로 이렇게 된다. array = [ 1,1,2]
}
return array.max()! // 그 후 array 배열에 들어있는 최솟값들 중 최댓값을 리턴해줍니다.
}
//출처: https://ios-developer-storage.tistory.com/entry/Algorithm-Swift-로-푸는-탐욕Greedy-문제-나동빈책 [마늘맨의 iOS는 즐거워:티스토리]
// 배열 안에 있는 것은 하나의 원소로 취급되기 때문에 반복문으로 돌려도 [1, 2, 3, 4] 으로 출력됌
var aa = [[1, 2, 3, 4], [ 11, 22, 33, 44]]
for i in aa {
print(i)
}
// 출력
// [1, 2, 3, 4]
// [11, 22, 33, 44]
// 배열을 반복문으로 돌릴 시 배열 안에 있는 것은 하나의 원소 취급되기 때문에 각각 출력 됨
var bb = [1, 2, 3, 4]
for i in bb {
print(i)
}
//출력
//1
//2
//3
//4
// bb 와 동일하게 출력 됌.
var cc = 1...4
for i in cc {
print(i)
}
// 출력
//1
//2
//3
//4
// 결론
var meet = [[3,1,2], [4,1,4], [2,2,2]]
for i in meet {
print(i)
}
//출력
// [3, 1, 2]
[4, 1, 4]
[2, 2, 2]
문법을 안다고 생각했지만 막상 풀려고 하니 배열안에 배열이 있을 때 안에 배열 형태로 출력된다는 것을 활용 하지 못해서
처음에는 헷갈렸는데, 반복문의 기초를 다시 생각하며 예시를 만들어서 대입해보니 이해가 되었다.
그리고 중요한 것은 스위프트는 함수형 프로그래밍이기 때문에 func 의 중요성을 다시 한번 느꼈다.
확실히 함수를 활용해서 푸는 과정이 이해하는데 도움이 많이 되었다.