[プログラマー]偽装
5932 ワード
偽装プログラマー<Hash>(https://programmers.co.kr/learn/courses/30/lessons/42578 )
問題の説明
スパイたちは毎日違う服を着て自分を偽装している.
例えば、スパイの服が以下のように、今日スパイが丸い眼鏡、長いコート、青いTシャツを着ている場合は、翌日はジーンズを追加したり、黒いサングラスをかけたりして、丸い眼鏡ではありません.
タイプ名
黒墨鏡
上着
ズボン
コート着
スパイが持っている服に二次元配列の服が与えられた場合、異なる服の組み合わせの数を返すために解関数を作成します.
せいげんじょうけん
I/O例
clothes
[["yellowhat", "headgear"], ["bluesunglasses", "eyewear"], ["green_turban", "headgear"]]
[["crowmask", "face"], ["bluesunglasses", "face"], ["smoky_makeup", "face"]]
I/O例説明
例1
headgearに対応した服装は黄色hat、緑turban、眼鏡に対応した服装は青サングラスで、以下の5つの組み合わせが可能です.
例2
Faceに対応した服装はcrow mask,blue sunglasse,mocky paskであり,以下の3つの組み合わせが可能である.
通過コード(Python)
from collections import Counter
def solution(clothes):
c = Counter([a for _, a in clothes])
cnt = 1
for key in c:
cnt *= (c[key] + 1)
return cnt - 1
私は後でreduce
を知ったので、それを使ってみました.これから勉強します.reduce(집계 함수, 순회 가능한 데이터[, 초기값])
from collections import Counter
from functools import reduce
def solution(clothes):
c = Counter([a for _, a in clothes])
answer = reduce(lambda x, y: x*(y+1), c.values(),1)-1
return answer
プログラマーは他人のコードを見る楽しみがある.同じモジュールのような関数を使っていると、そこまで減ってしまう.
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
Reference
この問題について([プログラマー]偽装), 我々は、より多くの情報をここで見つけました https://velog.io/@_koiil/프로그래머스-위장テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol