class Solution {
public String[] solution(int n, int[] arr1, int[] arr2) {
String[] answer = new String[n];
String temp;
for(int i=0; i<n; i++){
temp = String.format("%16s",Integer.toBinaryString(arr1[i] | arr2[i])); // 최대길이가 16이므로
temp=temp.substring(temp.length() - n);
temp=temp.replaceAll("1","#");
temp=temp.replaceAll("0"," ");
answer[i] = temp;
}
return answer;
}
}
String.format("",targetStr); -> %16s 16글자로 앞에 채워서
String.replaceAll("","") -> 새로운 문자열 반환하므로 갱신을 위해서는 재 할당 해준다.
class Solution {
public String[] solution(int n, int[] arr1, int[] arr2) {
String[] answer = new String[n];
StringBuilder sb = new StringBuilder();
for(int i=0; i<n; i++){
int curInt = arr1[i] | arr2[i];
String cur = toBinaryString(curInt);
// 부족한 길이는 앞에서 0으로 채워줌
for(int j=0; j<n-cur.length(); j++){
sb.append("0");
}
sb.append(cur);
// String.replaceAll로 원하는 문자 치환하기
String tmp = sb.toString();
tmp = tmp.replaceAll("1","#");
tmp = tmp.replaceAll("0"," ");
answer[i] = tmp;
// StringBuilder 초기화
sb.setLength(0);
System.out.println(cur);
}
return answer;
}
public String toBinaryString(int data){
StringBuilder sb = new StringBuilder();
while(data>0){
sb.append(data%2);
data/=2;
}
sb.reverse();
return sb.toString();
}
}
StringBuilder.reverse()
class Solution {
public String[] solution(int n, int[] arr1, int[] arr2) {
String[] answer = new String[n];
for(int i=0; i<n; i++){
int dat = arr1[i] | arr2[i];
answer[i] = toBinStr(dat,n);
}
return answer;
}
public String toBinStr(int data,int size){
// 이진문자로 변환
StringBuilder sb = new StringBuilder();
while(data>=2){
sb.append(data%2);
data/=2;
}
sb.append(data%2);
// 6칸 미만이면 채워주자
int diff = size - sb.length();
while(diff>0){
sb.append('0');
diff-=1;
}
return sb.reverse().toString().replace("1","#").replace("0"," ");
}
}