プログラマコードテスト高得点kit hash偽装
質問の表示 👈 クリック!
次の服があるとします.
髪:[サングラス、ウィッグ]、上着:[黒い服、青い服、白い服]、下衣:[ジーンズ、半ズボン、スカート]
頭:総数+何もしない場合=2+1=3
トップス:総数+何もしない場合=3+1=4
下衣:総数+何もしない場合=3+1=4
総てのケース数=3×4×4と思われがちですが、少なくとも1枚は着なければならないので、着ない場合は外しましょう.
合計数=3 X 4 X 4-1=48-1=47種
💡 に答える
解✔方法
次の服があるとします.
髪:[サングラス、ウィッグ]、上着:[黒い服、青い服、白い服]、下衣:[ジーンズ、半ズボン、スカート]
頭:総数+何もしない場合=2+1=3
トップス:総数+何もしない場合=3+1=4
下衣:総数+何もしない場合=3+1=4
総てのケース数=3×4×4と思われがちですが、少なくとも1枚は着なければならないので、着ない場合は外しましょう.
合計数=3 X 4 X 4-1=48-1=47種
インプリメンテーションコード👇
def solution(clothes):
#part_n_dict = {부위 : 옷 개수 + 1, ....}
#1을 더하는 이유는 해당 부위의 옷을 안입는 경우를 포함하기 위함
part_n_dict = dict()
for cl, part in clothes:
part_n_dict[part] = part_n_dict.get(part, 1) + 1
answer = 1
for n in part_n_dict.values():
answer *= n
#최소 한 개의 의상은 입어야하기 때문에 전체 케이스 중 모든 옷을 안입는 경우를 빼줌
return answer-1
モジュールを使用して簡単に実装されるコード👇
from collections import Counter
from functools import reduce
def solution(clothes):
clothes_dic = Counter([part for cl, part in clothes])
answer = reduce(lambda acc,cur: acc*(cur + 1), clothes_dic.values(), 1) - 1
return answer
📝 最初に思いついた方法はitertoolsこれは,組合せモジュールを用いてすべての状況の数を計算する方法である.この方法はテスト1で失敗した(タイムアウト).後で問題を解く時、もっと簡単な方法があるかどうかをもう一度チェックします.😠Reference
この問題について(プログラマコードテスト高得点kit hash偽装), 我々は、より多くの情報をここで見つけました https://velog.io/@himinhee/프로그래머스-코딩테스트-고득점-Kit해시위장テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol