programmers.co.kr/learn/courses/30/lessons/42578
코딩테스트 연습 - 위장
programmers.co.kr
문제 풀이 :
옷의 종류를 key로 종류의 갯수를 value로 해시테이블을 구성합니다.
해시테이블에 옷의 종류가 없다면 갯수를 1로 넣어주고, 옷의 종류가 있다면 갯수를 1씩 늘려줍니다.
ex)
headgear : yellow_het , green_turban
eyewear : blue_sunglasses
만약 yellow_het 을 골랐을 때 eyewear를 안 입는 경우도 있습니다.
그렇기 때문에 headgear를 안 입는 경우, eyewear를 안 입는 경우 각 각 +1 을 해주어서 경우의 수를 구해줍니다.
이 때 둘 다 안 쓰는 경우는 제외시켜주어야 하기 때문에 마지막에 -1을 해줍니다.
(headgear + 1) * (eyewear+1) -1
import java.util.HashMap;
class Solution {
public int solution(String[][] clothes) {
int answer = 1;
HashMap<String, Integer> hs = new HashMap();
// 옷의 종류, 종류 갯수
for (int i = 0; i < clothes.length; i++) {
String key = clothes[i][1];
if (!hs.containsKey(key)) hs.put(key, 1);
else hs.put(key, hs.get(key) + 1);
}
for (int i : hs.values()) answer *= (i + 1);
answer--;
return answer;
}
}
'ALGORITHM > 프로그래머스 | 백준 | 삼성 | 카카오' 카테고리의 다른 글
[프로그래머스] 쿼드압축 후 개수 세기 (0) | 2021.03.16 |
---|---|
[백준] 14502번 연구소 (0) | 2021.03.03 |
[SWEA] 1954. 달팽이 숫자 (0) | 2021.01.28 |
[프로그래머스] 완주하지 못한 선수 (0) | 2021.01.12 |
[백준] 1931 회의실 배정 (0) | 2021.01.06 |