본문 바로가기

기타공부

코딩테스트 - 해시 - 위장 Swift

func solution(_ clothes:[[String]]) -> Int {
  
    //곱셈을 진행할 예정이라 기본값 1을 준다.
    var multipleLockCount : Int = 1
    //옷종류와 해당 옷의 몇개의 옷종류가 있는지 저장하는 딕셔너리
    var clothCounts : [String : Int] = [:]
    
    //리스트를 받으면
    //0번은 옷의 이름 1번은 옷의 종류이다
    for item in clothes {
        //옷의 종류가 이미 포함되어있다면
        //옷의 종류를 늘리지 않고 옷 종류의 갯수를 올리고
        if(clothCounts.contains{ $0.key == item[1] }){
            simpleLockCount += 1
            clothCounts[item[1]]! += 1
        }else{
        //처음 등록된 옷의 종류라면 새롭게 등록
            simpleLockCount += 1
            clothCounts.updateValue(1, forKey: item[1])
        }
    }
    
    //옷의 종류별로 갯수 + 안입는경우
    for cloth in clothCounts{
        multipleLockCount *= (cloth.value + 1)
    }
    
    //문제에 안입는 경우 없다고 했으니 -1
    return multipleLockCount - 1
}

 

문제 출처 : https://programmers.co.kr/learn/courses/30/lessons/42578?language=swift 

 

코딩테스트 연습 - 위장

 

programmers.co.kr

 

코테 공부를 따로 공부하지 않습니다. 심심할때 시간때울려고 풀고있습니다. 
더 좋은 정답이 충분히 있을거라고 생각합니다.