[プログラマー]偽装
7042 ワード
1.問題の説明
スパイたちは毎日違う服を着て自分を偽装している.
例えば、スパイの服が以下のように、今日スパイが丸い眼鏡、長いコート、青いTシャツを着ている場合は、翌日はジーンズを追加したり、黒いサングラスをかけたりして、丸い眼鏡ではありません.
タイプ名
上着
ズボン
コート着
スパイが持っている服に二次元配列の服が与えられた場合、異なる服の組み合わせの数を返すために解関数を作成します.
2.制限
同名の衣装は存在しません.
3.解法
def solution(clothes):
a = {}
for i in range (0, len(clothes)):
if (clothes[i][1] not in a):
a[clothes[i][1]] = 1
else:
a[clothes[i][1]] = a[clothes[i][1]] + 1
このように服の個数を数えて、1つの服の種類-個数ペアのディックシャーナを作ろうと思ったのですが、1つの服しか着ていないのであれば、2つの服しか着ていないのであれば、このように数えて、最後に諦めて、グーグルで答えを検索しました.def solution(clothes):
a = {}
for i in range (0, len(clothes)):
if (clothes[i][1] not in a):
a[clothes[i][1]] = 1
else:
a[clothes[i][1]] = a[clothes[i][1]] + 1
answer = 0
for i in a.values():
if answer == 0:
answer += (i + 1)
else:
answer *= (i + 1)
answer -= 1
return answer
このパズルを初めて見たとき、どうしてそう思うのかと思った.答えを導く過程は想像以上に簡単だ.たとえば,{headger:2,[眼鏡]:1}です.すべての場合の数字を計算すると、(headgerを使用したときの数字(2)+使用しないときの数字(1)*(眼鏡を使用したときの数字(1)+使用しないときの数字(1)-(何も使用しないときの数字(1)=5)が簡潔に表示されます.このような方法でより簡潔に問題を解決するためには、もっと努力すべきだと思います.
4.問題リンク
https://programmers.co.kr/learn/courses/30/lessons/42578
Reference
この問題について([プログラマー]偽装), 我々は、より多くの情報をここで見つけました https://velog.io/@dongchyeon/프로그래머스-위장テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol