[アルゴリズム]🏁学習アルゴリズムシリーズの開始と覚悟/プログラマー-ハッシュ-偽装問題を解く


🏁学習アルゴリズムの出発点
大学卒業後、人生の転換点ともいえる「開発者」というキーワードに触れ、開発開始から1年が過ぎた.幸いにも地方にある創業会社に入社して、この1年間は本当にたくさんの勉強をもたらしてくれました.それでも、毎日Bellogや他の開発者を見ていると、本当にまだまだだと気づきました.「私は彼らと競争しなければなりませんが、もし私が退職したら、これらのできない人との競争の中で生き残ることができますか?」このような焦りを持っています.
今の会社は本当に満足していますが、私のキャリアのために、いつか会社を離れなければならないと思います.もちろん、会社も努力して会社を育成する意欲を持っていますが、自分が会社の附庸だと思わせたくないので、いつコードテストがあるか分かりませんが、今もより良いコードを書くためにアルゴリズムを勉強し始めました!
📚 心の準備
決心はいつも雄大であればあるほど諦めやすい!
水曜日の問題!あまり多くないから、一週間に3つの問題しかしないでしょう.🚀
問題を解いた後、暇を見つけて関連アルゴリズムの理論を整理します!
このように1年繰り返すと、私の不安や焦りも消えてしまいます.
プログラマ-ハッシュ-偽装
問題の説明
スパイたちは毎日違う服を着て自分を偽装している.
例えば、スパイの服が以下のように、今日スパイが丸い眼鏡、長いコート、青いTシャツを着ている場合は、翌日はジーンズを追加したり、黒いサングラスをかけたりして、丸い眼鏡ではありません.
スパイが持っている服に二次元配列の服が与えられた場合、異なる服の組み合わせの数を返すために解関数を作成します.
せいげんじょうけん
  • 服装の各行は「服装名、服装種類」からなる.
  • スパイが持っている服の数は1着以上30着以下.
  • のような名前の服は存在しません.
  • アパレルのすべての要素は文字列から構成されています.
  • すべての文字列の長さは、1または20未満の自然数であり、アルファベット小文字または「」のみから構成されます.
  • スパイは毎日少なくとも1枚の服を着ている.
  • 私の答え
    function solution(clothes) {
        var answer = 1;
        const table = {}
        clothes.map(arr => {
            // 키 유무에 따라 조건 분기         
            if (Object.keys(table).includes(arr[1])) {
                table[arr[1]].push(arr[0])
            } else {
                table[arr[1]] = new Array();
                table[arr[1]].push(arr[0])
            }
        })
        
        for (const key in table) {
            answer *= (table[key].length + 1)
        }
        return answer - 1;
    }
    状況の数式を用いて解答した.
    2個のA,2個のB,2個のC,3個のD
    (A+1)(B+1)(C+1)(D+1)の結果は全ての場合の数である.
    しかし、少なくとも1枚の服には制限があるので、すべての場合、何も着ない場合を除けばいいのです.
    まず、key-value形式でデータをソートするためにtableというオブジェクトを作成します.
    服装の各行は「服装の名称、服装の種類」で構成されているので、服装の名称は服装の種類に応じて並ぶ対象のキーで、それから服装の名称を相応の種類の配列の中に置く.
    次に、table[key]の長さ+1を繰り返し文で乗算する.
    ボールを返す時-1処理しました!
    状況の数式を知っていれば、思ったより解決しやすい問題だったのですが…数学の公式は久しぶりで、最初は迷っていました.ううう