public class SecretMap {
public String[] solution(int n, int[] arr1, int[] arr2) {
String[] answer = new String[n];
for (int i = 0; i < n; i++) {
answer[i] = Integer.toBinaryString(arr1[i] | arr2[i]);
answer[i] = String.format("%" + n + "s", answer[i]);
answer[i] = answer[i].replace("0", " ");
answer[i] = answer[i].replace("1", "#");
}
return answer;
}
public static void main(String[] args) {
SecretMap s = new SecretMap();
int arr1[] = { 9, 20, 28, 18, 11 };
int arr2[] = { 30, 1, 21, 17, 28 };
int arr3[] = { 46, 33, 33, 22, 31, 50 };
int arr4[] = { 27, 56, 19, 14, 14, 10 };
int arr5[] = { 0, 0, 0 };
int arr6[] = { 0, 7, 5 };
s.solution(5, arr1, arr2);
s.solution(6, arr3, arr4);
s.solution(3, arr5, arr6);
}
}
arr1[i] | arr2[i] : 비트연산 - 이 문제에서는 비트연산 활용이 중요함.
| : (or 비트연산) , & : (and 비트연산)
Integer.toBinaryString() : int형 정수를 2진수 String으로 변환.
String.format("%" + n + "s", [문자열]); : [문자열]을 n길이로 맞춰준다. ex) String.format("%7s","hello"); -> " hello"
answer[index] = answer[index].replace(oldChar, newChar); : answer 배열 원소에 포함된 oldChar를 newChar로 모두 치환한다.