반응형
9375번 패션왕 신해빈 문제의 해답은,
각 의상의 개수가 a, b, c, ... 일 때 답이 {(a+1) * (b+1) * (c+1) * ... } - 1 이라는 것에 있다
하지만 이 글에서는 딕셔너리를 이용하는 것에 초점을 두어보자
코드는 다음과 같다
# input Test Case
for _ in range(int(input())):
wearable = dict()
# input n
for _ in range(int(input())):
wear_name, wear_type = map(str, input().split())
# 같은 옷 분류 중, 이름은 버리고 종류만 가져가기
if wear_type in wearable.keys():
wearable[wear_type] += 1
else:
wearable[wear_type] = 1
# (각 옷의 수)+1 한 것을 곱해줌
answer = 1
for key in wearable.keys():
answer *= wearable[key] + 1
# 안입는 경우만 뺴줌
print(answer - 1)
우리가 생각해야 하는 조건들은 다음 세 가지이다
1. 의상과 의상의 종류를 묶어 저장하면 편할 것이고,
2. 같은 종류의 의상이 있는지 판별하며 추가해야한다 (같은 이름의 옷은 없다)
3. 마지막에는 의상 종류마다의 의상 개수를 확인한다
위 조건으로 우리는 [조건 1] 딕셔너리를 떠올리고,
[조건 2/3] 의상의 종류(key)와 의상의 개수(value)를 다루면 된다고 생각할 수 있다
우선 Line 1 ~ 7 에서는 Test Case, n, 의상과 의상 종류들을 입력받는다
그 사이에 Line 3 에서 wearable이라는 딕셔너리 자료형을 선언한 것을 볼 수 있다
Line 9 ~ 13 에서 의상의 종류를 비교하고, 개수를 +1 해준다
Line 15 ~ 에서 의상의 개수로 답을 도출하는 것을 알 수 있다
이와 같이 종류나 표같은 대응관계가 있으면 딕셔너리를 이용할 수 있다
C에서는 구조체를 이용하여 다음과 같이 구현할 것이다
struct clothes {
char name[21];
int num;
};
typedef struct clothes {
char name[21];
int num;
}clothes;
반응형
'etc.' 카테고리의 다른 글
[Virtualbox] 윈도우 10 업데이트 후 HostInterfaceNetworking-VirtualBox Host-Only Ethernet Adapter 에러 (0) | 2021.05.20 |
---|---|
[티스토리][Whatever 스킨] 메뉴 버튼이 안 눌려요 / 햄버거 버튼이 안 눌려요 (0) | 2021.05.08 |
[백준 2981번][C] 검문 (유클리드 호제법) (1) | 2020.12.14 |
[Python] 입력 받기 (input(), sys.stdin.readline()) (0) | 2020.12.12 |
[Python] 소인수 분해 (** 연산자, // 연산자) (0) | 2020.12.09 |