프로그래머스 - 의상 문제를 풀이해보겟습니다
문제를 먼저 읽어보고시고 한번 풀어보시는 것을 추천합니다
https://school.programmers.co.kr/learn/courses/30/lessons/42578
먼저 의상의 이름이 중복되는 경우가 없으므로 의상의 종류에 따른 개수를 map형태로 구현했습니다.
map에 값을 넣을 때 여기가 문제를 푸는 포인트입니다
초기에 해당 key로 아무런 값이 없다면 해당 key로 2를 초기에 넣어줍니다
이렇게 2를 넣어준 이유는 조합 공식을 이용해서 의상 조합 개수를 구할 것인다 해당 종류의 옷을 입지 않는 경우를 택한다는 개념으로 2개를 넣어준것입니다.
이런 아이디어만 떠오른다면 나머지는 조합 영역이므로 간단하게 구현할 수 있습니다.
class Solution {
fun solution(clothes: Array<Array<String>>): Int {
val kindCount = HashMap<String, Int>()
clothes.forEach { kindCount[it[1]] = kindCount[it[1]]?.plus(1) ?: 2 }
return kindCount.values.fold(1){acc, i -> acc * i } - 1
}
}