-
[🤷♀️ 프로그래머스 Python] 위장Algorithm/1일 1코테 2020. 10. 23. 22:23반응형
프로그래머스 연습문제 2단계
<위장>
- 해시 & python3
문제 및 문제설명
programmers.co.kr/learn/courses/30/lessons/42578
내가 시도한 답
해시로 풀어야되는 문제라서 해시테이블을 만들어서 진행했다.
#1차 시도
# 1차 시도 def solution(clothes): hash_table = {} answer = 0 for (v , k) in clothes: if k in hash_table: hash_table[k] += 1 answer += 1 else: hash_table[k] = 1 answer += 1 num = 1 if len(hash_table.values()) == 1: return answer else: for i in hash_table.values(): num = num * i return answer+num
#2차 시도
# 2차 시도 - 통과 def solution(clothes): hash_table = {} #저장할 hash_table 생성 for (v , k) in clothes: # clothes에서 쌍을 꺼내 if k in hash_table: # 카테고리를 key로 삼아 저장 hash_table[k] += 1 else: hash_table[k] = 1 # 위의 식을 수행하고 나면 각 카테고리별 옷의 갯수가 저장된다 # 경우의 수를 활용한다 answer = 1 for i in hash_table.values(): # 각 카테고리의 옷의 갯수를 answer에 곱하되 해당 카테고리를 착용하지 않는다는 조건이 # 필요하기 때문에 1을 더해준다. answer *= (i + 1) return answer-1 # 아무 옷도 안입는다는 조건을 넣기 위해 1을 뺀다
다른사람 풀이 #1
import collections from functools import reduce def solution(c): return reduce(lambda x,y:x*y,[a+1 for a in collections.Counter([x[1] for x in c]).values()])-1
다른사람 풀이 #2
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
수학 공부 제대로 안한게 이렇게 뒤통수 칠 줄은 몰랐다😭
reduce 함수?
reduce(함수, 순서형 자료)
from functools import reduce reduce(lambda x, y: x + y, [0, 1, 2, 3, 4]) # 10
반응형'Algorithm > 1일 1코테' 카테고리의 다른 글
[💕 프로그래머스 Python] 프린터 (0) 2020.10.25 [💕 프로그래머스 Python] 주식가격 (0) 2020.10.24 [💕 프로그래머스 Python] 전화번호 목록 (0) 2020.10.21 [💕 프로그래머스 Python] JadenCase 문자열 만들기 (0) 2020.10.20 [💕 프로그래머스 Python] 시저암호 (0) 2020.10.19