[백준] 9375번 패션왕 신해빈 / Java, Python
Baekjoon Online Judge
algorithm practice
- 단계별 문제풀기
17. 정수론 및 조합론
정수론과 조합론을 배워 봅시다.
정수론과 조합론을 배워 봅시다.
Java / Python
10. 패션왕 신해빈
경우의 수 연습문제
이번 문제는 조합을 이용하는 문제입니다. 의상 이름과 의상 종류를 입력 받고, 옷의 종류가 중복되지 않게 조합해야 합니다. 같은 종류의 의상은 입을 수 없어, 다른 종류의 의상끼리 구분하여 옷을 조합하는 문제입니다. 공식을 간단하게 정리해보면 (종류별 옷의 수 + 1)을 전부 곱해주고 (해당 종류의 옷을 안 입는 경우의 수를 포함한 것) - 1을 하면 되는 방식입니다.
- Java
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;
import java.util.HashMap;
import java.util.StringTokenizer;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringBuilder sb = new StringBuilder();
int T = Integer.parseInt(br.readLine());
while (T -- > 0) {
HashMap<String, Integer> hm = new HashMap<>(); // <종류, 개수>
int N = Integer.parseInt(br.readLine()); // 옷의 개수
while (N-- > 0) {
StringTokenizer st = new StringTokenizer(br.readLine(), " ");
st.nextToken(); // 옷 이름 고려 X
String kind = st.nextToken(); // 옷 종류
if (hm.containsKey(kind)) {
hm.put(kind, hm.get(kind) + 1);
}
else {
hm.put(kind, 1);
}
}
int result = 1;
// 안 입는 경우 고려 각 종류별 +1
for (int val : hm.values()) {
result *= (val + 1);
}
// 알몸 상태 제외 result - 1
sb.append(result - 1).append('\n');
}
System.out.println(sb);
}
}
- Python
from collections import Counter
import sys
T = int(sys.stdin.readline())
for i in range(T):
n = int(sys.stdin.readline())
cloth = []
for j in range(n):
a, b = sys.stdin.readline().split()
cloth.append(b)
num = 1
result = Counter(cloth)
for key in result:
num *= result[key] + 1
print(num - 1)
Author And Source
이 문제에 관하여([백준] 9375번 패션왕 신해빈 / Java, Python), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@jini_eun/백준-9375번-패션왕-신해빈-Java-Python저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)