1. String[] 형태로 return 하지만, 좀 더 익숙한 List<String> 형으로 반환해보자 2. arr1, arr2 만큼 돌아야 하는데 주어진 n 값은 배열의 크기, 즉 한 줄의 최대 가로 사이즈를 말한다. 3. 바이너리 형식으로 바꾼다면 AND 연산자를 사용해야 + 형태로 더해지는 것이 아닌, 문제 요구사항처럼 출력 값이 나오도록 만들자 4. 만약 맨 앞이 0이라면 (5 글자면 00001 이 아닌, 1로 나온다고 생각한다.) 1 같은 경우 " #" 이 아닌 "#"으로 나오겠네
우선 해답은 아래같이 만들었다.
import java.util.*;
classSolution{
public List<String> solution(int n, int[] arr1, int[] arr2){
List<String> answer = new ArrayList<String>();
String temp = "";
for (int i=0; i<n; i++){
temp = Integer.toBinaryString(arr1[i]|arr2[i]);
if (temp.length() < n){
temp = String.format("%" + n + "s", temp);
}
temp = temp.replaceAll("1", "#");
temp = temp.replaceAll("0", " ");
answer.add(temp);
}
return answer;
}
}
왜 이렇게 만들었는지 한 줄 한 줄씩 설명을 하도록 해보겠다.
List<String> answer = new ArrayList<String>();
List<String> 같은 형태의 경우, add, get, ... 등등..
배열의 경우 크기를 한정지어서 사용해야 한다.
하지만, 한정적일 때보단 유동적으로 만들어야 할 때가 많았던 경험이 있었다.
그때 생각해낸 것이 String[] 인 배열 형보단, List<String> 형태로 String 값을 받아내지만, 유동적으로 사용하기 위해서 List<String>을 사용했다.
또한 결과적으로 나온 값을 answer.add(temp);
이 부분에서 temp에 나온 string 값을 answer List형에 넣어줌으로써 ( .add사용) 답을 반환시켰다.