[프로그래머스 코딩테스트 고득점 kit] 위장(java)
[옷 종류, 옷 개수] 를 사용해야 하기 때문에 Map을 사용했다. 재귀를 사용해서 조합을 하는건줄 알았지만,, 공식을 사용한 경우의 수 문제였다.
안경 = [a,b] ,모자 = [c] 라고 할때 가능한 경우의 수는 다음과 같다.
(2+1) * (1+1) - 1;
선택하는 경우 + 선택하지 않는 경우때문에 +1을 해주고, 입을옷은 동시에 고르는거니까 +가 아닌 * ,마지막으로 최소한 하나의 의상을 입어야한다고 했으니까 모두다 선택하지 않는 경우의 수 1개를 빼줘야한다.
즉, 안경의 경우 a만선택 / b만선택 / 둘다 선택하지 않음 이라는 3가지 경우의 수가 나오고 모자의 경우 c선택/ 선택하지 않음의 2가지 경우의 수가 나온다.
안경과 모자는 동시에 선택하므로 * 를 해주고 안경, 모자 둘다 쓰지 않는 경우의 수 -1을 해주면 된다.
- a = a선택, c선택 x
- b = b선택, c선택 x
- c = a,b 둘다선택 x, c선택
- a + c = a선택, c선택
- b + c = b선택, c선택
- 마지막으로 a,b,c 아무것도 선택하지 않은것 제외
문제 링크 https://programmers.co.kr/learn/courses/30/lessons/42578
문제풀이
Comments