- 비트연산으로 문제를 해결했다.
- 다른 사람의 풀이를 보면,
Integer.toBinaryString
메서드를 통해서 이진수로 변환해서 숫자를 기호로 변경시키는 방법으로 풀이했다.
- 풀이 하면서 숫자를 이진법으로 변환했을 때, 지도의 칸 수의 범위보다 작은 이진수에 대해서 고민하는데 시간이 걸렸다.
- 나는 반복횟수를 숫자가 0이되면 종료시키는 식으로 하지않고 반복횟수를 정해주는 방법으로 풀이했고, 다른 사람의 풀이에는 String.format으로 문자열이 차지하는 길이를 증가시켰다.
class Solution {
public String[] solution(int n, int[] arr1, int[] arr2) {
String[] answer = new String[n];
for (int i = 0; i < n ; i++) {
answer[i] = drawMap(n, orNumber(arr1[i], arr2[i]));
}
return answer;
}
public int orNumber(int num1, int num2) {
return num1 | num2;
}
public String drawMap(int count, int number) {
StringBuilder stringBuilder = new StringBuilder();
for (int i = 0; i < count; i++) {
if((number & 1) == 1) {
stringBuilder.append("#");
} else {
stringBuilder.append(" ");
}
number = (number >> 1);
}
return stringBuilder.reverse().toString();
}
}