네오는 평소 프로도가 비상금을 숨겨놓는 장소를 알려줄 비밀지도를 손에 넣었다. 그런데 이 비밀지도는 숫자로 암호화되어 있어 위치를 확인하기 위해서는 암호를 해독해야 한다. 다행히 지도 암호를 해독할 방법을 적어놓은 메모도 함께 발견했다.
문제를 보고 사실 2차원의 배열로 구하라는건가? 싶었다. 아이디어가 떠오르질 않아서 문제 해설을 들어가봤다
ㅎㅎ 굉장히 쉬운문제란다.. 일단 비트연산을 통해서 둘다 1인 경우에만 1로 반환하는 or을 사용하면 될것 같다.
Integer.toBinaryString(a | b)
class Solution {
public String[] solution(int n, int[] arr1, int[] arr2) {
String[] answer = new String[n];
for(int i = 0 ; i < n; i++){
String secret = Integer.toBinaryString(arr1[i] | arr2[i]);
answer[i] = secret.replaceAll("1", "#").replaceAll("0", " ");
}
return answer;
}
}
뭐가 다르단거지 봤더니
자릿수가 모자란부분이 있다. 2진수로 변환된 수의 자릿수가 n보다 작은 경우에도 n의 갯수로 맞춰줘야한다
class Solution {
public String[] solution(int n, int[] arr1, int[] arr2) {
String[] answer = new String[n];
for(int i = 0 ; i < n; i++){
String secret = Integer.toBinaryString(arr1[i] | arr2[i]);
secret = "0".repeat(n - secret.length()) + secret;
answer[i] = secret.replaceAll("1", "#").replaceAll("0", " ");
}
return answer;
}
}