컴퓨터/프로그래머스
프로그래머스 - 42578번: 의상 [Java]
이상한 나그네
2023. 10. 7. 00:35
문제: https://school.programmers.co.kr/learn/courses/30/lessons/42578
1. 코드
import java.util.*;
class Solution {
public int solution(String[][] clothes) {
int answer = 1;
Map <String, Integer> cnt = new HashMap<>();
for(int i = 0; i < clothes.length; i++) {
if(!cnt.containsKey(clothes[i][1]))
cnt.put(clothes[i][1], 1);
else
cnt.put(clothes[i][1], cnt.get(clothes[i][1]) + 1);
}
for(String key : cnt.keySet())
answer *= cnt.get(key) + 1;
return answer - 1;
}
}
2. 설명
for(int i = 0; i < clothes.length; i++) {
if(!cnt.containsKey(clothes[i][1]))
cnt.put(clothes[i][1], 1);
else
cnt.put(clothes[i][1], cnt.get(clothes[i][1]) + 1);
}
반복문을 통해 각 옷의 종류별 갯수를 파악합니다.
int answer = 1;
for(String key : cnt.keySet())
answer *= cnt.get(key) + 1;
return answer - 1;
각 옷 종류별 개수 + 1의 값을 곱한 결과에서 -1한 결과를 출력하면 정답입니다. 경우의 수를 알면 쉽게 이해되는데 각 옷을 입는 경우와 안입는 경우가 존재하기에 옷종류에서 +1을 한 것이고, 마지막에 -1을 한 이유는 어떠한 종류도 안입는 경우는 제외한다고 문제에 명시되어 있기에 -1을 합니다.
3. 정리
- HashMap을 종류의 개수를 파악하는데 사용
- 경우의 수를 이용하여 문제 해결
- 안입는 경우도 고려
출처: 프로그래머스 코딩 테스트 연습,
https://school.programmers.co.kr/learn/challenges