나의 답
def solution(clothes):
clothes.sort()
dic = {}
num = 0
for value, t in clothes:
dic[t]=0
for value, t in clothes:
dic[t]+=1
for k in dic:
if(dic[k]==1):
num+=1
if(len(dic)==1 and num==0):
return len(clothes)
all_value = pow(2, len(clothes))-1
check_value = pow(2, num)
return all_value - check_value
처음에 감도 안잡혀서
같이 스터디하는 맹지 언니의 말을 듣고
type : type에 해당되는 옷들의 개수
이렇게 관리를 했다.
타입이 뭣인지는 중요하지 않았기에, 개수만 알면 된다고 생각을 했기 때문이다.
개수가지고 온갖 확통 문제 푸는 것 처럼 생각을 했다.
중복 허용O 모든 경우의 수 - 중복된 경우의 수를 뺴려고 하였으나
각각 구하는 건 쉽지 않았다.
따라서 답을 보게 되었따...ㅎㅎ
다른 사람 답
def solution(clothes):
clothes_type = {}
for c, t in clothes:
if t not in clothes_type:
clothes_type[t] = 2
else:
clothes_type[t] += 1
cnt = 1
for num in clothes_type.values():
cnt *= num
return cnt - 1
type : type에 해당하는 옷들의 개수까지 관리하는 건 맞았는데,
이 때 개수에문제 점이 있었다.
처음에 2개로 초기화를 해두고 시작했어야 했다 . 각 type 당 나올 수 있는 경우의 수는 {아예안입은경우, 1개인 경우} 이니까
그 후로도 해당 타입의 수가 있다면 1을 더해주는 것이다.
그래서 각 타입 당 개수를 곱해주면 총 경우의 수가 나온다는 결론..!
중복을 허용하지 않는 경우, 각 type의 개수끼리 곱해주면 총 경우의 수가 나오나보다.........ㅎㅎ
마지막에 1을 빼누느 경우는 모두 안입었을 경우를 빼준거라고 한다!