https://programmers.co.kr/learn/courses/30/lessons/42578
Hash
HashMap<Integer, String> map = new HashMap();
map.put(1, "바나나");
map.put(2, "사과");
map.put(3, "딸기");
// 전체 데이터
System.out.println(map.toString());
// key값
Set<Integer> keyset = map.keySet();
System.out.println(keyset.toString());
// value값
Collection<String> value = map.values();
System.out.println(value.toString());
// entrySet 사용해 key , value 데이터 확인
for(Entry<Integer, String> ent : map.entrySet()){
System.out.println("entrySet : " + ent.getKey() + " / " + ent.getValue());
}
=====================================================================
{1=바나나, 2=사과, 3=딸기}
[1, 2, 3]
[바나나, 사과, 딸기]
entrySet : 1 / 바나나
entrySet : 2 / 사과
entrySet : 3 / 딸기
문제
ex_ 모자 2종류, 옷 3종류, 악세서리 2종류일 경우
부위별로 한개씩만 착용할 수 있으니 모자는 X(착용x),1, 2 => 3가지 방법, 옷 => 4가지, 악세서리 3가지
3부위 중 하나만 착용해도 되니 각 부위별 가능성들을 곱해준다
( 3 * 4 * 3 = 36 ) 경우의 수는 36가지 - 1가지(모두 벗은 경우는 없으므로!) = 35개의 경우의 수
import java.util.HashMap;
import java.util.HashSet;
import java.util.Set;
class Solution {
public int solution(String[][] clothes) {
//경우의 수를 구할때 곱해줘야하기 때문에 초기값을 1로 설정
int answer = 1;
HashMap<String, Integer> map = new HashMap<String, Integer>();
// 2차원의 배열의 경우 길이만 적으면 행의 갯수가 길이가 됨
for(int i = 0; i < clothes.length; i++){
// put을 통해 map에 데이터 입력
// getOrDefault메소드로 clothes[i][1](Key)에 해당하는 value를 넣는데 Key가 없다면 0을 반환
map.put(clothes[i][1], map.getOrDefault(clothes[i][1], 0) +1);
}
Set<String> keySet = map.keySet();
for(String key : keySet){
answer *= map.get(key) +1;
}
// 모두다 벗은 경우 1가지를 빼줌
return answer -1;
}
}
블로그 : https://sas-study.tistory.com/215 참고
솔직히 아직 잘 모르겠다...ㅜ
'Programmers' 카테고리의 다른 글
[Java] 프로그래머스 : 구명보트(Greedy Algorithm) (0) | 2022.06.28 |
---|---|
[Java] 프로그래머스 : 크레인 인형뽑기 게임(Stack 사용) (0) | 2022.06.27 |
[Java] 프로그래머스 : 완주하지 못한 선수(Hash) (0) | 2022.06.24 |
[Java] 프로그래머스 : 큰 수 만들기(StringBuilder 사용) (0) | 2022.06.21 |
[Java] 프로그래머스 : 체육복(Greedy Algorithm) (0) | 2022.06.21 |
댓글