상세 컨텐츠

본문 제목

위장(2레벨)

코딩테스트

by dofury 2023. 1. 25. 21:28

본문

728x90

class Solution {
    fun solution(clothes: Array<Array<String>>): Int {
        var answer = 1
        var clothMap = mutableMapOf<String,Int>()
        var typeSize = 0
        for(i in 0..clothes.size-1)
        {
            if(clothMap.containsKey(clothes[i][1]))
               {
                   typeSize = clothMap.get(clothes[i][1])!! + 1
                   clothMap.put(clothes[i][1],typeSize)
               }
            else
               {
                   clothMap.put(clothes[i][1],1)
               }
        }
        
        for(item in clothMap)
        {
            answer *= item.value +1
        }
        answer -= 1
        
        return answer
        
    }
}

첨에 해시 문제길래 sets 를 사용해서 접근해보았으나

문제를  풀다보니 map 사용하는 문제 인 것 같아서 map을 사용해서 문제를 풀었다.

 

해설

map의 key는 고유한 값이기 때문에 같은 키 값이 들어오면 무시한다.
이를 이용해 고유키 값을 의상종류로 설정해두고 키에 대응되는 값은 의상종류의 수
그다음 반복문을 통해 새로운 종류이면 1로 map에 추가가 되고
기존에 있던 종류라면 기존 종류의 수에 +1이 된다.
반복문이 끝나면 의상 종류 별로 갯수가 나오는데  문제가 요구하는건 결국 이 의상들로 가능한 경우의 수이다.
안 입을 수도 있으니 안입는 경우를 의상 종류에 전부+1 을 해서 곱한다.
전부 안 입는건 제외한다 했으니 곱한 값에다가 -1를 하면 정답이 된다.
728x90

'코딩테스트' 카테고리의 다른 글

수리공 항승  (0) 2023.05.09
행렬의 곱셈(2레벨)  (0) 2023.01.25
괄호 회전하기(2레벨)  (0) 2023.01.24
H-Index(2레벨)  (0) 2023.01.21
멀리뛰기(2레벨)  (0) 2023.01.21

관련글 더보기

댓글 영역