반응형
Notice
Recent Posts
Recent Comments
Link
지구정복
[자료구조,수학] 백준 - 패션왕 신해빈 본문
728x90
반응형
https://www.acmicpc.net/problem/9375
-문제해설
옷의 종류만 중요하고 옷이 무엇인지는 중요하지 않다.
HashMap을 이용해서 동일한 옷의 종류면 그냥 옷의 개수를 1씩 올리고 없으면 새로운 옷의 종류를 키로 삽입하고 값은 1로 설정한다.
그리고 아래 공식으로 출력값을 만든다.
sum = (첫 번째 종류의 옷 개수 + 1) * (두 번째 종류의 옷 개수 + 1) * (세 번째 종류의 옷 개수 + 1) ....
그리고 출력할 때는 -1을 해주고 출력한다.
System.out.println( sum - 1 );
-자바
package math;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.HashMap;
import java.util.StringTokenizer;
public class BJ9375 {
public static void main(String[] args) throws NumberFormatException, IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int t = Integer.parseInt( br.readLine() );
int n = 0;
String name;
String type;
int sum;
StringTokenizer st;
HashMap<String, Integer> hm;
while( t --> 0 ) {
hm = new HashMap<String, Integer>();
n = Integer.parseInt(br.readLine());
for( int i=0; i<n; i++ ) {
st = new StringTokenizer( br.readLine() );
name = st.nextToken();
type = st.nextToken();
hm.put( type, hm.getOrDefault( type, 0 )+1 );
}
sum = 1;
for( int val : hm.values() ) sum *= val + 1;
System.out.println( sum - 1 );
}
}
}
-파이썬
t = int( input() )
for _ in range( t ):
n = int( input() )
dic = {}
for _ in range( n ):
name, type = input().split()
if type in dic.keys(): dic[type] += 1
else: dic[type] = 1
sum = 1
for i in dic.values():
sum *= i+1
print( sum - 1 )
728x90
반응형
'데이터 엔지니어링 정복 > Algorithm' 카테고리의 다른 글
[정렬] 백준 - ATM (0) | 2021.08.13 |
---|---|
[DP] 백준 - 파도반 수열 (0) | 2021.08.13 |
[분할정복] 백준 - 색종이 만들기 (0) | 2021.08.09 |
[정렬] 백준 - 좌표압축 (0) | 2021.08.08 |
[DP] 백준 - 피보나치 함수 (0) | 2021.08.05 |
Comments