출처: 프로그래머스 코딩테스트 연습
https://programmers.co.kr/learn/courses/30/lessons/42578
def solution(clothes):
type = {}
for i in clothes: # 같은 타입끼리 리스트를 만들어서 value에 지정
if i[1] in list(type.keys()): # 타입이 이미 저장된 key값이라면 value 리스트에 이름 추가
type[i[1]].append(i[0])
else: # 타입을 key값으로, 이름을 리스트 형태로 value값에 추가
type[i[1]] = [i[0]]
type_lst = list(type.keys())
answer = 1
for t in type_lst: # 타입별 value 리스트의 길이에 1 더해준 만큼을 answer에 곱해줌
answer *= len(type[t]) + 1
return answer - 1 # 원하는 값은 answer에서 1을 빼줘야함(아무것도 선택안하는 경우)
예전에 풀었던 풀이⬇ 보다 더 빠르게 통과시키기 위해 코드를 수정해보았다.
for 문 안에 for 문을 넣었던 풀이에서 for 문을 한 번만 쓰니 더 빠른 시간으로 통과하는 걸 확인할 수 있었다.
def solution(clothes):
dict = {}
for i in clothes:
dict[i[0]] = i[1]
types = [[0] for i in set(dict.values())]
for i in range(len(set(dict.values()))):
for j in range(len(clothes)):
if clothes[j][1] == list(set(dict.values()))[i]:
types[i].append(clothes[j][0])
answer = 1
for i in range(len(types)):
answer *= len(types[i])
return answer - 1