Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 | 29 |
30 | 31 |
Tags
- bitmask
- 구름
- 코드트리
- On-Premise
- s3
- 동전 퍼즐
- softeer
- db
- bfs
- objectstorage
- 카카오엔터프라이즈
- BFS
- 정렬
- MESSAGEBROKER
- 인가인증
- jsonwebtoken
- 백엔드 개발
- sonarqube
- 알고리즘
- CODETREE
- DP
- java
- es_java_home
- 완전탐색
- 자바
- 카카오클라우드
- 함수 종속성
- DFS
- 소프티어
- dockercompose
Archives
- Today
- Total
wooing
[프로그래머스/Hash] 의상 본문
문제
https://school.programmers.co.kr/learn/courses/30/lessons/42578
프로그래머스
SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
해결방법
해당 문제는 주어진 2차원 배열에서 중류별 옷의 개수를 구한 후, 경우의 수를 구하면 되는 문제이다.
예를 들어, 종류가 [a, b, c] 3개이고 각 [3, 2, 1]개의 옷이 있다고 하면
- 한 종류만 고르는 경우
- 3 + 2 + 1 = 6
- (a + b + c)
- 두 종류만 고르는 경우
- 3 * 2 + 2 * 1 + 3 * 1 = 11
- (ab + bc + ac)
- 세 종류만 고르는 경우
- 3 * 2 * 1 = 6
- (abc)
이를 전개하면 abc + ab + bc + ac + a + b + c로 나타낼 수 있다. 이는 3차방정식 곱셈공식의 아래 공식과 유사하다.
(x + a)(x + b)(x + c) = x^3 + x^2(a + b + c) + x(ab + bc + ca) + abc
해당 공식에서 x를 1로 두고, 최종 값에 -1을 하면 이번 문제의 경우의 수 공식이 완성된다.
(a + b)(b + 1)(c + 1) - 1 = abc + (ab + bc + ca) + (a + b + c)
소스코드
더보기
import java.io.*;
import java.util.*;
class Solution {
public int solution(String[][] clothes) {
int answer = 1;
Map<String, Integer> map = new HashMap<>();
for(int i = 0; i < clothes.length; i++){
String[] cloth = clothes[i];
map.put(cloth[1], map.getOrDefault(cloth[1], 0) + 1);
}
for(String k : map.keySet()){
answer *= (map.get(k) + 1);
}
return answer - 1;
}
}
'알고리즘' 카테고리의 다른 글
[구름, 백준/완전탐색] 동전 퍼즐 (0) | 2025.03.19 |
---|---|
[구름/구현] 인공지능 청소기 (0) | 2025.03.18 |
[코드트리/BFS] 빙하 (0) | 2025.02.17 |
[코드트리/BFS] 우리는 하나 (1) | 2025.02.15 |
[코드트리/BFS] 돌 잘 치우기 (1) | 2025.02.14 |