제가 공부한 내용을 정리하는 블로그입니다.
아직 많이 부족하고 배울게 너무나도 많습니다. 틀린내용이 있으면 언제나 가감없이 말씀해주시면 감사하겠습니다😁
Programmers 알고리즘 고득점 Kit입니다.
포인트
확률에서 사용했던 조합을 이용하였습니다. 각 종류별로 nC1을 하고 모든 의상을 안입는 경우를 제외하여 경우의 수를 구하였습니다.
의상 소스코드
import java.util.*;
class Solution {
public int solution(String[][] clothes) {
int len = clothes.length;
Map<String, Integer> matches = new HashMap<>();
for(int i = 0; i < len; i++) {
String item = clothes[i][0];
String kind = clothes[i][1];
matches.put(kind, matches.getOrDefault(kind, 0) + 1);
}
int answer = 1;
for(String key: matches.keySet()) {
answer *= matches.get(key) + 1;
}
return answer - 1;
}
}
코드 설명
- matches 해시맵: 각 옷의 종류별 개수를 저장합니다.
- clothes[i][0]은 옷의 이름, clothes[i][1]은 옷의 종류입니다.
- 해시맵에 옷의 종류를 키로, 해당 종류의 옷의 수를 값으로 저장합니다.
- 모든 옷의 조합 계산:
- answer는 초기값으로 1로 설정됩니다.
- 각 옷의 종류마다 (해당 종류의 옷 수 + 1)를 answer에 곱해줍니다.
- +1은 해당 종류의 옷을 입지 않는 경우를 포함하기 위해 사용됩니다.
- 결과 반환:
- answer - 1은 아무 옷도 입지 않는 경우를 제외한 옷의 조합 수를 반환합니다.
'코딩테스트 > 프로그래머스' 카테고리의 다른 글
[코딩테스트] Java 같은 숫자는 싫어 (0) | 2024.11.09 |
---|---|
[코딩테스트] Java 베스트 앨범 (4) | 2024.11.08 |
[코딩테스트] Java 전화번호 목록 (1) | 2024.11.08 |
[코딩테스트] Java 완주하지 못한 선수 (0) | 2024.11.08 |
[코딩테스트] Java 폰켓몬 (0) | 2024.11.08 |