https://programmers.co.kr/learn/courses/30/lessons/17681
import java.util.*;
class Solution {
public String[] solution(int n, int[] arr1, int[] arr2) {
String[] answer = new String[n];
String[] strArr1 = new String[n];
strArr1 = changeBinary(n, arr1);
String[] strArr2 = new String[n];
strArr2 = changeBinary(n, arr2);
for (int i=0;i<n;i++){
StringBuilder sb = new StringBuilder();
for (int j=0;j<n;j++){
if (strArr1[i].charAt(j) =='1' || strArr2[i].charAt(j) =='1')
sb.append("#");
else sb.append(" ");
}
answer[i] = sb.toString();
}
return answer;
}
public String[] changeBinary(int n, int[] arr1) {
String[] binaryStr = new String[n];
for (int i = 0; i < n; i++) {
String binary = Integer.toBinaryString(arr1[i]);
if(binary.length() < n) {
StringBuilder sb = new StringBuilder(binary);
while (sb.length() < n){
sb.insert(0, '0');
}
binaryStr[i] = sb.toString();
}
else binaryStr[i] = binary;
}
return binaryStr;
}
}
아직도 String, StringBuilder의 메서드에 대해 헷갈린다. 메서드들을 확실하게 알고 넘어가도록 하자! 또한 이번 문제를 풀며 Java에서 제공하는 10진수를 2진술 변환해주는 Integer의 method를 알게 되었다. 이것도 외우고 넘어가도록 하자!!
- String binary = Integer.toBinaryString(10진수);
위의 method를 사용하면 10진수를 2진수 String으로 쉽게 변경 가능하다.- StringBuilder, String의 문자열 길이는 length()메서드를 사용!
※ length()에는 둘 다 괄호가 붙는다!- StringBuilder에서 문자를 붙일 때는 insert와() append() 메서드가 있다.
- insert()메서드는 붙이는 위치를 지정할 수 있다.
insert(문자를 붙일 위치, 붙일 문자)- append()메서드는 무조건 문자열의 맨 뒤에 문자가 들어가게 된다.
insert(붙일 문자)