-
[Programmers]프로그래머스 위장(Python)/HashingProblem Solving/Programmers 2021. 9. 1. 18:44
https://programmers.co.kr/learn/courses/30/lessons/42578
수학스러웠던 해싱 문제
입력에 대해 의상별로 분류하고, 해당 분류들로 나올 수 있는 조합의 개수를 구하는 문제였는데
# 틀린 풀이 from itertools import combinations def solution(clothes): answer = len(clothes) d=dict() for c in clothes: if d.get(c[1])==None: d[c[1]]=1 else: d[c[1]]+=1 keys = list(d.keys()) for i in range(2, len(keys)+1): comb = list(combinations(keys, i)) for c in comb: sum=1 for key, value in d.items(): if key not in c: continue sum*=value answer+=sum return answer
대다수의 1번 테케 시간초과인 코드는 위처럼 combination으로 의상 분류를 선택한 뒤 answer를 구했을 것이다
하지만 질문 게시판을 보고 안 입는 경우를 선택하면 수학 공식 한줄로도 답을 구할 수 있었다
마지막에 전부 다 안입는 경우를 하나 빼주는 것 까지 ... 놓치고 있는게 많앗다
# 정답 풀이 from itertools import combinations def solution(clothes): answer = 1 d=dict() for c in clothes: if d.get(c[1])==None: d[c[1]]=1 else: d[c[1]]+=1 for val in d.values(): answer*=(val+1) return answer-1
그래서 코드를 이렇게 바꿔주고 시간초과 이슈 없이 해결했다
'Problem Solving > Programmers' 카테고리의 다른 글
[Programmers]다단계 칫솔 판매(Python)/Tree (430) 2021.09.12 [Programmers]2019 카카오 개발자 겨울 인턴십: 불량 사용자(Python)/Backtracking (423) 2021.09.07 [Programmers]완주하지 못한 선수(Python)/Hashing (0) 2021.08.31 [Programmers] 2021 카카오 채용연계형 인턴십: 표 편집(Python)/Hashing (0) 2021.07.18 [Programmers]2021 카카오 채용연계형 인턴십: 거리두기 확인하기(Python)/BFS (0) 2021.07.13