https://programmers.co.kr/learn/courses/30/lessons/17681

 

코딩테스트 연습 - [1차] 비밀지도

비밀지도 네오는 평소 프로도가 비상금을 숨겨놓는 장소를 알려줄 비밀지도를 손에 넣었다. 그런데 이 비밀지도는 숫자로 암호화되어 있어 위치를 확인하기 위해서는 암호를 해독해야 한다. 다

programmers.co.kr

class Solution {
    public String[] solution(int n, int[] arr1, int[] arr2) {
        String[] answer = new String[n];
        
        for (int i = 0; i < n; i++) {
        	
        	StringBuilder sb = new StringBuilder();
        	
        	Long num1 = 0L;
        	Long num2 = 0L;	
			
        	String arr1Binary = Integer.toBinaryString(arr1[i]);    // 1번 지도 이진수 변환
			num1  = Long.parseLong(arr1Binary);
			
			String arr2Binary = Integer.toBinaryString(arr2[i]);    // 2번 지도 이진수 변환
			num2  = Long.parseLong(arr2Binary);
			
			String sum = String.valueOf(num1 + num2);   // 1번 지도 + 2번 지도
			
			if(sum.length() < n) {  // 합친 결과의 길이가 n보다 작으면, 작은만큼 앞에 0을 붙임
				StringBuilder pad = new StringBuilder();
				for (int j = 0; j < n - sum.length(); j++) {
					pad.append("0");
				}
				sum = pad.toString() + sum;
			}

			for (int j = 0; j < sum.length(); j++) {
				if(sum.charAt(j) == '0') {  // 0 이면 공백
					sb.append(" ");
				}else { // 0 아니면 벽#
					sb.append("#");
				}
			}			
			answer[i] = sb.toString();  // 결과 기록
		}
        return answer;
    }
}