[프로그래머스/Python] 해시 - 위장
🤓 풀이
def solution(clothes):
answer = {}
# {'headgear': 2, 'eyewear': 1}
for i in clothes:
if i[1] in answer:
answer[i[1]] += 1
else:
answer[i[1]] = 1
cnt = 1
for i in answer.values():
cnt *= (i+1)
return cnt - 1
- 문제에
조합
이라는 단어가 많길래 무조건combinations
써야하는 줄.. (i+1)
: 해당 종류의 옷을 안 입을 때의 경우(1)를 더해준 것cnt - 1
: 아무것도 안 입었을 때의 경우(1)를 뺀 것
👩🏻🏫 다른 풀이
def solution(clothes):
from collections import Counter
from functools import reduce
# Counter({'headgear': 2, 'eyewear': 1})
cnt = Counter([kind for name, kind in clothes])
answer = reduce(lambda x, y: x*(y+1), cnt.values(), 1) - 1
return answer
✏️ Python 문법
Counter(~)
- 파이썬에서 제공하는
collections
모듈의Counter
클래스 - 문자열이나, 리스트의 요소를 카운팅하여 많은 순으로 딕셔너리 형태로 리턴
from collections import Counter
list = ['kim', 'kim', 'park', 'choi', 'kim', 'kim', 'kim', 'choi', 'park', 'choi']
result = collections.Counter(list)
print(result) # Counter({'kim': 5, 'choi': 3, 'park': 2})
reduce
- 파이썬의
functools
내장 모듈의reduce()
함수는 여러 개의 데이터를 대상으로 주로 누적 집계를 내기 위해서 사용 reduce(집계 함수, 순회 가능한 데이터, 초기값)
lambda
- 이름이 없는 함수
- 장점: 코드의 간결함 메모리의 절약
lambda 매개변수 : 표현식
from functools import reduce
result = reduce(lambda x, y: x + y, [0, 1, 2, 3, 4])
print(result) # 10
한줄평: 잠깐 올라갔던 자존감 내려갔쥬?
Author And Source
이 문제에 관하여([프로그래머스/Python] 해시 - 위장), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@sugenius77/프로그래머스해시-위장저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)