알고리즘/프로그래머스문제풀이

[Python/프로그래머스]위장_해시

개발자 덕구🐾 2022. 6. 14. 22:06
728x90

 

 

https://programmers.co.kr/learn/courses/30/lessons/42578?language=python3 

 

코딩테스트 연습 - 위장

 

programmers.co.kr

 

 

 


 

 

 

 

코드[참고 블로그]  : 

 

def solution(clothes):
    answer = 1
    closet = {} # dictionary
    for element in clothes :
        key = element[1] # 옷 종류
        value = element[0] # 옷 이름
        if key in closet : # 이미 있었던 옷 종류라면 ? 
            closet[key].append(value)
        else : # 처음 들어온 옷 종류라면 ?
            closet[key] = [value] # list로 주어야 후에 append할 수 있다. 
    for key in closet.keys() :
        answer *= (len(closet[key])+1)
        
    return answer-1

 

 

복습 중 내가 생각한 코드 :  (Counter이용)

 

 

from collections import Counter
def solution(clothes):
    answer = 1
    arr = []
    for name, types in clothes :
        arr.append(types)
    arr=Counter(arr)
    for i in arr.values() :
        answer *= (i+1)
    return answer-1

 

 

 

복습 중 내가 생각한 코드 :  (dict이용)

def solution(clothes):
    answer = 1
    dic = {}
    for cloth in clothes :
        if cloth[1] in dic :
            dic[cloth[1]] +=1 
        else :
            dic[cloth[1]] = 1
    for k, v in dic.items() :
        answer *= (v+1)
    return answer -1

 

 

 

 

 

배운 점 :

 

 

1. 옷 입을 수 있는 경우의 수 계산법 :

옷의 수 +1  (안입는 경우가 있어서 +1을 해줌)을 모든 종류에 대해서 계산한 후 

모든 옷을 입지 않은 경우인 1가지 경우를 빼준다. 

 

 

예를 들면 티셔츠 1개와 안경 2개가 있다고 하면 

1번 티셔츠

1번 안경

2번 안경

1번 티셔츠 + 1번 안경

1번 티셔츠 + 2번 안경

으로 5개이다. 

 

이것은 

티셔츠 개수 (1) +1  = 2 

안경의 개수 (2) +1 = 3

를 곱하여 나온 6에서 1을 뺀 값이다. 

 

 

1을 더하는 이유는 착용하지 않은 경우에 대한 처리이고

마지막에 1을 빼는 이유는 아무것도 입지않은 경우를 빼는 것이다. 

 

 

2. python의 dictionary

-   {}으로 표현한다. 

 

- key들을 돌리려면 keys()를 이용한다. 

- dict에 있는 모든 것들을 돌리려면 items()를 이용한다. 

 

 


 

 

 

 

참고 블로그 :

 

https://velog.io/@devjuun_s/%EC%9C%84%EC%9E%A5-%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%8A%A4

 

위장-프로그래머스(python)

문제 출처 : 프로그래머스-위장 문제설명 스파이들은 매일 다른 옷을 조합하여 입어 자신을 위장합니다. 예를 들어 스파이가 가진 옷이 아래와 같고 오늘 스파이가 동그란 안경, 긴 코트, 파란색

velog.io

 

 

복습 : 

 

20220618

  20220621

✅ 20220623

✅ 20220626

✅ 20220630

반응형