반응형
SMALL
https://programmers.co.kr/learn/courses/30/lessons/42578
코딩테스트 연습 - 위장
programmers.co.kr
- 여러개의 집합에서 원소를 0~1개 뽑아서 만들 수 있는 모든 조합의 개수
- 문제의 '스파이는 하루 최소 한 개의 의상은 입습니다.' 때문에 모두 안뽑는 경우 1 제외
import java.util.*;
import java.util.Map.Entry;
class Solution {
public int solution(String[][] clothes) {
HashMap<String, Integer> map = new HashMap<String, Integer>();
// 배열의 종류 별로 원소가 몇개인지 map에 담기
for(int i = 0; i < clothes.length; i++) {
String key = clothes[i][1]; // 종류 값
map.put(key, map.getOrDefault(key, 0) + 1); // 해당 종류에 원소 개수 추가
// getOrDefault : key에 해당하는 value 값이 존재하면 가져와서 추가, 존재하지않으면 0에 추가
}
int answer = 1;
// Entry : key와 value 쌍들
for(Entry<String, Integer> entry : map.entrySet()) {
answer *= entry.getValue() + 1;
// 모든 종류에 대해 원소 개수 + 1 을 가져와서 모두 곱해줌 == 가능한 조합의 개수
// +1 의 이유는 하나의 집합에서 하나도 안뽑는 경우를 추가해주기 위함
}
return answer - 1; // 아무것도 선택 안하는 경우 1이 조합의 개수에 포함되어있기 때문에 1을 제외해주기
}
}
반응형
LIST
'JAVA > Algorithm' 카테고리의 다른 글
[프로그래머스/java] 다음 큰 숫자 (2진수의 1개수 세기 - bitCount()) (0) | 2021.01.03 |
---|---|
[프로그래머스/java] 구명보트 (0) | 2021.01.02 |
[프로그래머스/java] 전화번호 목록 (문자열 비교 - hashCode) *2021 첫 글* (0) | 2021.01.01 |
[프로그래머스/java] 큰 수 만들기 (0) | 2020.12.29 |
[프로그래머스/java] 더 맵게 (PriorityQueue) (0) | 2020.12.29 |