프로그래머스_체육복_set

hankyulee·2021년 10월 5일
0

Swift coding test 준비

목록 보기
11/57
func solution(_ n:Int, _ lost:[Int], _ reserve:[Int]) -> Int {
    var set : Set<Int> = Set(1...n)
    var tmpSet = set
    var lost = Set(lost)
    var reuslt = n
    var tmpLost = lost
    var reserve = Set(reserve)
    var tmpReserve = reserve
    reserve.subtract(lost)
    tmpLost.subtract(tmpReserve)
    print("자기자신은 제외:\(tmpLost)")
    print(reserve)
    print(tmpLost)
    var addedMinus = Array<Int>()
    var addedPlus = Array<Int>()

    var helper : [[Int]] = Array(repeating: [], count: reserve.count)
    
    for (index,number) in reserve.sorted().enumerated(){

        if number > 1 {
            helper[index].append(number - 1)
        }
        if number < tmpSet.max()! {
            helper[index].append(number + 1)
        }
    }
    var arrayLost = Array(tmpLost).sorted()
    for (i,number) in  helper.enumerated() {
        for (k,a) in arrayLost.enumerated(){
            if number.contains(a){
                //print("a가지고있다:\(a)")
                arrayLost.remove(at: k)
                break
            }
        }
        
    }
    //print(arrayLost.count)
    
    return reuslt - arrayLost.count
}

  • set은 inline함수가 다수 있으므로 주의

.

  • 타입이 array로 바뀐다.

  • set 은 순서가 없으므로 필요할때마다 sorted를 해야한다.

  • for문 안에 in뒤의 변수를 변형해도 된다!.

다른 분 것 :

:https://programmers.co.kr/learn/courses/30/lessons/42862/solution_groups?language=swift

  • 옵셔널바인딩 이용. 가장 swift처럼 짜신듯.

결론:
set은 inline주의, 순서없는거 주의.

0개의 댓글