레벨 : 1
네오는 평소 프로도가 비상금을 숨겨놓는 장소를 알려줄 비밀지도를 손에 넣었다. 그런데 이 비밀지도는 숫자로 암호화되어 있어 위치를 확인하기 위해서는 암호를 해독해야 한다. 다행히 지도 암호를 해독할 방법을 적어놓은 메모도 함께 발견했다.
네오가 프로도의 비상금을 손에 넣을 수 있도록, 비밀지도의 암호를 해독하는 작업을 도와줄 프로그램을 작성하라.
입력으로 지도의 한 변 크기 n 과 2개의 정수 배열 arr1, arr2가 들어온다.
원래의 비밀지도를 해독하여 '#', 공백으로 구성된 문자열 배열로 출력하라.
package programmers;
import java.util.Arrays;
public class 비밀지도 {
public static void main(String[] args) {
// result = ["#####","# # #", "### #", "# ##", "#####"]
int n = 6;
int[] arr1 = {46, 33, 33 ,22, 31, 50};
int[] arr2 = {27 ,56, 19, 14, 14, 10};
solution(n, arr1, arr2);
}
/**
* @date 2022-11-04
*
* Integer.toBinaryString(i) : 10진수를 2진수(String)으로 변경
*
* @param n 입력으로 지도의 한 변 크기
* @param arr1 arr2 2개의 정수 배열
* @return
*/
public static String[] solution(int n, int[] arr1, int[] arr2) {
String[] answer = new String[n];
for(int i=0; i<n; i++) {
int number = arr1[i] | arr2[i];
String map = Integer.toBinaryString(number);
if(map.length() < n) {
StringBuilder sb = new StringBuilder();
while(sb.length() < n-map.length()) {
sb.append("0");
}
map = sb.append(map).toString();
}
map = map.replace("1", "#").replace("0", " ");
answer[i] = map;
}
return answer;
}
}
자릿수에 대한 예외처리를 나중에 추가(처음부터 생각을 더 잘 해보자!)