[Programmers] 위장

퍼롱's·2021년 9월 5일
0

🍒Programmers🍒

목록 보기
4/11
post-thumbnail

출처: 프로그래머스 코딩테스트 연습
https://programmers.co.kr/learn/courses/30/lessons/42578

📝 풀이(python3)

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
profile
유지경성

0개의 댓글