JavaScript
9179 ワード
問題の説明
秘密の地図
ニオは秘密の地図を手に持って、プロドが普段私房のお金を隠している場所を教えた.しかし、この秘密地図はデジタル暗号化されており、位置を確認するために解読が必要です.幸いなことに、地図のパスワードを解読する方法が書かれたメモも見つかった.
地図は、エッジ長nの正方形の配列形式で、各セルは「空白」(")または「壁」("#")の2種類で構成されています.
地図全体を2枚の地図で重ねることができます.それぞれ「地図1」と「地図2」と言います.地図1または地図2のいずれかが壁である部分は、地図全体でも壁である.地図1も地図2も空白の部分であり、地図全体においても空白である.
「地図1」と「地図2」はそれぞれ整数配列で暗号化されている.
暗号化された配列は,地図の横線ごとに壁部分を1に符号化し,空白部分を0に符号化したときのバイナリ値の配列である.
に答える
function solution(n, arr1, arr2) {
let answer = [];
// 2진수로 변환한 데이터를 담을 배열 선언
let binary1 = [];
let binary2 = [];
for(let i=0; i<n; i++){
binary1[i] = getBinary(arr1[i], n);
binary2[i] = getBinary(arr2[i], n);
}
for(let i=0; i<n; i++){
let s = '';
for(let j=0; j<n; j++){
if(binary1[i][j] === '#' || binary2[i][j] === '#'){ // 둘중에 하나라도 # 이면 #으로
s += '#';
}else {
s += ' ';
}
}
answer[i] = s;
}
return answer;
}
function getBinary(number, n){
let s = '';
// 각 자리의 2의 제곱 구하기 ( 가장 큰 자리수 부터 )
let square = 1;
for(let index=1; index<n; index++){
square *= 2;
}
// 계속 나눌 수 있는지 판단하여 해당 자릿수에 '#', ' '채우기
for(let i=0; i<n; i++){
if(number/square >=1){
s += '#';
number -= square;
}else{
s += ' ';
}
square /= 2;
}
return s;
}
注意:https://velog.io/@young18/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%8A%A4-%ED%82%A4%ED%8C%A8%EB%93%9C-%EB%88%84%EB%A5%B4%EA%B8%B0-by-Javascript-ygcdks5u
Reference
この問題について(JavaScript), 我々は、より多くの情報をここで見つけました https://velog.io/@pji3504/programmers-비밀지도-javascriptテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol