[프로그래머스|JAVA] 의상 | HashMap()
2025. 6. 18. 14:25ㆍ💻코딩/💡Programmers
728x90
반응형
[문제 링크]
프로그래머스
SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
import java.util.*;
class Solution {
public int solution(String[][] clothes) {
int answer = 1;
HashMap<String, Integer> map = new HashMap<>();
for(int i = 0; i < clothes.length; i++){
map.compute(clothes[i][1], (key, oldValue) -> (oldValue == null? 2: oldValue + 1));
}
for(int i : map.values()){
answer *= i;
}
return answer - 1;
}
}
[접근법]
- HashMap을 사용하여 <옷의 종류, 개수>를 저장한다.
- map.compute() 함수를 사용하여
- 키 값이 존재하지 않을 때는 2 값을, ➡️ 옷을 고르지 않고 다른 종류의 옷을 선택할 수 있으므로 +1한 2 값을 넣음.
- 존재하면 원래 값 +1을 하여 value 값을 넣는다.
- map.compute() 함수를 사용하여
- 각 개수를 곱한다 (조합)
- answer 값에 1을 빼고 반환한다. ➡️ 모든 옷을 고르지 않는 경우 빼줌
해시를 사용하는 것임을 알려줬기에 접근하기 쉬웠지만,
옷을 고르지 않고 다른 종류의 옷을 선택하는 경우, 모든 옷을 고르지 않는 경우 등
다양한 경우를 생각하지 못해서 여러 시도가 필요했던 것 같다.
추가로 map.compute() 함수를 처음 사용해봤고, 람다식을 오랜만에 사용한 것 같다.
이번 기회에 배운 HashMap의 map.compute()에 대해서도 포스팅 하도록 하겠다.
728x90
반응형
'💻코딩 > 💡Programmers' 카테고리의 다른 글
[프로그래머스|MySQL] 대장균들의 자식의 수 구하기 | 2가지 방법 ⭕️ | COUNT(), LEFT JOIN, 서브쿼리 (0) | 2025.06.19 |
---|---|
[프로그래머스|MySQL] 3월에 태어난 여성 회원 목록 출력하기 | DATE_FORMAT, WHERE AND 조건 (0) | 2025.06.19 |
[프로그래머스|MySQL] 과일로 만든 아이스크림 고르기 | JOIN, WHERE AND 조건 (0) | 2025.06.10 |
[프로그래머스|MySQL] SELECT | 조건에 부합하는 중고거래 댓글 조회하기 | DATE_FORMAT() | JOIN (0) | 2025.06.05 |
[프로그래머스|JAVA] 행렬의 곱셈 | 그림 풀이 ⭕️ (1) | 2025.06.04 |