[ 2018 KAKAO BLIND RECRUITMENT - [1차] 비밀지도 ]
https://programmers.co.kr/learn/courses/30/lessons/17681
- 입력 받은 정수 배열을 이진수로 만들어 주는 함수를 만들어준다.
- 정수를 2로 나누면서 나머지를 맨 뒷자리 배열부터 채워주고, 부족하다면 0으로 채운다.
- for문을 돌려 map1과 map2가 둘 중 하나라도 1이면 새로운 map3는 "#"으로 채운다. 그렇지 않다면 공백으로 남겨둔다.
- 그렇게 만들어진 map3를 한 줄 한 줄 StringBuilder()에 담아 answer배열에 한 줄씩 추가해주고 리턴.
import java.util.Arrays;
class Solution {
public String[][] MakeBinary(int n, int[] arr) {
String[][] map = new String[n][n];
for(int i=0; i<n; i++) {
for(int j=n-1; j>=0; j--) {
map[i][j] = Integer.toString(arr[i] % 2);
arr[i] = arr[i] / 2;
}
if(map[i].length < n) {
for(int j=map[i].length; j<5; j++) {
map[i][j] = "0";
}
}
}
return map;
}
public String[] solution(int n, int[] arr1, int[] arr2) {
String[] answer = new String[n];
String[][] map1 = MakeBinary(n, arr1);
String[][] map2 = MakeBinary(n, arr2);
String[][] map3 = new String[n][n];
for(int i=0; i<n; i++) {
for(int j=0; j<n; j++) {
if((map1[i][j].equals("1") || map2[i][j].equals("1"))) {
map3[i][j] = "#";
}
else {
map3[i][j] = " ";
}
}
}
for(int i=0; i<n; i++) {
StringBuilder sb = new StringBuilder();
for(int j=0; j<n; j++) {
sb.append(map3[i][j]);
}
answer[i] = sb.toString();
}
return answer;
}
}
다른 알고리즘 풀어보다가 배운 String 클래스로 받던걸 StringBuilder로 받았더니 시간이 1초 정도 단축 됐다.