카테고리 없음

이것이 취업을 위한 코딩 테스트다 스위프트 탐욕법 풀기 3

Thor_yeom 2022. 9. 7. 11:10
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 의 중요성을 다시 한번 느꼈다. 

확실히 함수를 활용해서 푸는 과정이 이해하는데 도움이 많이 되었다.