class Solution {
fun solution(clothes: Array<Array<String>>): Int {
var answer = 0
val hashMap : HashMap<String, Int> = HashMap()
for(i in 0 until clothes.size){
hashMap[clothes[i][1]]=hashMap.getOrDefault(clothes[i][1],1)+1
}
answer=hashMap.values.fold(1,{acc,number->acc*number})-1
return answer
}
}
1. 해시 맵을 사용하여 의상의 종류 갯수를 구해준다.
- 해시 맵의 key는 의상의 종류 이름(String)으로 하고, value를 1(Int)로 한다.
- 같은 의상 종류가 있다면 value를 1 증가
2. 서로 다른 옷의 조합 수를 구한다.
- 입출력 예시를 보면 (의상의 종류 + 1) 한 값에서 1을 빼준 값이 정답
- 의상의 종류에 +1을 하는 이유는 해당 의상을 안입었을 경우도 포함
- 최종 값에서 -1을 하는 이유는 아무것도 입지 않는 경우의 수를 제외
++ fold 함수 활용하기
fold()를 이용하여 각 Value 값들을 곱한다.
- acc 의 기본 값은 1이며 여기에 hashMap의 value들을 number로 받아 acc에 곱한다.
fold 함수 기본 구조
inline fun <T, R> Iterable<T>.fold(
initial: R,
operation: (acc: R, T) -> R
): R
- initial: 누적 연산의 시작값.
- operation: (acc: R, T) -> R 형태의 람다.
- acc: 이전까지의 누적값 (초기값은 initial).
- T: 컬렉션의 현재 요소.
'코딩테스트 준비(kotlin) > 자료구조' 카테고리의 다른 글
[프로그래머스,kotlin] 디스크 컨트롤러 (우선순위 큐로 구현) (0) | 2025.01.12 |
---|---|
[프로그래머스 kotlin] 프로세스 (0) | 2025.01.07 |
[프로그래머스 , kotlin] 이중우선순위큐 (0) | 2024.08.01 |
[kotlin, 프로그래머스] 베스트앨범 (0) | 2024.07.31 |
[프로그래머스 kotlin] 다리를 지나는 트럭 (0) | 2024.07.09 |