[プログラマー]2018 KAKAO BLIND RECRUIMENT[第1ラウンド]秘密地図/Java
10892 ワード
📝 秘密の地図
✔¥質問説明
ニオは秘密の地図を手に持って、プロドが普段私房のお金を隠している場所を教えた.しかし、この秘密地図はデジタル暗号化されており、位置を確認するために解読が必要です.幸いなことに、地図のパスワードを解読する方法が書かれたメモも見つかった.
ニオがフロドの私房金を手に入れるために、秘密地図のパスワードを解読するのに役立つプログラムを作成しました.
勘定科目の入力フォーマット
地図に入るエッジサイズnと2つの整数配列arr 1とarr 2を入力します.
勘定科目の出力フォーマット
元の秘密地図を復号し、「#」と出力し、スペースからなる文字列の配列です.
勘定科目勘定科目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]出力[######################################################################################
👩🏻💻 に答える class Solution1 {
public String[] solution(int n, int[] arr1, int[] arr2) {
String[] answer = new String[n];
String code = "";
String mapCode = "";
for(int i = 0; i < n; i++) {
code = String.format("%0"+n+"d", Integer.parseInt(Integer.toBinaryString(arr1[i] | arr2[i])));
mapCode = code.replaceAll("1", "#");
mapCode = mapCode.replaceAll("0", " ");
answer[i] = mapCode;
}
return answer;
}
}
最初のコミット時に、テスト2とテスト6でランタイムエラーが発生しました.
地図の1辺の大きさは最大16で、intの範囲を超えた部分がLong運転に変わるとは思いもよらなかったのですが、成功しました!class Solution {
public String[] solution(int n, int[] arr1, int[] arr2) {
String[] answer = new String[n];
String code = "";
String mapCode = "";
for(int i = 0; i < n; i++) {
code = String.format("%0"+n+"d", Long.parseLong(Integer.toBinaryString(arr1[i] | arr2[i])));
mapCode = code.replaceAll("1", "#");
mapCode = mapCode.replaceAll("0", " ");
answer[i] = mapCode;
}
return answer;
}
}
📎 or演算子(|)
地図1または地図2のいずれかが壁である部分は、地図全体でも壁である.地図1と地図2の両方が空白である部分は、地図全体においても空白であるため、or演算を適用する
📎 Integer.toBinaryString(int i)
Integerクラスの関数を使用してバイナリに変換
📎 Integer.ParseInt(String s,int n進法)
最初のパラメータ値として数値文字列を受信し、変換する進数値を入力すると、対応する進数値に変換され、Integerに戻ります.
📎 Integer.parseInt(String s) / Long.parseLong(String s)
パラメータ値として数値文字列が受信されると、10進数のInteger型またはLong型の文字列が返されます.
📎 String.format( )
class Solution1 {
public String[] solution(int n, int[] arr1, int[] arr2) {
String[] answer = new String[n];
String code = "";
String mapCode = "";
for(int i = 0; i < n; i++) {
code = String.format("%0"+n+"d", Integer.parseInt(Integer.toBinaryString(arr1[i] | arr2[i])));
mapCode = code.replaceAll("1", "#");
mapCode = mapCode.replaceAll("0", " ");
answer[i] = mapCode;
}
return answer;
}
}
class Solution {
public String[] solution(int n, int[] arr1, int[] arr2) {
String[] answer = new String[n];
String code = "";
String mapCode = "";
for(int i = 0; i < n; i++) {
code = String.format("%0"+n+"d", Long.parseLong(Integer.toBinaryString(arr1[i] | arr2[i])));
mapCode = code.replaceAll("1", "#");
mapCode = mapCode.replaceAll("0", " ");
answer[i] = mapCode;
}
return answer;
}
}
ex 1)%10 d:文字列の左側にスペースを10で埋めます.
ex 2)%-10 d:文字列の右側に空白を埋め、長さは10
ex 3)%010 d:文字列の左側に0を入力して10の長さを作成
📎 replaceAll(String regex, String replacement)
Reference
この問題について([プログラマー]2018 KAKAO BLIND RECRUIMENT[第1ラウンド]秘密地図/Java), 我々は、より多くの情報をここで見つけました https://velog.io/@sennys2/프로그래머스2018-KAKAO-BLIND-RECRUITMENT.-1차-비밀지도Javaテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol