プログラマー[秘密の地図]


💬 問題の概要

  • 地図は、1辺の長さnの正方形の配列形式であり、各セルは、「空白」(")または「壁」("#")の2種類で構成されています.
  • 地図全体を2枚の地図で重ねることができる.それぞれ「地図1」と「地図2」と言います.地図1または地図2のいずれかが壁である部分は、地図全体でも壁である.地図1と地図2の空白部分は、地図全体においても空白である.
  • 「地図1」と「地図2」はそれぞれ整数シーケンスで暗号化されている.
  • 暗号化された配列は、地図の横線ごとに壁部分を1に符号化し、空白部分を0に符号化したときに得られるバイナリ値の配列である.

  • 💬 解答方法

    function solution(n, arr1, arr2) {
        var answer = [];
        let i, j;
        
        for(i = 0; i < n; i++) {
            answer[i] = arr1[i] | arr2[i];
            answer[i] = answer[i].toString(2);
            if(answer[i].length < n)
                answer[i] = answer[i].padStart(n, "0");
            for(j = 0; j < n; j++) {
                answer[i] = answer[i].replace("0", " ");
                answer[i] = answer[i].replace("1", "#");
            }        
        }
        
        return answer;
    }
  • エラー・アクセス
  • arr 1,arr 2をバイナリ数に変換してビット演算子を使用しよう!!
  • bit演算子は|,それは|!
  • 了解
  • ビット演算子を使用する場合は、十進法で
  • を使用します.
  • ビット演算子|です.|論理演算子です!
  • 配列内の文字列(ex.["01010", "11111", "10110"])と同じ文字列であれば、2 D配列のような文字列にアクセスできます!
  • 問題の処理方法が正しくなく、1時間半も無駄にした.ㅠㅠしかしやはりとても大きい啓発を得て、ほほほ.ふふ、これからもっと問題の方法とコードの順序をよく考えるべきだ...

    🎁 問題のソース

  • https://programmers.co.kr/learn/courses/30/lessons/17681