암호화 된 정수 배열을 이진수로 바꿔서 덧셈을 하는 문제
처음에는 단순히 2진수로 바꿔서 자릿수 돌아가면서 덧셈만 해주려고 했는데 문제가 발생했다
예를 들어,
arr1[0] = 9, arr2[0] = 30 일 때,
각각 2진수로 변환하면 1001, 11110으로 자릿수가 맞지 않는다.
따라서, 자릿수를 맞춘 후 연산을 진행해야 하는 것!
public class Main
public String[] formatChk( String tmpStr, int len) {
//길이가 같지 않다면, 다섯자리로 만들어줘야함
if(len != tmpStr.length()) {
String zeroStr = "";
//모자란 자릿수만큼 0을 채워줌
for (int i = 0; i < len - tmpStr.length(); i++) {
zeroStr += "0";
}
//0을 앞으로 더해야 함 ex)101 -> 00101
tmpStr = zeroStr + tmpStr;
}
return tmpStr.split("");
}
public String[] solution(int n, int[] arr1, int[] arr2) {
String[] answer = new String[n];
String[] tmpArr1 = new String[n];
String[] tmpArr2 = new String[n];
for (int i = 0; i < n; i++) {
//2진수로 변환
String arrStr1 = Integer.toBinaryString(arr1[i]);
String arrStr2 = Integer.toBinaryString(arr2[i]);
//2진수 변환 시 자릿값 안맞는 부분을 위한 메소드
tmpArr1 = formatChk(arrStr1, n);
tmpArr2 = formatChk(arrStr2, n);
String hint = "";
for (int j = 0; j < n; j++) {
//둘 중 하나라도 1이라면 #, 아니면 공백
if(tmpArr1[j].equals("1")|| tmpArr2[j].equals("1")) hint += "#";
else hint += " ";
}
answer[i] = hint;
}
return answer;
}
}
성공!!