[Algo/Programmers] 자바 - 위장
[Algorithm/Programmers] 자바 - 다단계 칫솔 판매
문제 | 플랫폼 | 난이도 | 유형 | 풀이 링크 | 문제 링크 |
---|---|---|---|---|---|
위장 | Programmers | Level 2 | Hash | 풀이 | 문제 |
문제 해석
Stirng[][] clothes
라는 2차원 배열로 <옷의 종류, 특정 옷> 이 주어집니다.
이 때, 서로 다른 옷의 조합의 개수를 구해야하는 문제입니다.
옷의 개수는 간단한 사고로도 구할 수 있을 것 같습니다.
1. 스파이는 하루에 최소 한 개의 의상을 입습니다.
2. 같은 이름을 가진 의상은 존재하지 않습니다.
=> 입을 수 있는 의상 조합의 개수는
옷의 개수(하루에 하나의 옷을 입는 경우) + 종류 별 곱
중복되지 않는 분류에 맞게 각각의 물체들이 주어지므로 HashMap을 이용해볼 수 있을 것 같습니다.
주어진 clothes는 중복없이 들어오므로 종류에 따른 개수만 추가해주면 될 것 같습니다.
private HashMap<String, Integer> initMap(String[][] clothes) {
HashMap<String, Integer> map = new HashMap<>();
int len = clothes.length;
for (int i = 0; i < len; i++) {
// map에 해당 키값이 있다면,
if (map.containsKey(clothes[i][1])) {
// 해당 키의 value + 1
map.put(clothes[i][1], map.get(clothes[i][1]) + 1);
} else {
// 해당 키값으로 value 1 초기화
map.put(clothes[i][1], 1);
}
}
return map;
}
private int getNum(HashMap<String, Integer> map) {
int num = 1;
for (Integer value : map.values()) {
num *= value + 1;
}
return num - 1;
}
Author And Source
이 문제에 관하여([Algo/Programmers] 자바 - 위장), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@rgunny/AlgoProgrammers-자바-위장저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)