문제 요약
비밀지도를 해독하는 문제이다. 지도는 벽과 공백으로 이루어져있는데 전체 지도는 두 지도를 합쳐서 구할 수 있다.
두 지도 중 하나라도 벽인 부분은 전체 지도에서 벽이며 둘 다 공백이어야 전체 지도에서 공백이다.
두 지도는 정수 배열로 암호화되어있으며 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를 사용하면 속도가 많이 향상된다!
'Algorithm > Programmers' 카테고리의 다른 글
[프로그래머스/JAVA] LV1 - 로또의 최고 순위와 최저 순위 / JAVA (0) | 2022.04.01 |
---|---|
[프로그래머스/JAVA] LV1 - 소수 만들기 / JAVA (0) | 2022.03.31 |
[프로그래머스/JAVA] LV1 - 음양 더하기 (0) | 2022.03.11 |
댓글