문제
programmers.co.kr/learn/courses/30/lessons/42578
코딩테스트 연습 - 위장
programmers.co.kr
참고 링크
2ssue.github.io/algorithm/programmers_42578/
[프로그래머스] 위장 JAVA
프로그래머스_위장 문제 풀이 코드 이 문제에서 필요한 것은 옷 종류의 개수가 몇 가지 있는지이다. 따라서 옷 종류의 이름은 쓸모없는 값이 된다. {옷 종류}:{총 개수} 와 같은 형태로 매칭되어
2ssue.github.io
코드
옷종류:총개수 로 이루어진 HashMap(key-value)을 구성한다.
이후 규칙을 찾아 공식화 하면 된다.
공식은 아래 주석에
import java.util.*;
/*
if 4종류의 옷과 그 옷이 {n, m, o, p}
(n+1)*(m+1)*(o+1)*(p+1)-1
n + m + o + p + n*m + n*o + n*p + m*o + m*p + o*p + n*m*o + n*m*p + n*o*p + m*o*p + n*m*o*p
= n*(o + p + o*p +1 + m*(o + p + o*p +1)) + m*(o + p + o*p +1) + o*p + o + p
= n*(o + p + o*p +1)(m+1) + m(o + p + o*p +1) + o + p + o*p +1 -1
= n*(o + p + o*p +1)(m+1) + (m+1)(o + p + o*p +1) -1
= (o + p + o*p +1)(m+1)(n+1) -1
= (o+1 + p(o+1))(m+1)(n+1) -1
= (m+1)(n+1)(o+1)(p+1)-1
*/
class Solution {
public int solution(String[][] clothes) {
int answer = 1;
HashMap<String, Integer> map = new HashMap<String, Integer>();
for(int i=0; i<clothes.length; i++){
if(map.get(clothes[i][1])==null)
map.put(clothes[i][1],1);
else
map.put(clothes[i][1],map.get(clothes[i][1])+1);
}
for(String key: map.keySet()){
answer*=(map.get(key)+1);
}
return answer=answer-1;
}
}
'Preparing Coding Test > Programmers L2' 카테고리의 다른 글
[Java/프로그래머스/탐욕법] Level 2 : 구명 보트 (0) | 2020.11.10 |
---|---|
[Java/프로그래머스/탐욕법(Greedy)] Level 2: 조이 스틱 (0) | 2020.11.09 |
[Java/프로그래머스/DFS] 타겟 넘버 (0) | 2020.10.19 |
[Java/프로그래머스/힙(Heap)] 더 맵게 (0) | 2020.10.16 |
[Java/프로그래머스/브루트 포스] 소수 찾기 (Level 2) (0) | 2020.08.29 |