[プログラマー]秘密の地図
10021 ワード
🤔 質問する
プログラマー-秘密の地図
2018 KAKAO BLIND RECRUITMENT
ニオは秘密の地図を手に持って、プロドが普段私房のお金を隠している場所を教えた.しかし、この秘密地図はデジタル暗号化されており、位置を確認するために解読が必要です.幸いなことに、地図のパスワードを解読する方法が書かれたメモも見つかった.
ニオがフロドの私房金を手に入れるために、秘密地図のパスワードを解読するのに役立つプログラムを作成しました.
¥2,000円制限
地図に入るエッジサイズnと2つの整数配列arr 1とarr 2を入力します.
💡 に近づく
まず,ファクタ
arr1, arr2
の各要素をバイナリ数に変換することを解決する.binaryArray
関数は、アレイ内の各要素をバイナリ数に変換する関数である.十進法9, 20
をバイナリ数に変換すると1001, 10100
になります.2進数に変換された要素の長さが一致しません.従って、変換後の元素長がn
未満であれば、その元素の前に0
を不足した長さで繰り返し入れる.2進数に変換された
binaryArr1, binaryArr2
地図が完成しました.今2枚の地図を合わせて秘密の地図を完成すればいいです.地図をマージするときは、次のルールが適用されます.0 + 0 은 빈 문자열(' ')로 변환
0 + 1 은 샵('#')으로 변환
1 + 0 은 샵('#')으로 변환
1 + 1 은 샵('#')으로 변환
適用ルールのコードはparseInt(v2, 10) + parseInt(binaryArr2[i][j], 10) ? '#' : ' '
です.問題を解決し,他の人のコードを見て,ビット演算子では
비트 OR
(|
)を用いて解決した.最初は文法が分からないので、検索して検索すれば分かります.演算子をビットに変換すると、対応する各ビットは1であり、1が1の場合、1の演算子が返されます.下記の参考になるリンクが掛かっています.アルゴリズムの解決方法は本当に多様だと思います.一人でいろいろな方法を試しても、既知の文法や聞いたことのある文法だけを少し修正したり、コードの長さを短くしたりするのはよくありますが、ビット演算子のような文法を全く知らないと、新しい試みもできません.問題を解決したら、他人のコードを見るだけで多くのことを学ぶことができます.
🧑🏻💻 コード#コード#
function binaryArray(n, arr) {
return arr.map(v => {
const binary = v.toString(2);
return binary.length < n
? `${'0'.repeat(n - binary.length)}${binary}`
: binary;
});
}
function solution(n, arr1, arr2) {
const binaryArr1 = binaryArray(n, arr1);
const binaryArr2 = binaryArray(n, arr2);
const secretMap = binaryArr1.map((v1, i) => [...v1]
.map((v2, j) => parseInt(v2, 10) + parseInt(binaryArr2[i][j], 10) ? '#' : ' ')
.join(''));
return secretMap;
}
solution(5, [9, 20, 28, 18, 11], [30, 1, 21, 17, 28]);
// ["#####","# # #", "### #", "# ##", "#####"]
📝 リファレンス
[画像ソース]KaKao Tech-Kaka新人公募第1回コードテスト問題解説
MDN - Number.prototype.toString()
MDNビット演算子
Reference
この問題について([プログラマー]秘密の地図), 我々は、より多くの情報をここで見つけました https://velog.io/@keemtj/프로그래머스-비밀지도テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol