
import java.util.*;
class Solution {
public int solution(String[][] clothes) {
int answer = 0;
HashMap<String,Integer> Hash = new HashMap<>();
for(String[] type : clothes){
String clothType = type[1];
if(!Hash.containsKey(clothType)){
Hash.put(clothType,1);
}else{
Hash.put(clothType,Hash.get(clothType)+1);
}
}
answer = 1;
for(int count : Hash.values()){
answer *= (count+1);
}
return answer-1;
}
}
1.HashMap을 호출하여 key는 String value는 Integer로 지정해준다.
2.type이라는 String 배열안에 clothes를 넣어주고 그 중 옷의 종류인 type[1]만 꺼낸다.
-String clothType = type[1] =>headgear같은 것을 의미.
-clothType을 쓰는 이유: 옷의종류의 갯수를 파악하여 옷입는 방법을 구하기 위해서.
3.containsKey를 사용하여 Hash안에 key가 존재하는지를 파악한다.
-if문에 키가 존재하지 않는다면 hash안에 key와 value를 넣어준다.
-else문에 존재한다, hash안에 key와 기존 value를 호출하여 1을 더해준다 (개수를 늘려준다고 생각)
4.answer는 이해를 돕기위해 다시 1로 지정한다(곱셈을 해야되기 때문에 0이 아닌 1로 지정)
5. for 반복문을 통해 위에서 지정해준 hash의 값들을 count의 넣어준 뒤 answer 에 (count+1)을 한다.
-count가 아닌 count+1을 해주는 이유: +1은 옷을 안입는 경우를 말하는데
headgear가 2개고 eyewear가 1개 있다고 가정한다면 headgear를 아예 안쓰는 경우도 있고 eyewear를 아예 안쓰는 경우도 있다. 이 경우까지 모두 포함시켜서 돌려줘야하기 때문에 +1을해준다.
6. 모든 반복문이 끝나면 +1을 다해줬기 때문에 모든 종류의 옷을 입지않는 경우가 1가지 있을 것이기에 그 경우를 빼준다.(한가지이기에 -1)
'코딩테스트 공부' 카테고리의 다른 글
해시-전화번호 목록 (0) | 2024.08.27 |
---|---|
해시-완주하지 못한 선수 (0) | 2024.08.25 |
해시-폰켓몬 (0) | 2024.08.22 |
평균 구하기-level1 (0) | 2024.04.23 |
약수의 합-level1 (0) | 2024.04.23 |

import java.util.*;
class Solution {
public int solution(String[][] clothes) {
int answer = 0;
HashMap<String,Integer> Hash = new HashMap<>();
for(String[] type : clothes){
String clothType = type[1];
if(!Hash.containsKey(clothType)){
Hash.put(clothType,1);
}else{
Hash.put(clothType,Hash.get(clothType)+1);
}
}
answer = 1;
for(int count : Hash.values()){
answer *= (count+1);
}
return answer-1;
}
}
1.HashMap을 호출하여 key는 String value는 Integer로 지정해준다.
2.type이라는 String 배열안에 clothes를 넣어주고 그 중 옷의 종류인 type[1]만 꺼낸다.
-String clothType = type[1] =>headgear같은 것을 의미.
-clothType을 쓰는 이유: 옷의종류의 갯수를 파악하여 옷입는 방법을 구하기 위해서.
3.containsKey를 사용하여 Hash안에 key가 존재하는지를 파악한다.
-if문에 키가 존재하지 않는다면 hash안에 key와 value를 넣어준다.
-else문에 존재한다, hash안에 key와 기존 value를 호출하여 1을 더해준다 (개수를 늘려준다고 생각)
4.answer는 이해를 돕기위해 다시 1로 지정한다(곱셈을 해야되기 때문에 0이 아닌 1로 지정)
5. for 반복문을 통해 위에서 지정해준 hash의 값들을 count의 넣어준 뒤 answer 에 (count+1)을 한다.
-count가 아닌 count+1을 해주는 이유: +1은 옷을 안입는 경우를 말하는데
headgear가 2개고 eyewear가 1개 있다고 가정한다면 headgear를 아예 안쓰는 경우도 있고 eyewear를 아예 안쓰는 경우도 있다. 이 경우까지 모두 포함시켜서 돌려줘야하기 때문에 +1을해준다.
6. 모든 반복문이 끝나면 +1을 다해줬기 때문에 모든 종류의 옷을 입지않는 경우가 1가지 있을 것이기에 그 경우를 빼준다.(한가지이기에 -1)
'코딩테스트 공부' 카테고리의 다른 글
해시-전화번호 목록 (0) | 2024.08.27 |
---|---|
해시-완주하지 못한 선수 (0) | 2024.08.25 |
해시-폰켓몬 (0) | 2024.08.22 |
평균 구하기-level1 (0) | 2024.04.23 |
약수의 합-level1 (0) | 2024.04.23 |