import java.util.HashMap;
import java.util.Map;
class Solution {
public int solution(String[][] clothes) {
int answer = 1;
// 확통문제인가
// (종류별 개수+1)을 서로 모두 곱한다음 -1 하면 return
// 종류, 개수 맵
Map<String, Integer> map = new HashMap<>();
for (int i=0;i< clothes.length;i++) {
map.put(clothes[i][1], map.getOrDefault(clothes[i][1],0)+1);
}
for (Map.Entry<String, Integer> entry : map.entrySet()) {
answer*=(entry.getValue()+1);
}
return answer-1;
}
}
문제를 읽으면서 (종류별 개수+1)을 서로 모두 곱한다음 -1
라는게 눈에 보였다.
10년 전 고등학생 때 풀었던 확률과통계의 nCm 같은게 떠오르기도 하며...
아무튼 Map에 종류와 개수를 넣어놓고 그것들을 모두 곱해서 경우의 수를 구해서 풀이했다.
import java.util.HashMap;
import java.util.Iterator;
class Solution {
public int solution(String[][] clothes) {
int answer = 1;
HashMap<String, Integer> map = new HashMap<>();
for(int i=0; i<clothes.length; i++){
String key = clothes[i][1];
if(!map.containsKey(key)) {
map.put(key, 1);
} else {
map.put(key, map.get(key) + 1);
}
}
Iterator<Integer> it = map.values().iterator();
while(it.hasNext()) {
answer *= it.next().intValue()+1;
}
return answer-1;
}
}
이분도 map을 이용해서 풀이했다.
나는 map의 entrySet를 통해 접근했지만 여기서는 Iterator를 사용했다는 것이다.
이런게 있었구나! 나도 다음에 사용해봐야겠다.
Iterator는 Java에서 컬렉션 객체를 순회하고 각 요소에 접근하기 위한 인터페이스입니다.
이 인터페이스는 java.util 패키지에 속해 있습니다.
Iterator를 사용하면 컬렉션의 요소를 반복(iterate)하면서 접근 가능하다. 일반적으로 배열이나 리스트와 같은 데이터 구조에서 사용되며, 컬렉션의 내부 구조를 알 필요 없이 각 요소에 접근할 수 있다.
Iterator<Type> iterator = collection.iterator();