programmers.co.kr/learn/courses/30/lessons/42578
이차원 배열 String[][] clothes가 주어진다.
clothes : { {옷이름, 옷종류}, {옷이름, 옷종류}, ... {옷이름, 옷종류} }
주어진 옷들로 만들 수 있는 조합의 수를 반환하는 문제.
단, 각각의 옷은 입을 수도 안 입을 수도 있으나 아무것도 안 입는 경우는 없다.
풀이 .
import java.util.HashMap;
import java.util.Map;
class Solution {
public int solution(String[][] clothes) {
// clothes : [{옷이름, 옷종료}, {옷이름, 옷종류}, ... , {옷이름, 옷종류} ]
int answer = 1;
Map<String, Integer> hm = new HashMap<String, Integer>();
for(String[] cloth : clothes) {
String key = cloth[1]; // 옷 종류를 key로 사용
if(hm.get(key) == null) {
hm.put(key, 2); // 안 입는 경우도 고려하여 2부터 시작
}else {
hm.put(key, hm.get(key) + 1);
}
}
for(Integer num : hm.values()) {
answer *= num;
}
answer--; // 아무것도 안 입는 경우는 없음
return answer;
}
}
옷의 이름은 중요하지 않다.
옷의 종류를 key로 잡고 HashMap을 사용해 종류별로 몇 개의 옷이 있는지 센 다음 그걸 모두 곱하면 된다.
옷을 입지 않는 경우, 아무것도 입지 않는 경우에 대한 고려를 해줘야한다.
O(n)으로 처리 가능
'알고리즘 문제 > 프로그래머스' 카테고리의 다른 글
[PG] 기능 개발 JAVA (0) | 2020.12.28 |
---|---|
[PG] 주식 가격 JAVA (0) | 2020.12.28 |
[PG] 베스트 앨범 JAVA (0) | 2020.12.28 |
[PG] 전화번호 목록 JAVA (0) | 2020.12.27 |
[PG] 완주하지 못한 선수 JAVA (0) | 2020.12.27 |