본문 바로가기
Algorithm/Programmers

[프로그래머스/JAVA] LV1 - 비밀지도 / JAVA

by 김비누! 2022. 4. 19.

프로그래머스 LV1 - 비밀지도 (17681)

문제 요약

비밀지도를 해독하는 문제이다. 지도는 벽과 공백으로 이루어져있는데 전체 지도는 두 지도를 합쳐서 구할 수 있다.
두 지도 중 하나라도 벽인 부분은 전체 지도에서 벽이며 둘 다 공백이어야 전체 지도에서 공백이다.
두 지도는 정수 배열로 암호화되어있으며 10진수를 2진수로 바꾸면 1이 벽, 0이 공백 부분이다.

코드

2진수 &(비트 AND)연산하면 맨 앞자리에 0이 나오는 경우 생략되므로 생략된 만큼 공백을 추가해주어야 한다.

2진수 &(비트 AND)연산 -> #, 공백으로 replace -> 앞자리 공백 추가 순서이다.

class Solution {
    public String[] solution(int n, int[] arr1, int[] arr2) {
            String[] answer = new String[n];

            for(var i = 0; i < n; i++){
                String bi = Integer.toBinaryString(arr1[i] | arr2[i]); 

                String row = bi.replace("1", "#");
                row = row.replace("0", " ");

                row = " ".repeat(n - row.length()) + row;
                answer[i] = row;
            }

        return answer;
    }
}

 

StringBuilder를 사용하면 속도가 많이 향상된다!

댓글