반응형
https://programmers.co.kr/learn/courses/30/lessons/42578
[ 코드 ]
import java.util.*;
class Solution {
public int solution(String[][] clothes) {
int answer = 1;
HashMap<String, Integer> map = new HashMap<>();
for(int row = 0; row < clothes.length; row++) {
String c = clothes[row][1];
map.put(c, map.getOrDefault(c, 1) + 1);
}
for(String key: map.keySet()) {
answer *= map.get(key);
}
return answer-1;
}
}
HashMap을 이용하였다.
key에는 각 종 옷 종류를 넣고
value에는 map.getOrDefault(c, 1) + 1 을 넣어서 갯수를 저장했다.
map.getOrDefault(c, 1) + 1의 뜻은
map 안에 값이 존재하지 않으면 default 값인 1을 넣고 값을 +1 더해주겠다는 뜻이고,
map 안에 값이 이미 존재하면 c key에 해당하는 값을 가져와서 1을 더해준 값을 저장해준다는 뜻이다.
한마디로 하나씩 발견할때마다 +1을 해주어 갯수를 value에 저장하겠다는 뜻이다.
보통 갯수를 저장할 때는 default 값을 0으로 해주고 시작하면 된다.
default 값을 1로 지정한 이유는 경우의 수를 구하기 위함이다.
종류가 하나 있는 경우 안 입기라는 경우의 수가 하나 추가 되는 것이기 때문에 default를 1로 주었다.
예를 들어
상의 : 안 입기, 빨간셔츠, 파란셔츠
하의 : 안 입기, 청바지, 면바지
3 * 3 - 1
둘 다 안 입는 경우의 수 하나만 빼준다.
※ 오늘의 교훈
메소드
map.getOrDefault(c, 1)+1
map.keySet()
map.get(key)
사용에 있어서 배웠다.
반응형
'Algorithm > 프로그래머스' 카테고리의 다른 글
[프로그래머스] 숫자 문자열과 영단어 / java (0) | 2021.07.09 |
---|---|
[프로그래머스] 짝지어 제거하기 / java (0) | 2021.07.07 |
[프로그래머스] H-Index / java (0) | 2021.06.14 |
[프로그래머스] 여행경로 / java (0) | 2021.06.13 |
[프로그래머스] 멀쩡한 사각형 / c++ (0) | 2020.05.28 |