プログラマーlv 1解題:秘密地図(ココア)
9864 ワード
プログラマーlv 1解題:秘密地図(ココア)
秘密の地図
地図の長さ 全図は、2つの地図を重ね合わせることによって得ることができる.それぞれ「地図1」と「地図2」と言います.地図1または地図2のいずれかが壁である部分は、地図全体でも壁である.地図1も地図2も空白の部分であり、地図全体においても空白である. 「地図1」と「地図2」はそれぞれ整数配列で暗号化されている. 暗号化スキームは、地図の各横線上で
ニオがフロドの私房金を手に入れるために、秘密地図のパスワードを解読するのに役立つプログラムを作成しました.
マップの入力エッジサイズ
1 ≦
整数配列の各要素
n
もとの秘密の地図を解読する
パラメータ値n 5 arr 1[9,20,28,18,11]arr 2[30,1,21,17,28]出力[#######################################################]
パラメータ値n 6 arr 1[46,33,33,22,31,50]arr 2[27,56,19,14,14,10]出力[######################################################################################
問題の説明
秘密の地図
ニオは秘密の地図を手に持って、プロドが普段私房のお金を隠している場所を教えた.しかし、この秘密地図はデジタル暗号化されており、位置を確認するために解読が必要です.幸いなことに、地図のパスワードを解読する方法が書かれたメモも見つかった.
n
の正方形の配列で、各セルは「空白」(""")または「壁」("#")の2種類で構成されています.1
、空白部分を 0
に符号化したときに得られるバイナリ値の配列.ニオがフロドの私房金を手に入れるために、秘密地図のパスワードを解読するのに役立つプログラムを作成しました.
入力フォーマット
マップの入力エッジサイズ
n
と2つの整数配列 arr1
, arr2
が入ってきました.1 ≦
n
≦ 16arr1
, 長さarr2
n
の整数配列で与えられる.整数配列の各要素
x
を2進数に変換した場合の長さは n
より低いゼロ≤ x
≦ 2 - 1に満足する.n
出力フォーマット
もとの秘密の地図を解読する
'#'
, 공백
からなる文字列配列に出力される.I/O例
パラメータ値n 5 arr 1[9,20,28,18,11]arr 2[30,1,21,17,28]出力[#######################################################]
パラメータ値n 6 arr 1[46,33,33,22,31,50]arr 2[27,56,19,14,14,10]出力[######################################################################################
説明する
function solution(n, arr1, arr2) {
let result = [];
// n * n 크기의 이차원배열을 생성하고 공백으로 채워준다.
const secret_map = Array.from(Array(n), () => Array(n).fill(" "));
let map1 = [];
let map2 = [];
for (let i = 0; i < n; i++) {
// 10진수를 2진수로 바꾸어 준다.
let split = arr1[i].toString(2).split("");
// 길이를 맞춰주기 위해서 0을 앞에 추가
while (split.length < n) {
split.unshift("0");
}
let split2 = arr2[i].toString(2).split("");
while (split2.length < n) {
split2.unshift("0");
}
// map1에 푸시
map1.push(split);
map2.push(split2);
}
for (let i = 0; i < n; i++) {
for (let j = 0; j < n; j++) {
// mpa1에서 1이거나 map2에서 1이라면 벽이므로 #을 삽입해준다.
if (map1[i][j] === "1" || map2[i][j] === "1") {
secret_map[i][j] = "#";
}
}
// 배열을 이어준다.
// ex: ["#"," ","#","#","#"] => '# ###'
result.push(secret_map[i].join(""));
}
//최종 출력
return result;
}
Reference
この問題について(プログラマーlv 1解題:秘密地図(ココア)), 我々は、より多くの情報をここで見つけました https://velog.io/@younghoss/프로그래머스-lv1-문제-풀이-비밀지도-카카오テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol