プログラマー(Level 1-25)秘密地図
13801 ワード
質問の概要:
ニオは秘密の地図を手に持って、プロドが普段私房のお金を隠している場所を教えた.しかし、この秘密地図はデジタル暗号化されており、位置を確認するために解読が必要です.幸いなことに、地図のパスワードを解読する方法が書かれたメモも見つかった.地図は、エッジ長nの正方形の配列形式であり、各セグメントは「空白」("")または「壁」("#")の2種類から構成されています. 全図は、2つの地図を重ね合わせることによって得ることができる.それぞれ「地図1」と「地図2」と言います.地図1または地図2のいずれかが壁である部分は、地図全体でも壁である.地図1も地図2も空白の部分であり、地図全体においても空白である. 「地図1」と「地図2」はそれぞれ整数配列で暗号化されている. 暗号化された配列は、地図の各横線において、壁部分を1に符号化し、空白部分を0に符号化したときのバイナリ数の配列である.
ニオがフロドの私房金を手に入れるために、秘密地図のパスワードを解読するのに役立つプログラムを作成しました. 実装コード:タイムアウト
Integer.toBinaryString(i);//にしんすう
Integer.toOctalString(i); //8進法
Integer.toHexString(i);//16進数関数しかし、このように解く過程には学ぶべきところがたくさんあります.
その他のフォルダコード
シード演算はAND:&、OR:|XOR:^NOT:~として使用できます.
ニオは秘密の地図を手に持って、プロドが普段私房のお金を隠している場所を教えた.しかし、この秘密地図はデジタル暗号化されており、位置を確認するために解読が必要です.幸いなことに、地図のパスワードを解読する方法が書かれたメモも見つかった.
![](https://s1.md5.ltd/image/ffdcbb9c3ce095d8c1dc55b89484fa3f.png)
ニオがフロドの私房金を手に入れるために、秘密地図のパスワードを解読するのに役立つプログラムを作成しました.
import java.util.*;
class Solution {
public String[] solution(int n, int[] arr1, int[] arr2) {
String[] answer = new String[n];
String a1="",a2="";
for(int i=0;i<n;i++){
a1=String.format("%0"+n+"d",Integer.parseInt(Integer.toBinaryString(arr1[i]).toString()));
a2=String.format("%0"+n+"d",Integer.parseInt(Integer.toBinaryString(arr2[i]).toString()));
for(int j=0;j<n;j++){
if(a1.charAt(j)=='1'||a2.charAt(j)=='1'){
if(j==0){
answer[i]="#";
}else{
answer[i]=answer[i]+"#";
}
}else{
if(j==0){
answer[i]=" ";
}else{
answer[i]=answer[i]+" ";
}
}
}
}
return answer;
}
}
String.format実装を使用すると、2つのタイムアウトが発生します.そしてcharatで比較して、やる必要はなく、replaceでいいです.Integer.toBinaryString(i);//にしんすう
Integer.toOctalString(i); //8進法
Integer.toHexString(i);//16進数関数しかし、このように解く過程には学ぶべきところがたくさんあります.
その他のフォルダコード
class Solution {
public String[] solution(int n, int[] arr1, int[] arr2) {
String[] answer = new String[n];
for (int i = 0; i < n; i++) {
answer[i] = Integer.toBinaryString(arr1[i] | arr2[i]);
answer[i] = answer[i].replace('0', ' ');
answer[i] = answer[i].replace('1', '#');
while (answer[i].length() < n) {
answer[i] = ' ' + answer[i];
}
}
return answer;
}
}
TOBinaryStringがビット演算できるかどうか初めて知りました.本当に簡単な質問ですシード演算はAND:&、OR:|XOR:^NOT:~として使用できます.
Reference
この問題について(プログラマー(Level 1-25)秘密地図), 我々は、より多くの情報をここで見つけました https://velog.io/@cse05091/프로그래머스Level1-25비밀지도テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol