👇 문제 확인하기
프로그래머스 - 위장
clothes
를 종류에 따라 묶어준다. 종류에 따라 묶어주기 위해서 groupBy()
메서드를 사용하였다.
맵으로 반환되는 메서드로 vlaue의 값이 list로 저장되기 때문에 사용하게 되었다.
그리고 map의 key값의 vlaue의 list의 크기를 구하기 위해서는 eachCount()
메서드를 사용하였다.
이렇게 두가지의 메서드를 첫번째 입력값에 사용하면 아래와 같은 값을 구할 수 있다.
{headgear=2 , eyewear =1}
2번까지 완료한 후 조합할 수 있는 경우의 수를 생각해야 하는데
(eyewear의 갯수 + (아무 것도 고르지 않을 경우)) * (headgear의 갯수 + (아무 것도 고르지 않을 경우)) ...
이렇게 각 종류별로 아무것도 고르지 않을 경우인 1을 더해준 값을 곱해주어야 한다.
그리고 스파이는 하루에 최소 한개의 의상은 입기 때문에 모두 아무것도 고르지 않은 경우를 1을 빼주어야 한다.
예) 얼굴 = 2, 겉옷 = 3, 상의 = 1
(2+1) (3+1) (1+1) -1
fun solution(clothes: Array<Array<String>>): Int{
var multiple = 1
clothes.groupingBy {it[1]}.eachCount().values.forEach{ multiple *= (it+1)}
return multiple-1
}
eachCount()
몰랐으면 루프문 몇개를 돌았어야 할 것 같다.