Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- 삼성 청년 SW 아카데미
- 다익스트라
- 세마포어와 뮤텍스의 차이
- 세마포어
- 싸피 합격
- 세마포어와 뮤텍스
- 최단 경로
- 뮤텍스
- 플로이드 워셜
- Proxy
- 호스팅
- 세마포어란?
- Dijkstra Algorithm
- floyd-warshall
- 싸피
- 뮤텍스란?
- 싸피 면접 후기
- Proxy Server
- 호스팅이란?
- 프록시서버
- 플로이드 와샬
- SSAFY
- 서버 호스팅
- 웹 호스팅
- 프록시
- 다익스트라 알고리즘
- Synchronization
- 클라우드 서버
- 동기화
Archives
- Today
- Total
어제의 나보다 성장한 오늘의 나
[프로그래머스][Level2][Java] 위장 본문
programmers.co.kr/learn/courses/30/lessons/42578
문제풀이
까다로운 게 한가지 있었는데 모든 종류의 옷이 1개씩 있는경우 2n - 1으로 처리를 해주지 않을시 시간초과가 난다.
따라서 해쉬맵으로 옷의 종류를 구별하였고, 옷의 종류 해쉬 size가 clothes.length와 같다면 위와 같이 처리해줬다.
옷이 여러가지 일 경우 비교하는 수를 하나씩 증가시켜주면서 비교 해주었다.
끝이 얼굴2, 상의3, 하의2 의 경우 한개씩만 선택할때는 경우의수가 7이고,
2개일 때는 (얼굴, 상의) 2x3 = 6의 경우의 수가 나온다 이 모든 과정을 조합으로 뽑아내면서 결과값을 전역변수에
저장하여 return값으로 넘겨주었다.
코드
import java.util.*;
class Solution {
static int[] keys;
static int[] numbers;
static int sum;
public int solution(String[][] clothes) {
sum = 0;
HashMap<String,Integer> hm = new HashMap<>();
for(int i=0; i<clothes.length; i++){
if(hm.containsKey(clothes[i][1])){
hm.put(clothes[i][1], hm.get(clothes[i][1])+1);
}else{
hm.put(clothes[i][1], 1);
}
}
keys = new int[hm.size()];
int index =0;
for ( Map.Entry<String,Integer> entry : hm.entrySet() ) {
keys[index++] = entry.getValue();
}
if(hm.size() == clothes.length) return (int)Math.pow(2,hm.size())-1;
for(int i=1; i<=hm.size(); i++){
numbers = new int[clothes.length];
Arrays.fill(numbers, -1);
combi(0,0,i,hm.size());
}
return sum;
}
public void combi(int cnt,int start, int limit, int size){
if(cnt == limit){
int index =1;
for(int i=0; i<size; i++){
if(numbers[i] == -1) break;
index *= keys[numbers[i]];
}
sum += index;
return;
}
for(int i = start; i<size; i++) {
numbers[cnt] = i;
combi(cnt+1, i+1, limit, size);
}
}
}
'알고리즘 > 프로그래머스(Programmers)' 카테고리의 다른 글
[프로그래머스][Level3][Java] 이중우선순위큐 (0) | 2020.12.25 |
---|---|
[프로그래머스][Level3][Java] 네트워크 (0) | 2020.12.24 |
[프로그래머스][Level2][Java] 카카오프렌즈 컬러링북 (0) | 2020.12.23 |
[프로그래머스][Level2][Java] 전화번호 목록 (0) | 2020.12.23 |
[프로그래머스][Level2][Java] 후보키 (0) | 2020.12.23 |
Comments