-
해당 문제는 옷의 이름과 종류가 주어졌을 때 안 겹치게 옷을 입는 경우의 수를 구하는 문제다.
단 알몸인 경우는 없다.
문제를 보고 map와 조합을 이용하면 되겠다고 생각했고,
먼저 각각의 종류에 대해 생각해 보면 모자가 3종류가 있으면 모자는 총 4가지의 경우의 수가 생긴다.
1번 모자, 2번 모자, 3번 모자, 모자 x 즉 4C1 = 4의 경우의 수다
안경이 2종류가 있으면 안경의 경우의 수는 3일 것이고
안경과 모자를 통해 경우의 수를 구하면 4*3이 된다.
하지만 이 경우의 수에서는 모자 x 안경 x의 경우가 포함되어 있기 때문에 -1을 해주어야 한다!
map를 이용해 키값에는 종류를 value 값에는 해당 종류의 개수를 증가시키도록 하였고,
getOrDefault는 블로그에 설명해 두었는데 간단히 해당 키가 있으면 value를 가져오고
없으면 지정한 값 0을 가져오는 메서드다.
계산하는 부분에서는 map에 존재하는 모든 value 값을 가져오는데 이때 +1을 해주는 이유는
해당 종류의 제품을 착용 안 하는 경우를 추가해 주는 것이며, 최종 값에서는 -1(알몸)
을 해주어서 문제를 해결할 수 있었다.
728x90'알고리즘 > Baekjoon' 카테고리의 다른 글
Baekjoon 2407 조합 JAVA (0) 2021.11.16 Baekjoon 1629 곱셈 JAVA (0) 2021.11.16 Baekjoon 2206 벽 부수고 이동하기 JAVA (0) 2021.11.16 Baekjoon 1167 트리의 지름 JAVA (0) 2021.11.16 Baekjoon 1520 내리막 길 JAVA (0) 2021.11.16 댓글