[java] 프로그래머스 "위장" 코테 연습 해시
문제 해결:
우선 잘 생각해보면 옷의 종류와 해당 옷 종류의 옷 개수만 필요한 정보이다. 그리고 위 두 정보들을 hashmap의 key, value로 정리하자.
그 뒤에 생각해 볼 것은 모든 옷 조합 갯수 계산인데, 각 옷 종류에서 모든 경우의 수는 하나도 안입을 경우, 하나를 입을 경우인데, 예시를 들어보겠다.
key | value
상의 3
하의 2
위와 같이 hashmap에 저장됬다고 하자. 그러면 상의의 모든 경우의 수는 상의 안입기, 첫번째 상의 입기, 두번째 상의 입기, 세번째 상의 입기가 될 것이다. 이렇게 계산해보면 위의 예시에서는 총 4*3=12 가지의 조합 수가 나오게 된다. 문제의 조건 중에서 옷은 최소 한 개는 입어야 한다고 했으니 상의, 하의 모두 안입는 경우의 수 한 번, 1을 빼준 11가지 조합이 가능하다고 볼 수 있다.
내 코드:
import java.util.HashMap;
class Solution {
public int solution(String[][] clothes) {
int answer = 1;
HashMap<String,Integer> hm = new HashMap<>();
for(int i=0;i<clothes.length;i++){
hm.put(clothes[i][1],hm.getOrDefault(clothes[i][1],0)+1);
}
for(String key : hm.keySet()){
answer *= hm.get(key)+1;
}
return answer - 1;
}
}
HashMap에 clothes배열의 옷 종류 문자열을 key로 넣었고, value는 해당 key의 갯수를 넣었다. getOrDefault 함수를 사용하여 해시맵에 처음 들어오는 옷 종류 문자열이면 value를 1로 해줬고, 이미 존재하는 옷 종류가 다시 들어오면 카운터처럼 value 값을 1 더해서 넣었다. 그리고 key들을 순회하며 value + 1을 곱했고, 마지막에 1을 빼줬다.
조합 개수 구하는 곳에서 한참 막혔었다...열공하자
Author And Source
이 문제에 관하여([java] 프로그래머스 "위장" 코테 연습 해시), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@wigbuldok/java-프로그래머스-위장-코테-연습-해시저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)