👀 문제
https://www.acmicpc.net/problem/9375
👊 도전
1. 설계
- HashMap을 이용하여 종류별 의상 갯수를 센다.
(종류1+1)*(종류2+1)*...*(종류n+1)-1
을 리턴한다.
2. 구현 (성공 코드)
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
32
33
34
35
import java.util.HashMap;
import java.util.Scanner;
/**
* @author HEESOO
*
*/
public class Main {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner input=new Scanner(System.in);
int t=input.nextInt();
for(int i=0;i<t;i++) {
int n=input.nextInt();
HashMap<String, Integer> map=new HashMap<>();
for(int j=0;j<n;j++) {
String name=input.next();
String kind=input.next();
if(map.containsKey(kind)) {
int idx=map.get(kind);
map.put(kind, idx+1);
}
else {
map.put(kind, 1);
}
}
int answer=1;
for(int value: map.values()) {
answer*=value+1;
}
System.out.println(answer-1);
}
}
}
3. 결과
🤟 성공 🤟
4. 설명
- 공식을 찾는다
- 의상 종류 별 수+1한 값을 모두 곱한 값에 -1하면 정답이 나온다.
- HashMap을 이용한다
- 의상 종류를 key, 그 갯수를 value로 하여 새로운 의상이 나오면 키를 부여하고, 기존에 존재하는 의상 종류이면 value+1하여 종류별 갯수를 센다.
- map.values()함수를 이용하여 해시맵에 들어있는 모든 values를 하나씩 조회하며 해당 value+1한 값을 곱한다.
- 모든 곱에서 -1한 값을 출력한다.
👏 해결 완료!
참고
- 자바 백준 9375번 패션왕 신해빈 https://oper6210.tistory.com/133